1*6777b538SAndroid Build Coastguard Worker // Copyright 2019 The Chromium Authors 2*6777b538SAndroid Build Coastguard Worker // Use of this source code is governed by a BSD-style license that can be 3*6777b538SAndroid Build Coastguard Worker // found in the LICENSE file. 4*6777b538SAndroid Build Coastguard Worker 5*6777b538SAndroid Build Coastguard Worker #ifndef IPC_TRACE_IPC_MESSAGE_H_ 6*6777b538SAndroid Build Coastguard Worker #define IPC_TRACE_IPC_MESSAGE_H_ 7*6777b538SAndroid Build Coastguard Worker 8*6777b538SAndroid Build Coastguard Worker #include <stdint.h> 9*6777b538SAndroid Build Coastguard Worker 10*6777b538SAndroid Build Coastguard Worker #include "base/component_export.h" 11*6777b538SAndroid Build Coastguard Worker #include "services/tracing/public/cpp/perfetto/macros.h" 12*6777b538SAndroid Build Coastguard Worker #include "third_party/perfetto/protos/perfetto/trace/track_event/chrome_legacy_ipc.pbzero.h" 13*6777b538SAndroid Build Coastguard Worker 14*6777b538SAndroid Build Coastguard Worker // When tracing is enabled, emits a trace event with the given category and 15*6777b538SAndroid Build Coastguard Worker // event name and typed arguments for the message's type (message class and line 16*6777b538SAndroid Build Coastguard Worker // number). 17*6777b538SAndroid Build Coastguard Worker #define TRACE_IPC_MESSAGE_SEND(category, name, msg) \ 18*6777b538SAndroid Build Coastguard Worker TRACE_EVENT(category, name, [msg](perfetto::EventContext ctx) { \ 19*6777b538SAndroid Build Coastguard Worker IPC::WriteIpcMessageIdAsProtozero(msg->type(), \ 20*6777b538SAndroid Build Coastguard Worker ctx.event()->set_chrome_legacy_ipc()); \ 21*6777b538SAndroid Build Coastguard Worker }); 22*6777b538SAndroid Build Coastguard Worker 23*6777b538SAndroid Build Coastguard Worker namespace IPC { 24*6777b538SAndroid Build Coastguard Worker 25*6777b538SAndroid Build Coastguard Worker // Converts |message_id| into its message class and line number parts and writes 26*6777b538SAndroid Build Coastguard Worker // them to the protozero message |ChromeLegacyIpc| for trace events. 27*6777b538SAndroid Build Coastguard Worker void COMPONENT_EXPORT(IPC) 28*6777b538SAndroid Build Coastguard Worker WriteIpcMessageIdAsProtozero(uint32_t message_id, 29*6777b538SAndroid Build Coastguard Worker perfetto::protos::pbzero::ChromeLegacyIpc*); 30*6777b538SAndroid Build Coastguard Worker 31*6777b538SAndroid Build Coastguard Worker } // namespace IPC 32*6777b538SAndroid Build Coastguard Worker 33*6777b538SAndroid Build Coastguard Worker #endif // IPC_TRACE_IPC_MESSAGE_H_ 34