|
|
|
@ -191,26 +191,26 @@
|
|
|
|
|
// - category and name strings must have application lifetime (statics or
|
|
|
|
|
// literals). They may not include " chars.
|
|
|
|
|
#define TRACE_EVENT_INSTANT0(category, name) \
|
|
|
|
|
INTERNAL_TRACE_EVENT_ADD(TRACE_EVENT_PHASE_INSTANT, \
|
|
|
|
|
category, name, TRACE_EVENT_FLAG_NONE)
|
|
|
|
|
INTERNAL_TRACE_EVENT_ADD(TRACE_EVENT_PHASE_INSTANT, category, name, \
|
|
|
|
|
TRACE_EVENT_FLAG_NONE)
|
|
|
|
|
#define TRACE_EVENT_INSTANT1(category, name, arg1_name, arg1_val) \
|
|
|
|
|
INTERNAL_TRACE_EVENT_ADD(TRACE_EVENT_PHASE_INSTANT, \
|
|
|
|
|
category, name, TRACE_EVENT_FLAG_NONE, arg1_name, arg1_val)
|
|
|
|
|
#define TRACE_EVENT_INSTANT2(category, name, arg1_name, arg1_val, \
|
|
|
|
|
arg2_name, arg2_val) \
|
|
|
|
|
INTERNAL_TRACE_EVENT_ADD(TRACE_EVENT_PHASE_INSTANT, \
|
|
|
|
|
category, name, TRACE_EVENT_FLAG_NONE, arg1_name, arg1_val, \
|
|
|
|
|
INTERNAL_TRACE_EVENT_ADD(TRACE_EVENT_PHASE_INSTANT, category, name, \
|
|
|
|
|
TRACE_EVENT_FLAG_NONE, arg1_name, arg1_val)
|
|
|
|
|
#define TRACE_EVENT_INSTANT2(category, name, arg1_name, arg1_val, arg2_name, \
|
|
|
|
|
arg2_val) \
|
|
|
|
|
INTERNAL_TRACE_EVENT_ADD(TRACE_EVENT_PHASE_INSTANT, category, name, \
|
|
|
|
|
TRACE_EVENT_FLAG_NONE, arg1_name, arg1_val, \
|
|
|
|
|
arg2_name, arg2_val)
|
|
|
|
|
#define TRACE_EVENT_COPY_INSTANT0(category, name) \
|
|
|
|
|
INTERNAL_TRACE_EVENT_ADD(TRACE_EVENT_PHASE_INSTANT, \
|
|
|
|
|
category, name, TRACE_EVENT_FLAG_COPY)
|
|
|
|
|
INTERNAL_TRACE_EVENT_ADD(TRACE_EVENT_PHASE_INSTANT, category, name, \
|
|
|
|
|
TRACE_EVENT_FLAG_COPY)
|
|
|
|
|
#define TRACE_EVENT_COPY_INSTANT1(category, name, arg1_name, arg1_val) \
|
|
|
|
|
INTERNAL_TRACE_EVENT_ADD(TRACE_EVENT_PHASE_INSTANT, \
|
|
|
|
|
category, name, TRACE_EVENT_FLAG_COPY, arg1_name, arg1_val)
|
|
|
|
|
INTERNAL_TRACE_EVENT_ADD(TRACE_EVENT_PHASE_INSTANT, category, name, \
|
|
|
|
|
TRACE_EVENT_FLAG_COPY, arg1_name, arg1_val)
|
|
|
|
|
#define TRACE_EVENT_COPY_INSTANT2(category, name, arg1_name, arg1_val, \
|
|
|
|
|
arg2_name, arg2_val) \
|
|
|
|
|
INTERNAL_TRACE_EVENT_ADD(TRACE_EVENT_PHASE_INSTANT, \
|
|
|
|
|
category, name, TRACE_EVENT_FLAG_COPY, arg1_name, arg1_val, \
|
|
|
|
|
INTERNAL_TRACE_EVENT_ADD(TRACE_EVENT_PHASE_INSTANT, category, name, \
|
|
|
|
|
TRACE_EVENT_FLAG_COPY, arg1_name, arg1_val, \
|
|
|
|
|
arg2_name, arg2_val)
|
|
|
|
|
|
|
|
|
|
// Records a single BEGIN event called "name" immediately, with 0, 1 or 2
|
|
|
|
@ -219,26 +219,26 @@
|
|
|
|
|
// - category and name strings must have application lifetime (statics or
|
|
|
|
|
// literals). They may not include " chars.
|
|
|
|
|
#define TRACE_EVENT_BEGIN0(category, name) \
|
|
|
|
|
INTERNAL_TRACE_EVENT_ADD(TRACE_EVENT_PHASE_BEGIN, \
|
|
|
|
|
category, name, TRACE_EVENT_FLAG_NONE)
|
|
|
|
|
INTERNAL_TRACE_EVENT_ADD(TRACE_EVENT_PHASE_BEGIN, category, name, \
|
|
|
|
|
TRACE_EVENT_FLAG_NONE)
|
|
|
|
|
#define TRACE_EVENT_BEGIN1(category, name, arg1_name, arg1_val) \
|
|
|
|
|
INTERNAL_TRACE_EVENT_ADD(TRACE_EVENT_PHASE_BEGIN, \
|
|
|
|
|
category, name, TRACE_EVENT_FLAG_NONE, arg1_name, arg1_val)
|
|
|
|
|
#define TRACE_EVENT_BEGIN2(category, name, arg1_name, arg1_val, \
|
|
|
|
|
arg2_name, arg2_val) \
|
|
|
|
|
INTERNAL_TRACE_EVENT_ADD(TRACE_EVENT_PHASE_BEGIN, \
|
|
|
|
|
category, name, TRACE_EVENT_FLAG_NONE, arg1_name, arg1_val, \
|
|
|
|
|
INTERNAL_TRACE_EVENT_ADD(TRACE_EVENT_PHASE_BEGIN, category, name, \
|
|
|
|
|
TRACE_EVENT_FLAG_NONE, arg1_name, arg1_val)
|
|
|
|
|
#define TRACE_EVENT_BEGIN2(category, name, arg1_name, arg1_val, arg2_name, \
|
|
|
|
|
arg2_val) \
|
|
|
|
|
INTERNAL_TRACE_EVENT_ADD(TRACE_EVENT_PHASE_BEGIN, category, name, \
|
|
|
|
|
TRACE_EVENT_FLAG_NONE, arg1_name, arg1_val, \
|
|
|
|
|
arg2_name, arg2_val)
|
|
|
|
|
#define TRACE_EVENT_COPY_BEGIN0(category, name) \
|
|
|
|
|
INTERNAL_TRACE_EVENT_ADD(TRACE_EVENT_PHASE_BEGIN, \
|
|
|
|
|
category, name, TRACE_EVENT_FLAG_COPY)
|
|
|
|
|
INTERNAL_TRACE_EVENT_ADD(TRACE_EVENT_PHASE_BEGIN, category, name, \
|
|
|
|
|
TRACE_EVENT_FLAG_COPY)
|
|
|
|
|
#define TRACE_EVENT_COPY_BEGIN1(category, name, arg1_name, arg1_val) \
|
|
|
|
|
INTERNAL_TRACE_EVENT_ADD(TRACE_EVENT_PHASE_BEGIN, \
|
|
|
|
|
category, name, TRACE_EVENT_FLAG_COPY, arg1_name, arg1_val)
|
|
|
|
|
INTERNAL_TRACE_EVENT_ADD(TRACE_EVENT_PHASE_BEGIN, category, name, \
|
|
|
|
|
TRACE_EVENT_FLAG_COPY, arg1_name, arg1_val)
|
|
|
|
|
#define TRACE_EVENT_COPY_BEGIN2(category, name, arg1_name, arg1_val, \
|
|
|
|
|
arg2_name, arg2_val) \
|
|
|
|
|
INTERNAL_TRACE_EVENT_ADD(TRACE_EVENT_PHASE_BEGIN, \
|
|
|
|
|
category, name, TRACE_EVENT_FLAG_COPY, arg1_name, arg1_val, \
|
|
|
|
|
INTERNAL_TRACE_EVENT_ADD(TRACE_EVENT_PHASE_BEGIN, category, name, \
|
|
|
|
|
TRACE_EVENT_FLAG_COPY, arg1_name, arg1_val, \
|
|
|
|
|
arg2_name, arg2_val)
|
|
|
|
|
|
|
|
|
|
// Records a single END event for "name" immediately. If the category
|
|
|
|
@ -246,26 +246,26 @@
|
|
|
|
|
// - category and name strings must have application lifetime (statics or
|
|
|
|
|
// literals). They may not include " chars.
|
|
|
|
|
#define TRACE_EVENT_END0(category, name) \
|
|
|
|
|
INTERNAL_TRACE_EVENT_ADD(TRACE_EVENT_PHASE_END, \
|
|
|
|
|
category, name, TRACE_EVENT_FLAG_NONE)
|
|
|
|
|
INTERNAL_TRACE_EVENT_ADD(TRACE_EVENT_PHASE_END, category, name, \
|
|
|
|
|
TRACE_EVENT_FLAG_NONE)
|
|
|
|
|
#define TRACE_EVENT_END1(category, name, arg1_name, arg1_val) \
|
|
|
|
|
INTERNAL_TRACE_EVENT_ADD(TRACE_EVENT_PHASE_END, \
|
|
|
|
|
category, name, TRACE_EVENT_FLAG_NONE, arg1_name, arg1_val)
|
|
|
|
|
#define TRACE_EVENT_END2(category, name, arg1_name, arg1_val, \
|
|
|
|
|
arg2_name, arg2_val) \
|
|
|
|
|
INTERNAL_TRACE_EVENT_ADD(TRACE_EVENT_PHASE_END, \
|
|
|
|
|
category, name, TRACE_EVENT_FLAG_NONE, arg1_name, arg1_val, \
|
|
|
|
|
INTERNAL_TRACE_EVENT_ADD(TRACE_EVENT_PHASE_END, category, name, \
|
|
|
|
|
TRACE_EVENT_FLAG_NONE, arg1_name, arg1_val)
|
|
|
|
|
#define TRACE_EVENT_END2(category, name, arg1_name, arg1_val, arg2_name, \
|
|
|
|
|
arg2_val) \
|
|
|
|
|
INTERNAL_TRACE_EVENT_ADD(TRACE_EVENT_PHASE_END, category, name, \
|
|
|
|
|
TRACE_EVENT_FLAG_NONE, arg1_name, arg1_val, \
|
|
|
|
|
arg2_name, arg2_val)
|
|
|
|
|
#define TRACE_EVENT_COPY_END0(category, name) \
|
|
|
|
|
INTERNAL_TRACE_EVENT_ADD(TRACE_EVENT_PHASE_END, \
|
|
|
|
|
category, name, TRACE_EVENT_FLAG_COPY)
|
|
|
|
|
INTERNAL_TRACE_EVENT_ADD(TRACE_EVENT_PHASE_END, category, name, \
|
|
|
|
|
TRACE_EVENT_FLAG_COPY)
|
|
|
|
|
#define TRACE_EVENT_COPY_END1(category, name, arg1_name, arg1_val) \
|
|
|
|
|
INTERNAL_TRACE_EVENT_ADD(TRACE_EVENT_PHASE_END, \
|
|
|
|
|
category, name, TRACE_EVENT_FLAG_COPY, arg1_name, arg1_val)
|
|
|
|
|
#define TRACE_EVENT_COPY_END2(category, name, arg1_name, arg1_val, \
|
|
|
|
|
arg2_name, arg2_val) \
|
|
|
|
|
INTERNAL_TRACE_EVENT_ADD(TRACE_EVENT_PHASE_END, \
|
|
|
|
|
category, name, TRACE_EVENT_FLAG_COPY, arg1_name, arg1_val, \
|
|
|
|
|
INTERNAL_TRACE_EVENT_ADD(TRACE_EVENT_PHASE_END, category, name, \
|
|
|
|
|
TRACE_EVENT_FLAG_COPY, arg1_name, arg1_val)
|
|
|
|
|
#define TRACE_EVENT_COPY_END2(category, name, arg1_name, arg1_val, arg2_name, \
|
|
|
|
|
arg2_val) \
|
|
|
|
|
INTERNAL_TRACE_EVENT_ADD(TRACE_EVENT_PHASE_END, category, name, \
|
|
|
|
|
TRACE_EVENT_FLAG_COPY, arg1_name, arg1_val, \
|
|
|
|
|
arg2_name, arg2_val)
|
|
|
|
|
|
|
|
|
|
// Records the value of a counter called "name" immediately. Value
|
|
|
|
@ -273,31 +273,31 @@
|
|
|
|
|
// - category and name strings must have application lifetime (statics or
|
|
|
|
|
// literals). They may not include " chars.
|
|
|
|
|
#define TRACE_COUNTER1(category, name, value) \
|
|
|
|
|
INTERNAL_TRACE_EVENT_ADD(TRACE_EVENT_PHASE_COUNTER, \
|
|
|
|
|
category, name, TRACE_EVENT_FLAG_NONE, \
|
|
|
|
|
"value", static_cast<int>(value))
|
|
|
|
|
INTERNAL_TRACE_EVENT_ADD(TRACE_EVENT_PHASE_COUNTER, category, name, \
|
|
|
|
|
TRACE_EVENT_FLAG_NONE, "value", \
|
|
|
|
|
static_cast<int>(value))
|
|
|
|
|
#define TRACE_COPY_COUNTER1(category, name, value) \
|
|
|
|
|
INTERNAL_TRACE_EVENT_ADD(TRACE_EVENT_PHASE_COUNTER, \
|
|
|
|
|
category, name, TRACE_EVENT_FLAG_COPY, \
|
|
|
|
|
"value", static_cast<int>(value))
|
|
|
|
|
INTERNAL_TRACE_EVENT_ADD(TRACE_EVENT_PHASE_COUNTER, category, name, \
|
|
|
|
|
TRACE_EVENT_FLAG_COPY, "value", \
|
|
|
|
|
static_cast<int>(value))
|
|
|
|
|
|
|
|
|
|
// Records the values of a multi-parted counter called "name" immediately.
|
|
|
|
|
// The UI will treat value1 and value2 as parts of a whole, displaying their
|
|
|
|
|
// values as a stacked-bar chart.
|
|
|
|
|
// - category and name strings must have application lifetime (statics or
|
|
|
|
|
// literals). They may not include " chars.
|
|
|
|
|
#define TRACE_COUNTER2(category, name, value1_name, value1_val, \
|
|
|
|
|
value2_name, value2_val) \
|
|
|
|
|
INTERNAL_TRACE_EVENT_ADD(TRACE_EVENT_PHASE_COUNTER, \
|
|
|
|
|
category, name, TRACE_EVENT_FLAG_NONE, \
|
|
|
|
|
value1_name, static_cast<int>(value1_val), \
|
|
|
|
|
value2_name, static_cast<int>(value2_val))
|
|
|
|
|
#define TRACE_COUNTER2(category, name, value1_name, value1_val, value2_name, \
|
|
|
|
|
value2_val) \
|
|
|
|
|
INTERNAL_TRACE_EVENT_ADD(TRACE_EVENT_PHASE_COUNTER, category, name, \
|
|
|
|
|
TRACE_EVENT_FLAG_NONE, value1_name, \
|
|
|
|
|
static_cast<int>(value1_val), value2_name, \
|
|
|
|
|
static_cast<int>(value2_val))
|
|
|
|
|
#define TRACE_COPY_COUNTER2(category, name, value1_name, value1_val, \
|
|
|
|
|
value2_name, value2_val) \
|
|
|
|
|
INTERNAL_TRACE_EVENT_ADD(TRACE_EVENT_PHASE_COUNTER, \
|
|
|
|
|
category, name, TRACE_EVENT_FLAG_COPY, \
|
|
|
|
|
value1_name, static_cast<int>(value1_val), \
|
|
|
|
|
value2_name, static_cast<int>(value2_val))
|
|
|
|
|
INTERNAL_TRACE_EVENT_ADD(TRACE_EVENT_PHASE_COUNTER, category, name, \
|
|
|
|
|
TRACE_EVENT_FLAG_COPY, value1_name, \
|
|
|
|
|
static_cast<int>(value1_val), value2_name, \
|
|
|
|
|
static_cast<int>(value2_val))
|
|
|
|
|
|
|
|
|
|
// Records the value of a counter called "name" immediately. Value
|
|
|
|
|
// must be representable as a 32 bit integer.
|
|
|
|
@ -308,13 +308,13 @@
|
|
|
|
|
// will be xored with a hash of the process ID so that the same pointer on
|
|
|
|
|
// two different processes will not collide.
|
|
|
|
|
#define TRACE_COUNTER_ID1(category, name, id, value) \
|
|
|
|
|
INTERNAL_TRACE_EVENT_ADD_WITH_ID(TRACE_EVENT_PHASE_COUNTER, \
|
|
|
|
|
category, name, id, TRACE_EVENT_FLAG_NONE, \
|
|
|
|
|
"value", static_cast<int>(value))
|
|
|
|
|
INTERNAL_TRACE_EVENT_ADD_WITH_ID(TRACE_EVENT_PHASE_COUNTER, category, name, \
|
|
|
|
|
id, TRACE_EVENT_FLAG_NONE, "value", \
|
|
|
|
|
static_cast<int>(value))
|
|
|
|
|
#define TRACE_COPY_COUNTER_ID1(category, name, id, value) \
|
|
|
|
|
INTERNAL_TRACE_EVENT_ADD_WITH_ID(TRACE_EVENT_PHASE_COUNTER, \
|
|
|
|
|
category, name, id, TRACE_EVENT_FLAG_COPY, \
|
|
|
|
|
"value", static_cast<int>(value))
|
|
|
|
|
INTERNAL_TRACE_EVENT_ADD_WITH_ID(TRACE_EVENT_PHASE_COUNTER, category, name, \
|
|
|
|
|
id, TRACE_EVENT_FLAG_COPY, "value", \
|
|
|
|
|
static_cast<int>(value))
|
|
|
|
|
|
|
|
|
|
// Records the values of a multi-parted counter called "name" immediately.
|
|
|
|
|
// The UI will treat value1 and value2 as parts of a whole, displaying their
|
|
|
|
@ -327,17 +327,16 @@
|
|
|
|
|
// two different processes will not collide.
|
|
|
|
|
#define TRACE_COUNTER_ID2(category, name, id, value1_name, value1_val, \
|
|
|
|
|
value2_name, value2_val) \
|
|
|
|
|
INTERNAL_TRACE_EVENT_ADD_WITH_ID(TRACE_EVENT_PHASE_COUNTER, \
|
|
|
|
|
category, name, id, TRACE_EVENT_FLAG_NONE, \
|
|
|
|
|
value1_name, static_cast<int>(value1_val), \
|
|
|
|
|
value2_name, static_cast<int>(value2_val))
|
|
|
|
|
INTERNAL_TRACE_EVENT_ADD_WITH_ID(TRACE_EVENT_PHASE_COUNTER, category, name, \
|
|
|
|
|
id, TRACE_EVENT_FLAG_NONE, value1_name, \
|
|
|
|
|
static_cast<int>(value1_val), value2_name, \
|
|
|
|
|
static_cast<int>(value2_val))
|
|
|
|
|
#define TRACE_COPY_COUNTER_ID2(category, name, id, value1_name, value1_val, \
|
|
|
|
|
value2_name, value2_val) \
|
|
|
|
|
INTERNAL_TRACE_EVENT_ADD_WITH_ID(TRACE_EVENT_PHASE_COUNTER, \
|
|
|
|
|
category, name, id, TRACE_EVENT_FLAG_COPY, \
|
|
|
|
|
value1_name, static_cast<int>(value1_val), \
|
|
|
|
|
value2_name, static_cast<int>(value2_val))
|
|
|
|
|
|
|
|
|
|
INTERNAL_TRACE_EVENT_ADD_WITH_ID(TRACE_EVENT_PHASE_COUNTER, category, name, \
|
|
|
|
|
id, TRACE_EVENT_FLAG_COPY, value1_name, \
|
|
|
|
|
static_cast<int>(value1_val), value2_name, \
|
|
|
|
|
static_cast<int>(value2_val))
|
|
|
|
|
|
|
|
|
|
// Records a single ASYNC_BEGIN event called "name" immediately, with 0, 1 or 2
|
|
|
|
|
// associated arguments. If the category is not enabled, then this
|
|
|
|
@ -357,28 +356,29 @@
|
|
|
|
|
// operation must use the same `name` and `id`. Each event can have its own
|
|
|
|
|
// args.
|
|
|
|
|
#define TRACE_EVENT_ASYNC_BEGIN0(category, name, id) \
|
|
|
|
|
INTERNAL_TRACE_EVENT_ADD_WITH_ID(TRACE_EVENT_PHASE_ASYNC_BEGIN, \
|
|
|
|
|
category, name, id, TRACE_EVENT_FLAG_NONE)
|
|
|
|
|
INTERNAL_TRACE_EVENT_ADD_WITH_ID(TRACE_EVENT_PHASE_ASYNC_BEGIN, category, \
|
|
|
|
|
name, id, TRACE_EVENT_FLAG_NONE)
|
|
|
|
|
#define TRACE_EVENT_ASYNC_BEGIN1(category, name, id, arg1_name, arg1_val) \
|
|
|
|
|
INTERNAL_TRACE_EVENT_ADD_WITH_ID(TRACE_EVENT_PHASE_ASYNC_BEGIN, \
|
|
|
|
|
category, name, id, TRACE_EVENT_FLAG_NONE, arg1_name, arg1_val)
|
|
|
|
|
INTERNAL_TRACE_EVENT_ADD_WITH_ID(TRACE_EVENT_PHASE_ASYNC_BEGIN, category, \
|
|
|
|
|
name, id, TRACE_EVENT_FLAG_NONE, arg1_name, \
|
|
|
|
|
arg1_val)
|
|
|
|
|
#define TRACE_EVENT_ASYNC_BEGIN2(category, name, id, arg1_name, arg1_val, \
|
|
|
|
|
arg2_name, arg2_val) \
|
|
|
|
|
INTERNAL_TRACE_EVENT_ADD_WITH_ID(TRACE_EVENT_PHASE_ASYNC_BEGIN, \
|
|
|
|
|
category, name, id, TRACE_EVENT_FLAG_NONE, \
|
|
|
|
|
arg1_name, arg1_val, arg2_name, arg2_val)
|
|
|
|
|
INTERNAL_TRACE_EVENT_ADD_WITH_ID(TRACE_EVENT_PHASE_ASYNC_BEGIN, category, \
|
|
|
|
|
name, id, TRACE_EVENT_FLAG_NONE, arg1_name, \
|
|
|
|
|
arg1_val, arg2_name, arg2_val)
|
|
|
|
|
#define TRACE_EVENT_COPY_ASYNC_BEGIN0(category, name, id) \
|
|
|
|
|
INTERNAL_TRACE_EVENT_ADD_WITH_ID(TRACE_EVENT_PHASE_ASYNC_BEGIN, \
|
|
|
|
|
category, name, id, TRACE_EVENT_FLAG_COPY)
|
|
|
|
|
INTERNAL_TRACE_EVENT_ADD_WITH_ID(TRACE_EVENT_PHASE_ASYNC_BEGIN, category, \
|
|
|
|
|
name, id, TRACE_EVENT_FLAG_COPY)
|
|
|
|
|
#define TRACE_EVENT_COPY_ASYNC_BEGIN1(category, name, id, arg1_name, arg1_val) \
|
|
|
|
|
INTERNAL_TRACE_EVENT_ADD_WITH_ID(TRACE_EVENT_PHASE_ASYNC_BEGIN, \
|
|
|
|
|
category, name, id, TRACE_EVENT_FLAG_COPY, \
|
|
|
|
|
arg1_name, arg1_val)
|
|
|
|
|
INTERNAL_TRACE_EVENT_ADD_WITH_ID(TRACE_EVENT_PHASE_ASYNC_BEGIN, category, \
|
|
|
|
|
name, id, TRACE_EVENT_FLAG_COPY, arg1_name, \
|
|
|
|
|
arg1_val)
|
|
|
|
|
#define TRACE_EVENT_COPY_ASYNC_BEGIN2(category, name, id, arg1_name, arg1_val, \
|
|
|
|
|
arg2_name, arg2_val) \
|
|
|
|
|
INTERNAL_TRACE_EVENT_ADD_WITH_ID(TRACE_EVENT_PHASE_ASYNC_BEGIN, \
|
|
|
|
|
category, name, id, TRACE_EVENT_FLAG_COPY, \
|
|
|
|
|
arg1_name, arg1_val, arg2_name, arg2_val)
|
|
|
|
|
INTERNAL_TRACE_EVENT_ADD_WITH_ID(TRACE_EVENT_PHASE_ASYNC_BEGIN, category, \
|
|
|
|
|
name, id, TRACE_EVENT_FLAG_COPY, arg1_name, \
|
|
|
|
|
arg1_val, arg2_name, arg2_val)
|
|
|
|
|
|
|
|
|
|
// Records a single ASYNC_STEP event for `step` immediately. If the category
|
|
|
|
|
// is not enabled, then this does nothing. The `name` and `id` must match the
|
|
|
|
@ -386,48 +386,49 @@
|
|
|
|
|
// async event. This should be called at the beginning of the next phase of an
|
|
|
|
|
// asynchronous operation.
|
|
|
|
|
#define TRACE_EVENT_ASYNC_STEP0(category, name, id, step) \
|
|
|
|
|
INTERNAL_TRACE_EVENT_ADD_WITH_ID(TRACE_EVENT_PHASE_ASYNC_STEP, \
|
|
|
|
|
category, name, id, TRACE_EVENT_FLAG_NONE, "step", step)
|
|
|
|
|
#define TRACE_EVENT_ASYNC_STEP1(category, name, id, step, \
|
|
|
|
|
arg1_name, arg1_val) \
|
|
|
|
|
INTERNAL_TRACE_EVENT_ADD_WITH_ID(TRACE_EVENT_PHASE_ASYNC_STEP, \
|
|
|
|
|
category, name, id, TRACE_EVENT_FLAG_NONE, "step", step, \
|
|
|
|
|
arg1_name, arg1_val)
|
|
|
|
|
INTERNAL_TRACE_EVENT_ADD_WITH_ID(TRACE_EVENT_PHASE_ASYNC_STEP, category, \
|
|
|
|
|
name, id, TRACE_EVENT_FLAG_NONE, "step", \
|
|
|
|
|
step)
|
|
|
|
|
#define TRACE_EVENT_ASYNC_STEP1(category, name, id, step, arg1_name, arg1_val) \
|
|
|
|
|
INTERNAL_TRACE_EVENT_ADD_WITH_ID(TRACE_EVENT_PHASE_ASYNC_STEP, category, \
|
|
|
|
|
name, id, TRACE_EVENT_FLAG_NONE, "step", \
|
|
|
|
|
step, arg1_name, arg1_val)
|
|
|
|
|
#define TRACE_EVENT_COPY_ASYNC_STEP0(category, name, id, step) \
|
|
|
|
|
INTERNAL_TRACE_EVENT_ADD_WITH_ID(TRACE_EVENT_PHASE_ASYNC_STEP, \
|
|
|
|
|
category, name, id, TRACE_EVENT_FLAG_COPY, "step", step)
|
|
|
|
|
#define TRACE_EVENT_COPY_ASYNC_STEP1(category, name, id, step, \
|
|
|
|
|
arg1_name, arg1_val) \
|
|
|
|
|
INTERNAL_TRACE_EVENT_ADD_WITH_ID(TRACE_EVENT_PHASE_ASYNC_STEP, \
|
|
|
|
|
category, name, id, TRACE_EVENT_FLAG_COPY, "step", step, \
|
|
|
|
|
arg1_name, arg1_val)
|
|
|
|
|
INTERNAL_TRACE_EVENT_ADD_WITH_ID(TRACE_EVENT_PHASE_ASYNC_STEP, category, \
|
|
|
|
|
name, id, TRACE_EVENT_FLAG_COPY, "step", \
|
|
|
|
|
step)
|
|
|
|
|
#define TRACE_EVENT_COPY_ASYNC_STEP1(category, name, id, step, arg1_name, \
|
|
|
|
|
arg1_val) \
|
|
|
|
|
INTERNAL_TRACE_EVENT_ADD_WITH_ID(TRACE_EVENT_PHASE_ASYNC_STEP, category, \
|
|
|
|
|
name, id, TRACE_EVENT_FLAG_COPY, "step", \
|
|
|
|
|
step, arg1_name, arg1_val)
|
|
|
|
|
|
|
|
|
|
// Records a single ASYNC_END event for "name" immediately. If the category
|
|
|
|
|
// is not enabled, then this does nothing.
|
|
|
|
|
#define TRACE_EVENT_ASYNC_END0(category, name, id) \
|
|
|
|
|
INTERNAL_TRACE_EVENT_ADD_WITH_ID(TRACE_EVENT_PHASE_ASYNC_END, \
|
|
|
|
|
category, name, id, TRACE_EVENT_FLAG_NONE)
|
|
|
|
|
INTERNAL_TRACE_EVENT_ADD_WITH_ID(TRACE_EVENT_PHASE_ASYNC_END, category, \
|
|
|
|
|
name, id, TRACE_EVENT_FLAG_NONE)
|
|
|
|
|
#define TRACE_EVENT_ASYNC_END1(category, name, id, arg1_name, arg1_val) \
|
|
|
|
|
INTERNAL_TRACE_EVENT_ADD_WITH_ID(TRACE_EVENT_PHASE_ASYNC_END, \
|
|
|
|
|
category, name, id, TRACE_EVENT_FLAG_NONE, arg1_name, arg1_val)
|
|
|
|
|
INTERNAL_TRACE_EVENT_ADD_WITH_ID(TRACE_EVENT_PHASE_ASYNC_END, category, \
|
|
|
|
|
name, id, TRACE_EVENT_FLAG_NONE, arg1_name, \
|
|
|
|
|
arg1_val)
|
|
|
|
|
#define TRACE_EVENT_ASYNC_END2(category, name, id, arg1_name, arg1_val, \
|
|
|
|
|
arg2_name, arg2_val) \
|
|
|
|
|
INTERNAL_TRACE_EVENT_ADD_WITH_ID(TRACE_EVENT_PHASE_ASYNC_END, \
|
|
|
|
|
category, name, id, TRACE_EVENT_FLAG_NONE, \
|
|
|
|
|
arg1_name, arg1_val, arg2_name, arg2_val)
|
|
|
|
|
INTERNAL_TRACE_EVENT_ADD_WITH_ID(TRACE_EVENT_PHASE_ASYNC_END, category, \
|
|
|
|
|
name, id, TRACE_EVENT_FLAG_NONE, arg1_name, \
|
|
|
|
|
arg1_val, arg2_name, arg2_val)
|
|
|
|
|
#define TRACE_EVENT_COPY_ASYNC_END0(category, name, id) \
|
|
|
|
|
INTERNAL_TRACE_EVENT_ADD_WITH_ID(TRACE_EVENT_PHASE_ASYNC_END, \
|
|
|
|
|
category, name, id, TRACE_EVENT_FLAG_COPY)
|
|
|
|
|
INTERNAL_TRACE_EVENT_ADD_WITH_ID(TRACE_EVENT_PHASE_ASYNC_END, category, \
|
|
|
|
|
name, id, TRACE_EVENT_FLAG_COPY)
|
|
|
|
|
#define TRACE_EVENT_COPY_ASYNC_END1(category, name, id, arg1_name, arg1_val) \
|
|
|
|
|
INTERNAL_TRACE_EVENT_ADD_WITH_ID(TRACE_EVENT_PHASE_ASYNC_END, \
|
|
|
|
|
category, name, id, TRACE_EVENT_FLAG_COPY, \
|
|
|
|
|
arg1_name, arg1_val)
|
|
|
|
|
INTERNAL_TRACE_EVENT_ADD_WITH_ID(TRACE_EVENT_PHASE_ASYNC_END, category, \
|
|
|
|
|
name, id, TRACE_EVENT_FLAG_COPY, arg1_name, \
|
|
|
|
|
arg1_val)
|
|
|
|
|
#define TRACE_EVENT_COPY_ASYNC_END2(category, name, id, arg1_name, arg1_val, \
|
|
|
|
|
arg2_name, arg2_val) \
|
|
|
|
|
INTERNAL_TRACE_EVENT_ADD_WITH_ID(TRACE_EVENT_PHASE_ASYNC_END, \
|
|
|
|
|
category, name, id, TRACE_EVENT_FLAG_COPY, \
|
|
|
|
|
arg1_name, arg1_val, arg2_name, arg2_val)
|
|
|
|
|
|
|
|
|
|
INTERNAL_TRACE_EVENT_ADD_WITH_ID(TRACE_EVENT_PHASE_ASYNC_END, category, \
|
|
|
|
|
name, id, TRACE_EVENT_FLAG_COPY, arg1_name, \
|
|
|
|
|
arg1_val, arg2_name, arg2_val)
|
|
|
|
|
|
|
|
|
|
// Records a single FLOW_BEGIN event called "name" immediately, with 0, 1 or 2
|
|
|
|
|
// associated arguments. If the category is not enabled, then this
|
|
|
|
@ -449,28 +450,29 @@
|
|
|
|
|
// span threads and processes, but all events in that operation must use the
|
|
|
|
|
// same `name` and `id`. Each event can have its own args.
|
|
|
|
|
#define TRACE_EVENT_FLOW_BEGIN0(category, name, id) \
|
|
|
|
|
INTERNAL_TRACE_EVENT_ADD_WITH_ID(TRACE_EVENT_PHASE_FLOW_BEGIN, \
|
|
|
|
|
category, name, id, TRACE_EVENT_FLAG_NONE)
|
|
|
|
|
INTERNAL_TRACE_EVENT_ADD_WITH_ID(TRACE_EVENT_PHASE_FLOW_BEGIN, category, \
|
|
|
|
|
name, id, TRACE_EVENT_FLAG_NONE)
|
|
|
|
|
#define TRACE_EVENT_FLOW_BEGIN1(category, name, id, arg1_name, arg1_val) \
|
|
|
|
|
INTERNAL_TRACE_EVENT_ADD_WITH_ID(TRACE_EVENT_PHASE_FLOW_BEGIN, \
|
|
|
|
|
category, name, id, TRACE_EVENT_FLAG_NONE, arg1_name, arg1_val)
|
|
|
|
|
INTERNAL_TRACE_EVENT_ADD_WITH_ID(TRACE_EVENT_PHASE_FLOW_BEGIN, category, \
|
|
|
|
|
name, id, TRACE_EVENT_FLAG_NONE, arg1_name, \
|
|
|
|
|
arg1_val)
|
|
|
|
|
#define TRACE_EVENT_FLOW_BEGIN2(category, name, id, arg1_name, arg1_val, \
|
|
|
|
|
arg2_name, arg2_val) \
|
|
|
|
|
INTERNAL_TRACE_EVENT_ADD_WITH_ID(TRACE_EVENT_PHASE_FLOW_BEGIN, \
|
|
|
|
|
category, name, id, TRACE_EVENT_FLAG_NONE, \
|
|
|
|
|
arg1_name, arg1_val, arg2_name, arg2_val)
|
|
|
|
|
INTERNAL_TRACE_EVENT_ADD_WITH_ID(TRACE_EVENT_PHASE_FLOW_BEGIN, category, \
|
|
|
|
|
name, id, TRACE_EVENT_FLAG_NONE, arg1_name, \
|
|
|
|
|
arg1_val, arg2_name, arg2_val)
|
|
|
|
|
#define TRACE_EVENT_COPY_FLOW_BEGIN0(category, name, id) \
|
|
|
|
|
INTERNAL_TRACE_EVENT_ADD_WITH_ID(TRACE_EVENT_PHASE_FLOW_BEGIN, \
|
|
|
|
|
category, name, id, TRACE_EVENT_FLAG_COPY)
|
|
|
|
|
INTERNAL_TRACE_EVENT_ADD_WITH_ID(TRACE_EVENT_PHASE_FLOW_BEGIN, category, \
|
|
|
|
|
name, id, TRACE_EVENT_FLAG_COPY)
|
|
|
|
|
#define TRACE_EVENT_COPY_FLOW_BEGIN1(category, name, id, arg1_name, arg1_val) \
|
|
|
|
|
INTERNAL_TRACE_EVENT_ADD_WITH_ID(TRACE_EVENT_PHASE_FLOW_BEGIN, \
|
|
|
|
|
category, name, id, TRACE_EVENT_FLAG_COPY, \
|
|
|
|
|
arg1_name, arg1_val)
|
|
|
|
|
INTERNAL_TRACE_EVENT_ADD_WITH_ID(TRACE_EVENT_PHASE_FLOW_BEGIN, category, \
|
|
|
|
|
name, id, TRACE_EVENT_FLAG_COPY, arg1_name, \
|
|
|
|
|
arg1_val)
|
|
|
|
|
#define TRACE_EVENT_COPY_FLOW_BEGIN2(category, name, id, arg1_name, arg1_val, \
|
|
|
|
|
arg2_name, arg2_val) \
|
|
|
|
|
INTERNAL_TRACE_EVENT_ADD_WITH_ID(TRACE_EVENT_PHASE_FLOW_BEGIN, \
|
|
|
|
|
category, name, id, TRACE_EVENT_FLAG_COPY, \
|
|
|
|
|
arg1_name, arg1_val, arg2_name, arg2_val)
|
|
|
|
|
INTERNAL_TRACE_EVENT_ADD_WITH_ID(TRACE_EVENT_PHASE_FLOW_BEGIN, category, \
|
|
|
|
|
name, id, TRACE_EVENT_FLAG_COPY, arg1_name, \
|
|
|
|
|
arg1_val, arg2_name, arg2_val)
|
|
|
|
|
|
|
|
|
|
// Records a single FLOW_STEP event for `step` immediately. If the category
|
|
|
|
|
// is not enabled, then this does nothing. The `name` and `id` must match the
|
|
|
|
@ -478,48 +480,49 @@
|
|
|
|
|
// async event. This should be called at the beginning of the next phase of an
|
|
|
|
|
// asynchronous operation.
|
|
|
|
|
#define TRACE_EVENT_FLOW_STEP0(category, name, id, step) \
|
|
|
|
|
INTERNAL_TRACE_EVENT_ADD_WITH_ID(TRACE_EVENT_PHASE_FLOW_STEP, \
|
|
|
|
|
category, name, id, TRACE_EVENT_FLAG_NONE, "step", step)
|
|
|
|
|
#define TRACE_EVENT_FLOW_STEP1(category, name, id, step, \
|
|
|
|
|
arg1_name, arg1_val) \
|
|
|
|
|
INTERNAL_TRACE_EVENT_ADD_WITH_ID(TRACE_EVENT_PHASE_FLOW_STEP, \
|
|
|
|
|
category, name, id, TRACE_EVENT_FLAG_NONE, "step", step, \
|
|
|
|
|
arg1_name, arg1_val)
|
|
|
|
|
INTERNAL_TRACE_EVENT_ADD_WITH_ID(TRACE_EVENT_PHASE_FLOW_STEP, category, \
|
|
|
|
|
name, id, TRACE_EVENT_FLAG_NONE, "step", \
|
|
|
|
|
step)
|
|
|
|
|
#define TRACE_EVENT_FLOW_STEP1(category, name, id, step, arg1_name, arg1_val) \
|
|
|
|
|
INTERNAL_TRACE_EVENT_ADD_WITH_ID(TRACE_EVENT_PHASE_FLOW_STEP, category, \
|
|
|
|
|
name, id, TRACE_EVENT_FLAG_NONE, "step", \
|
|
|
|
|
step, arg1_name, arg1_val)
|
|
|
|
|
#define TRACE_EVENT_COPY_FLOW_STEP0(category, name, id, step) \
|
|
|
|
|
INTERNAL_TRACE_EVENT_ADD_WITH_ID(TRACE_EVENT_PHASE_FLOW_STEP, \
|
|
|
|
|
category, name, id, TRACE_EVENT_FLAG_COPY, "step", step)
|
|
|
|
|
#define TRACE_EVENT_COPY_FLOW_STEP1(category, name, id, step, \
|
|
|
|
|
arg1_name, arg1_val) \
|
|
|
|
|
INTERNAL_TRACE_EVENT_ADD_WITH_ID(TRACE_EVENT_PHASE_FLOW_STEP, \
|
|
|
|
|
category, name, id, TRACE_EVENT_FLAG_COPY, "step", step, \
|
|
|
|
|
arg1_name, arg1_val)
|
|
|
|
|
INTERNAL_TRACE_EVENT_ADD_WITH_ID(TRACE_EVENT_PHASE_FLOW_STEP, category, \
|
|
|
|
|
name, id, TRACE_EVENT_FLAG_COPY, "step", \
|
|
|
|
|
step)
|
|
|
|
|
#define TRACE_EVENT_COPY_FLOW_STEP1(category, name, id, step, arg1_name, \
|
|
|
|
|
arg1_val) \
|
|
|
|
|
INTERNAL_TRACE_EVENT_ADD_WITH_ID(TRACE_EVENT_PHASE_FLOW_STEP, category, \
|
|
|
|
|
name, id, TRACE_EVENT_FLAG_COPY, "step", \
|
|
|
|
|
step, arg1_name, arg1_val)
|
|
|
|
|
|
|
|
|
|
// Records a single FLOW_END event for "name" immediately. If the category
|
|
|
|
|
// is not enabled, then this does nothing.
|
|
|
|
|
#define TRACE_EVENT_FLOW_END0(category, name, id) \
|
|
|
|
|
INTERNAL_TRACE_EVENT_ADD_WITH_ID(TRACE_EVENT_PHASE_FLOW_END, \
|
|
|
|
|
category, name, id, TRACE_EVENT_FLAG_NONE)
|
|
|
|
|
INTERNAL_TRACE_EVENT_ADD_WITH_ID(TRACE_EVENT_PHASE_FLOW_END, category, name, \
|
|
|
|
|
id, TRACE_EVENT_FLAG_NONE)
|
|
|
|
|
#define TRACE_EVENT_FLOW_END1(category, name, id, arg1_name, arg1_val) \
|
|
|
|
|
INTERNAL_TRACE_EVENT_ADD_WITH_ID(TRACE_EVENT_PHASE_FLOW_END, \
|
|
|
|
|
category, name, id, TRACE_EVENT_FLAG_NONE, arg1_name, arg1_val)
|
|
|
|
|
INTERNAL_TRACE_EVENT_ADD_WITH_ID(TRACE_EVENT_PHASE_FLOW_END, category, name, \
|
|
|
|
|
id, TRACE_EVENT_FLAG_NONE, arg1_name, \
|
|
|
|
|
arg1_val)
|
|
|
|
|
#define TRACE_EVENT_FLOW_END2(category, name, id, arg1_name, arg1_val, \
|
|
|
|
|
arg2_name, arg2_val) \
|
|
|
|
|
INTERNAL_TRACE_EVENT_ADD_WITH_ID(TRACE_EVENT_PHASE_FLOW_END, \
|
|
|
|
|
category, name, id, TRACE_EVENT_FLAG_NONE, \
|
|
|
|
|
arg1_name, arg1_val, arg2_name, arg2_val)
|
|
|
|
|
INTERNAL_TRACE_EVENT_ADD_WITH_ID(TRACE_EVENT_PHASE_FLOW_END, category, name, \
|
|
|
|
|
id, TRACE_EVENT_FLAG_NONE, arg1_name, \
|
|
|
|
|
arg1_val, arg2_name, arg2_val)
|
|
|
|
|
#define TRACE_EVENT_COPY_FLOW_END0(category, name, id) \
|
|
|
|
|
INTERNAL_TRACE_EVENT_ADD_WITH_ID(TRACE_EVENT_PHASE_FLOW_END, \
|
|
|
|
|
category, name, id, TRACE_EVENT_FLAG_COPY)
|
|
|
|
|
INTERNAL_TRACE_EVENT_ADD_WITH_ID(TRACE_EVENT_PHASE_FLOW_END, category, name, \
|
|
|
|
|
id, TRACE_EVENT_FLAG_COPY)
|
|
|
|
|
#define TRACE_EVENT_COPY_FLOW_END1(category, name, id, arg1_name, arg1_val) \
|
|
|
|
|
INTERNAL_TRACE_EVENT_ADD_WITH_ID(TRACE_EVENT_PHASE_FLOW_END, \
|
|
|
|
|
category, name, id, TRACE_EVENT_FLAG_COPY, \
|
|
|
|
|
arg1_name, arg1_val)
|
|
|
|
|
INTERNAL_TRACE_EVENT_ADD_WITH_ID(TRACE_EVENT_PHASE_FLOW_END, category, name, \
|
|
|
|
|
id, TRACE_EVENT_FLAG_COPY, arg1_name, \
|
|
|
|
|
arg1_val)
|
|
|
|
|
#define TRACE_EVENT_COPY_FLOW_END2(category, name, id, arg1_name, arg1_val, \
|
|
|
|
|
arg2_name, arg2_val) \
|
|
|
|
|
INTERNAL_TRACE_EVENT_ADD_WITH_ID(TRACE_EVENT_PHASE_FLOW_END, \
|
|
|
|
|
category, name, id, TRACE_EVENT_FLAG_COPY, \
|
|
|
|
|
arg1_name, arg1_val, arg2_name, arg2_val)
|
|
|
|
|
|
|
|
|
|
INTERNAL_TRACE_EVENT_ADD_WITH_ID(TRACE_EVENT_PHASE_FLOW_END, category, name, \
|
|
|
|
|
id, TRACE_EVENT_FLAG_COPY, arg1_name, \
|
|
|
|
|
arg1_val, arg2_name, arg2_val)
|
|
|
|
|
|
|
|
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
|
|
|
// Implementation specific tracing API definitions.
|
|
|
|
@ -555,10 +558,8 @@
|
|
|
|
|
// Implementation detail: trace event macros create temporary variables
|
|
|
|
|
// to keep instrumentation overhead low. These macros give each temporary
|
|
|
|
|
// variable a unique name based on the line number to prevent name collissions.
|
|
|
|
|
#define INTERNAL_TRACE_EVENT_UID3(a,b) \
|
|
|
|
|
trace_event_unique_##a##b
|
|
|
|
|
#define INTERNAL_TRACE_EVENT_UID2(a,b) \
|
|
|
|
|
INTERNAL_TRACE_EVENT_UID3(a,b)
|
|
|
|
|
#define INTERNAL_TRACE_EVENT_UID3(a, b) trace_event_unique_##a##b
|
|
|
|
|
#define INTERNAL_TRACE_EVENT_UID2(a, b) INTERNAL_TRACE_EVENT_UID3(a, b)
|
|
|
|
|
#define INTERNAL_TRACE_EVENT_UID(name_prefix) \
|
|
|
|
|
INTERNAL_TRACE_EVENT_UID2(name_prefix, __LINE__)
|
|
|
|
|
|
|
|
|
@ -590,16 +591,15 @@
|
|
|
|
|
// ends.
|
|
|
|
|
#define INTERNAL_TRACE_EVENT_ADD_SCOPED(category, name, ...) \
|
|
|
|
|
INTERNAL_TRACE_EVENT_GET_CATEGORY_INFO(category); \
|
|
|
|
|
webrtc::trace_event_internal::TraceEndOnScopeClose \
|
|
|
|
|
INTERNAL_TRACE_EVENT_UID(profileScope); \
|
|
|
|
|
webrtc::trace_event_internal::TraceEndOnScopeClose INTERNAL_TRACE_EVENT_UID( \
|
|
|
|
|
profileScope); \
|
|
|
|
|
if (*INTERNAL_TRACE_EVENT_UID(catstatic)) { \
|
|
|
|
|
webrtc::trace_event_internal::AddTraceEvent( \
|
|
|
|
|
TRACE_EVENT_PHASE_BEGIN, \
|
|
|
|
|
INTERNAL_TRACE_EVENT_UID(catstatic), \
|
|
|
|
|
name, webrtc::trace_event_internal::kNoEventId, \
|
|
|
|
|
TRACE_EVENT_FLAG_NONE, ##__VA_ARGS__); \
|
|
|
|
|
INTERNAL_TRACE_EVENT_UID(profileScope).Initialize( \
|
|
|
|
|
INTERNAL_TRACE_EVENT_UID(catstatic), name); \
|
|
|
|
|
TRACE_EVENT_PHASE_BEGIN, INTERNAL_TRACE_EVENT_UID(catstatic), name, \
|
|
|
|
|
webrtc::trace_event_internal::kNoEventId, TRACE_EVENT_FLAG_NONE, \
|
|
|
|
|
##__VA_ARGS__); \
|
|
|
|
|
INTERNAL_TRACE_EVENT_UID(profileScope) \
|
|
|
|
|
.Initialize(INTERNAL_TRACE_EVENT_UID(catstatic), name); \
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Implementation detail: internal macro to create static category and add
|
|
|
|
@ -613,9 +613,8 @@
|
|
|
|
|
webrtc::trace_event_internal::TraceID trace_event_trace_id( \
|
|
|
|
|
id, &trace_event_flags); \
|
|
|
|
|
webrtc::trace_event_internal::AddTraceEvent( \
|
|
|
|
|
phase, INTERNAL_TRACE_EVENT_UID(catstatic), \
|
|
|
|
|
name, trace_event_trace_id.data(), trace_event_flags, \
|
|
|
|
|
##__VA_ARGS__); \
|
|
|
|
|
phase, INTERNAL_TRACE_EVENT_UID(catstatic), name, \
|
|
|
|
|
trace_event_trace_id.data(), trace_event_flags, ##__VA_ARGS__); \
|
|
|
|
|
} \
|
|
|
|
|
} while (0)
|
|
|
|
|
|
|
|
|
@ -667,8 +666,7 @@ class TraceID {
|
|
|
|
|
: data_(static_cast<unsigned long long>(id)) {}
|
|
|
|
|
explicit ForceMangle(long id)
|
|
|
|
|
: data_(static_cast<unsigned long long>(id)) {}
|
|
|
|
|
explicit ForceMangle(int id)
|
|
|
|
|
: data_(static_cast<unsigned long long>(id)) {}
|
|
|
|
|
explicit ForceMangle(int id) : data_(static_cast<unsigned long long>(id)) {}
|
|
|
|
|
explicit ForceMangle(short id)
|
|
|
|
|
: data_(static_cast<unsigned long long>(id)) {}
|
|
|
|
|
explicit ForceMangle(signed char id)
|
|
|
|
@ -681,33 +679,48 @@ class TraceID {
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
explicit TraceID(const void* id, unsigned char* flags)
|
|
|
|
|
: data_(static_cast<unsigned long long>(
|
|
|
|
|
reinterpret_cast<uintptr_t>(id))) {
|
|
|
|
|
: data_(
|
|
|
|
|
static_cast<unsigned long long>(reinterpret_cast<uintptr_t>(id))) {
|
|
|
|
|
*flags |= TRACE_EVENT_FLAG_MANGLE_ID;
|
|
|
|
|
}
|
|
|
|
|
explicit TraceID(ForceMangle id, unsigned char* flags) : data_(id.data()) {
|
|
|
|
|
*flags |= TRACE_EVENT_FLAG_MANGLE_ID;
|
|
|
|
|
}
|
|
|
|
|
explicit TraceID(unsigned long long id, unsigned char* flags)
|
|
|
|
|
: data_(id) { (void)flags; }
|
|
|
|
|
explicit TraceID(unsigned long id, unsigned char* flags)
|
|
|
|
|
: data_(id) { (void)flags; }
|
|
|
|
|
explicit TraceID(unsigned int id, unsigned char* flags)
|
|
|
|
|
: data_(id) { (void)flags; }
|
|
|
|
|
explicit TraceID(unsigned short id, unsigned char* flags)
|
|
|
|
|
: data_(id) { (void)flags; }
|
|
|
|
|
explicit TraceID(unsigned char id, unsigned char* flags)
|
|
|
|
|
: data_(id) { (void)flags; }
|
|
|
|
|
explicit TraceID(unsigned long long id, unsigned char* flags) : data_(id) {
|
|
|
|
|
(void)flags;
|
|
|
|
|
}
|
|
|
|
|
explicit TraceID(unsigned long id, unsigned char* flags) : data_(id) {
|
|
|
|
|
(void)flags;
|
|
|
|
|
}
|
|
|
|
|
explicit TraceID(unsigned int id, unsigned char* flags) : data_(id) {
|
|
|
|
|
(void)flags;
|
|
|
|
|
}
|
|
|
|
|
explicit TraceID(unsigned short id, unsigned char* flags) : data_(id) {
|
|
|
|
|
(void)flags;
|
|
|
|
|
}
|
|
|
|
|
explicit TraceID(unsigned char id, unsigned char* flags) : data_(id) {
|
|
|
|
|
(void)flags;
|
|
|
|
|
}
|
|
|
|
|
explicit TraceID(long long id, unsigned char* flags)
|
|
|
|
|
: data_(static_cast<unsigned long long>(id)) { (void)flags; }
|
|
|
|
|
: data_(static_cast<unsigned long long>(id)) {
|
|
|
|
|
(void)flags;
|
|
|
|
|
}
|
|
|
|
|
explicit TraceID(long id, unsigned char* flags)
|
|
|
|
|
: data_(static_cast<unsigned long long>(id)) { (void)flags; }
|
|
|
|
|
: data_(static_cast<unsigned long long>(id)) {
|
|
|
|
|
(void)flags;
|
|
|
|
|
}
|
|
|
|
|
explicit TraceID(int id, unsigned char* flags)
|
|
|
|
|
: data_(static_cast<unsigned long long>(id)) { (void)flags; }
|
|
|
|
|
: data_(static_cast<unsigned long long>(id)) {
|
|
|
|
|
(void)flags;
|
|
|
|
|
}
|
|
|
|
|
explicit TraceID(short id, unsigned char* flags)
|
|
|
|
|
: data_(static_cast<unsigned long long>(id)) { (void)flags; }
|
|
|
|
|
: data_(static_cast<unsigned long long>(id)) {
|
|
|
|
|
(void)flags;
|
|
|
|
|
}
|
|
|
|
|
explicit TraceID(signed char id, unsigned char* flags)
|
|
|
|
|
: data_(static_cast<unsigned long long>(id)) { (void)flags; }
|
|
|
|
|
: data_(static_cast<unsigned long long>(id)) {
|
|
|
|
|
(void)flags;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
unsigned long long data() const { return data_; }
|
|
|
|
|
|
|
|
|
@ -730,6 +743,7 @@ class TraceStringWithCopy {
|
|
|
|
|
public:
|
|
|
|
|
explicit TraceStringWithCopy(const char* str) : str_(str) {}
|
|
|
|
|
operator const char*() const { return str_; }
|
|
|
|
|
|
|
|
|
|
private:
|
|
|
|
|
const char* str_;
|
|
|
|
|
};
|
|
|
|
@ -737,11 +751,9 @@ class TraceStringWithCopy {
|
|
|
|
|
// Define SetTraceValue for each allowed type. It stores the type and
|
|
|
|
|
// value in the return arguments. This allows this API to avoid declaring any
|
|
|
|
|
// structures so that it is portable to third_party libraries.
|
|
|
|
|
#define INTERNAL_DECLARE_SET_TRACE_VALUE(actual_type, \
|
|
|
|
|
union_member, \
|
|
|
|
|
#define INTERNAL_DECLARE_SET_TRACE_VALUE(actual_type, union_member, \
|
|
|
|
|
value_type_id) \
|
|
|
|
|
static inline void SetTraceValue(actual_type arg, \
|
|
|
|
|
unsigned char* type, \
|
|
|
|
|
static inline void SetTraceValue(actual_type arg, unsigned char* type, \
|
|
|
|
|
unsigned long long* value) { \
|
|
|
|
|
TraceValueUnion type_value; \
|
|
|
|
|
type_value.union_member = arg; \
|
|
|
|
@ -749,10 +761,8 @@ class TraceStringWithCopy {
|
|
|
|
|
*value = type_value.as_uint; \
|
|
|
|
|
}
|
|
|
|
|
// Simpler form for int types that can be safely casted.
|
|
|
|
|
#define INTERNAL_DECLARE_SET_TRACE_VALUE_INT(actual_type, \
|
|
|
|
|
value_type_id) \
|
|
|
|
|
static inline void SetTraceValue(actual_type arg, \
|
|
|
|
|
unsigned char* type, \
|
|
|
|
|
#define INTERNAL_DECLARE_SET_TRACE_VALUE_INT(actual_type, value_type_id) \
|
|
|
|
|
static inline void SetTraceValue(actual_type arg, unsigned char* type, \
|
|
|
|
|
unsigned long long* value) { \
|
|
|
|
|
*type = value_type_id; \
|
|
|
|
|
*value = static_cast<unsigned long long>(arg); \
|
|
|
|
@ -770,11 +780,14 @@ INTERNAL_DECLARE_SET_TRACE_VALUE_INT(short, TRACE_VALUE_TYPE_INT)
|
|
|
|
|
INTERNAL_DECLARE_SET_TRACE_VALUE_INT(signed char, TRACE_VALUE_TYPE_INT)
|
|
|
|
|
INTERNAL_DECLARE_SET_TRACE_VALUE(bool, as_bool, TRACE_VALUE_TYPE_BOOL)
|
|
|
|
|
INTERNAL_DECLARE_SET_TRACE_VALUE(double, as_double, TRACE_VALUE_TYPE_DOUBLE)
|
|
|
|
|
INTERNAL_DECLARE_SET_TRACE_VALUE(const void*, as_pointer,
|
|
|
|
|
INTERNAL_DECLARE_SET_TRACE_VALUE(const void*,
|
|
|
|
|
as_pointer,
|
|
|
|
|
TRACE_VALUE_TYPE_POINTER)
|
|
|
|
|
INTERNAL_DECLARE_SET_TRACE_VALUE(const char*, as_string,
|
|
|
|
|
INTERNAL_DECLARE_SET_TRACE_VALUE(const char*,
|
|
|
|
|
as_string,
|
|
|
|
|
TRACE_VALUE_TYPE_STRING)
|
|
|
|
|
INTERNAL_DECLARE_SET_TRACE_VALUE(const TraceStringWithCopy&, as_string,
|
|
|
|
|
INTERNAL_DECLARE_SET_TRACE_VALUE(const TraceStringWithCopy&,
|
|
|
|
|
as_string,
|
|
|
|
|
TRACE_VALUE_TYPE_COPY_STRING)
|
|
|
|
|
|
|
|
|
|
#undef INTERNAL_DECLARE_SET_TRACE_VALUE
|
|
|
|
@ -818,10 +831,8 @@ static inline void AddTraceEvent(char phase,
|
|
|
|
|
unsigned char arg_types[1];
|
|
|
|
|
unsigned long long arg_values[1];
|
|
|
|
|
SetTraceValue(arg1_val, &arg_types[0], &arg_values[0]);
|
|
|
|
|
TRACE_EVENT_API_ADD_TRACE_EVENT(
|
|
|
|
|
phase, category_enabled, name, id,
|
|
|
|
|
num_args, &arg1_name, arg_types, arg_values,
|
|
|
|
|
flags);
|
|
|
|
|
TRACE_EVENT_API_ADD_TRACE_EVENT(phase, category_enabled, name, id, num_args,
|
|
|
|
|
&arg1_name, arg_types, arg_values, flags);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
template <class ARG1_TYPE, class ARG2_TYPE>
|
|
|
|
@ -840,10 +851,8 @@ static inline void AddTraceEvent(char phase,
|
|
|
|
|
unsigned long long arg_values[2];
|
|
|
|
|
SetTraceValue(arg1_val, &arg_types[0], &arg_values[0]);
|
|
|
|
|
SetTraceValue(arg2_val, &arg_types[1], &arg_values[1]);
|
|
|
|
|
TRACE_EVENT_API_ADD_TRACE_EVENT(
|
|
|
|
|
phase, category_enabled, name, id,
|
|
|
|
|
num_args, arg_names, arg_types, arg_values,
|
|
|
|
|
flags);
|
|
|
|
|
TRACE_EVENT_API_ADD_TRACE_EVENT(phase, category_enabled, name, id, num_args,
|
|
|
|
|
arg_names, arg_types, arg_values, flags);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Used by TRACE_EVENTx macro. Do not use directly.
|
|
|
|
@ -856,8 +865,7 @@ class TraceEndOnScopeClose {
|
|
|
|
|
AddEventIfEnabled();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void Initialize(const unsigned char* category_enabled,
|
|
|
|
|
const char* name) {
|
|
|
|
|
void Initialize(const unsigned char* category_enabled, const char* name) {
|
|
|
|
|
data_.category_enabled = category_enabled;
|
|
|
|
|
data_.name = name;
|
|
|
|
|
p_data_ = &data_;
|
|
|
|
@ -896,7 +904,9 @@ class TraceEndOnScopeClose {
|
|
|
|
|
// This section defines no-op alternatives to the tracing macros when
|
|
|
|
|
// RTC_DISABLE_TRACE_EVENTS is defined.
|
|
|
|
|
|
|
|
|
|
#define RTC_NOOP() do {} while (0)
|
|
|
|
|
#define RTC_NOOP() \
|
|
|
|
|
do { \
|
|
|
|
|
} while (0)
|
|
|
|
|
|
|
|
|
|
#define TRACE_STR_COPY(str) RTC_NOOP()
|
|
|
|
|
|
|
|
|
@ -912,106 +922,126 @@ class TraceEndOnScopeClose {
|
|
|
|
|
#define TRACE_EVENT_INSTANT0(category, name) RTC_NOOP()
|
|
|
|
|
#define TRACE_EVENT_INSTANT1(category, name, arg1_name, arg1_val) RTC_NOOP()
|
|
|
|
|
|
|
|
|
|
#define TRACE_EVENT_INSTANT2(category, name, arg1_name, arg1_val, \
|
|
|
|
|
arg2_name, arg2_val) RTC_NOOP()
|
|
|
|
|
#define TRACE_EVENT_INSTANT2(category, name, arg1_name, arg1_val, arg2_name, \
|
|
|
|
|
arg2_val) \
|
|
|
|
|
RTC_NOOP()
|
|
|
|
|
|
|
|
|
|
#define TRACE_EVENT_COPY_INSTANT0(category, name) RTC_NOOP()
|
|
|
|
|
#define TRACE_EVENT_COPY_INSTANT1(category, name, arg1_name, arg1_val) \
|
|
|
|
|
RTC_NOOP()
|
|
|
|
|
#define TRACE_EVENT_COPY_INSTANT2(category, name, arg1_name, arg1_val, \
|
|
|
|
|
arg2_name, arg2_val) RTC_NOOP()
|
|
|
|
|
arg2_name, arg2_val) \
|
|
|
|
|
RTC_NOOP()
|
|
|
|
|
|
|
|
|
|
#define TRACE_EVENT_BEGIN0(category, name) RTC_NOOP()
|
|
|
|
|
#define TRACE_EVENT_BEGIN1(category, name, arg1_name, arg1_val) RTC_NOOP()
|
|
|
|
|
#define TRACE_EVENT_BEGIN2(category, name, arg1_name, arg1_val, \
|
|
|
|
|
arg2_name, arg2_val) RTC_NOOP()
|
|
|
|
|
#define TRACE_EVENT_BEGIN2(category, name, arg1_name, arg1_val, arg2_name, \
|
|
|
|
|
arg2_val) \
|
|
|
|
|
RTC_NOOP()
|
|
|
|
|
#define TRACE_EVENT_COPY_BEGIN0(category, name) RTC_NOOP()
|
|
|
|
|
#define TRACE_EVENT_COPY_BEGIN1(category, name, arg1_name, arg1_val) RTC_NOOP()
|
|
|
|
|
#define TRACE_EVENT_COPY_BEGIN2(category, name, arg1_name, arg1_val, \
|
|
|
|
|
arg2_name, arg2_val) RTC_NOOP()
|
|
|
|
|
arg2_name, arg2_val) \
|
|
|
|
|
RTC_NOOP()
|
|
|
|
|
|
|
|
|
|
#define TRACE_EVENT_END0(category, name) RTC_NOOP()
|
|
|
|
|
#define TRACE_EVENT_END1(category, name, arg1_name, arg1_val) RTC_NOOP()
|
|
|
|
|
#define TRACE_EVENT_END2(category, name, arg1_name, arg1_val, \
|
|
|
|
|
arg2_name, arg2_val) RTC_NOOP()
|
|
|
|
|
#define TRACE_EVENT_END2(category, name, arg1_name, arg1_val, arg2_name, \
|
|
|
|
|
arg2_val) \
|
|
|
|
|
RTC_NOOP()
|
|
|
|
|
#define TRACE_EVENT_COPY_END0(category, name) RTC_NOOP()
|
|
|
|
|
#define TRACE_EVENT_COPY_END1(category, name, arg1_name, arg1_val) RTC_NOOP()
|
|
|
|
|
#define TRACE_EVENT_COPY_END2(category, name, arg1_name, arg1_val, \
|
|
|
|
|
arg2_name, arg2_val) RTC_NOOP()
|
|
|
|
|
#define TRACE_EVENT_COPY_END2(category, name, arg1_name, arg1_val, arg2_name, \
|
|
|
|
|
arg2_val) \
|
|
|
|
|
RTC_NOOP()
|
|
|
|
|
|
|
|
|
|
#define TRACE_COUNTER1(category, name, value) RTC_NOOP()
|
|
|
|
|
#define TRACE_COPY_COUNTER1(category, name, value) RTC_NOOP()
|
|
|
|
|
|
|
|
|
|
#define TRACE_COUNTER2(category, name, value1_name, value1_val, \
|
|
|
|
|
value2_name, value2_val) RTC_NOOP()
|
|
|
|
|
#define TRACE_COUNTER2(category, name, value1_name, value1_val, value2_name, \
|
|
|
|
|
value2_val) \
|
|
|
|
|
RTC_NOOP()
|
|
|
|
|
#define TRACE_COPY_COUNTER2(category, name, value1_name, value1_val, \
|
|
|
|
|
value2_name, value2_val) RTC_NOOP()
|
|
|
|
|
value2_name, value2_val) \
|
|
|
|
|
RTC_NOOP()
|
|
|
|
|
|
|
|
|
|
#define TRACE_COUNTER_ID1(category, name, id, value) RTC_NOOP()
|
|
|
|
|
#define TRACE_COPY_COUNTER_ID1(category, name, id, value) RTC_NOOP()
|
|
|
|
|
|
|
|
|
|
#define TRACE_COUNTER_ID2(category, name, id, value1_name, value1_val, \
|
|
|
|
|
value2_name, value2_val) RTC_NOOP()
|
|
|
|
|
value2_name, value2_val) \
|
|
|
|
|
RTC_NOOP()
|
|
|
|
|
#define TRACE_COPY_COUNTER_ID2(category, name, id, value1_name, value1_val, \
|
|
|
|
|
value2_name, value2_val) RTC_NOOP()
|
|
|
|
|
value2_name, value2_val) \
|
|
|
|
|
RTC_NOOP()
|
|
|
|
|
|
|
|
|
|
#define TRACE_EVENT_ASYNC_BEGIN0(category, name, id) RTC_NOOP()
|
|
|
|
|
#define TRACE_EVENT_ASYNC_BEGIN1(category, name, id, arg1_name, arg1_val) \
|
|
|
|
|
RTC_NOOP()
|
|
|
|
|
#define TRACE_EVENT_ASYNC_BEGIN2(category, name, id, arg1_name, arg1_val, \
|
|
|
|
|
arg2_name, arg2_val) RTC_NOOP()
|
|
|
|
|
arg2_name, arg2_val) \
|
|
|
|
|
RTC_NOOP()
|
|
|
|
|
#define TRACE_EVENT_COPY_ASYNC_BEGIN0(category, name, id) RTC_NOOP()
|
|
|
|
|
#define TRACE_EVENT_COPY_ASYNC_BEGIN1(category, name, id, arg1_name, arg1_val) \
|
|
|
|
|
RTC_NOOP()
|
|
|
|
|
#define TRACE_EVENT_COPY_ASYNC_BEGIN2(category, name, id, arg1_name, arg1_val, \
|
|
|
|
|
arg2_name, arg2_val) RTC_NOOP()
|
|
|
|
|
arg2_name, arg2_val) \
|
|
|
|
|
RTC_NOOP()
|
|
|
|
|
|
|
|
|
|
#define TRACE_EVENT_ASYNC_STEP0(category, name, id, step) RTC_NOOP()
|
|
|
|
|
#define TRACE_EVENT_ASYNC_STEP1(category, name, id, step, \
|
|
|
|
|
arg1_name, arg1_val) RTC_NOOP()
|
|
|
|
|
#define TRACE_EVENT_ASYNC_STEP1(category, name, id, step, arg1_name, arg1_val) \
|
|
|
|
|
RTC_NOOP()
|
|
|
|
|
#define TRACE_EVENT_COPY_ASYNC_STEP0(category, name, id, step) RTC_NOOP()
|
|
|
|
|
#define TRACE_EVENT_COPY_ASYNC_STEP1(category, name, id, step, \
|
|
|
|
|
arg1_name, arg1_val) RTC_NOOP()
|
|
|
|
|
#define TRACE_EVENT_COPY_ASYNC_STEP1(category, name, id, step, arg1_name, \
|
|
|
|
|
arg1_val) \
|
|
|
|
|
RTC_NOOP()
|
|
|
|
|
|
|
|
|
|
#define TRACE_EVENT_ASYNC_END0(category, name, id) RTC_NOOP()
|
|
|
|
|
#define TRACE_EVENT_ASYNC_END1(category, name, id, arg1_name, arg1_val) \
|
|
|
|
|
RTC_NOOP()
|
|
|
|
|
#define TRACE_EVENT_ASYNC_END2(category, name, id, arg1_name, arg1_val, \
|
|
|
|
|
arg2_name, arg2_val) RTC_NOOP()
|
|
|
|
|
arg2_name, arg2_val) \
|
|
|
|
|
RTC_NOOP()
|
|
|
|
|
#define TRACE_EVENT_COPY_ASYNC_END0(category, name, id) RTC_NOOP()
|
|
|
|
|
#define TRACE_EVENT_COPY_ASYNC_END1(category, name, id, arg1_name, arg1_val) \
|
|
|
|
|
RTC_NOOP()
|
|
|
|
|
#define TRACE_EVENT_COPY_ASYNC_END2(category, name, id, arg1_name, arg1_val, \
|
|
|
|
|
arg2_name, arg2_val) RTC_NOOP()
|
|
|
|
|
arg2_name, arg2_val) \
|
|
|
|
|
RTC_NOOP()
|
|
|
|
|
|
|
|
|
|
#define TRACE_EVENT_FLOW_BEGIN0(category, name, id) RTC_NOOP()
|
|
|
|
|
#define TRACE_EVENT_FLOW_BEGIN1(category, name, id, arg1_name, arg1_val) \
|
|
|
|
|
RTC_NOOP()
|
|
|
|
|
#define TRACE_EVENT_FLOW_BEGIN2(category, name, id, arg1_name, arg1_val, \
|
|
|
|
|
arg2_name, arg2_val) RTC_NOOP()
|
|
|
|
|
arg2_name, arg2_val) \
|
|
|
|
|
RTC_NOOP()
|
|
|
|
|
#define TRACE_EVENT_COPY_FLOW_BEGIN0(category, name, id) RTC_NOOP()
|
|
|
|
|
#define TRACE_EVENT_COPY_FLOW_BEGIN1(category, name, id, arg1_name, arg1_val) \
|
|
|
|
|
RTC_NOOP()
|
|
|
|
|
#define TRACE_EVENT_COPY_FLOW_BEGIN2(category, name, id, arg1_name, arg1_val, \
|
|
|
|
|
arg2_name, arg2_val) RTC_NOOP()
|
|
|
|
|
arg2_name, arg2_val) \
|
|
|
|
|
RTC_NOOP()
|
|
|
|
|
|
|
|
|
|
#define TRACE_EVENT_FLOW_STEP0(category, name, id, step) RTC_NOOP()
|
|
|
|
|
#define TRACE_EVENT_FLOW_STEP1(category, name, id, step, \
|
|
|
|
|
arg1_name, arg1_val) RTC_NOOP()
|
|
|
|
|
#define TRACE_EVENT_FLOW_STEP1(category, name, id, step, arg1_name, arg1_val) \
|
|
|
|
|
RTC_NOOP()
|
|
|
|
|
#define TRACE_EVENT_COPY_FLOW_STEP0(category, name, id, step) RTC_NOOP()
|
|
|
|
|
#define TRACE_EVENT_COPY_FLOW_STEP1(category, name, id, step, \
|
|
|
|
|
arg1_name, arg1_val) RTC_NOOP()
|
|
|
|
|
#define TRACE_EVENT_COPY_FLOW_STEP1(category, name, id, step, arg1_name, \
|
|
|
|
|
arg1_val) \
|
|
|
|
|
RTC_NOOP()
|
|
|
|
|
|
|
|
|
|
#define TRACE_EVENT_FLOW_END0(category, name, id) RTC_NOOP()
|
|
|
|
|
#define TRACE_EVENT_FLOW_END1(category, name, id, arg1_name, arg1_val) \
|
|
|
|
|
RTC_NOOP()
|
|
|
|
|
#define TRACE_EVENT_FLOW_END2(category, name, id, arg1_name, arg1_val, \
|
|
|
|
|
arg2_name, arg2_val) RTC_NOOP()
|
|
|
|
|
arg2_name, arg2_val) \
|
|
|
|
|
RTC_NOOP()
|
|
|
|
|
#define TRACE_EVENT_COPY_FLOW_END0(category, name, id) RTC_NOOP()
|
|
|
|
|
#define TRACE_EVENT_COPY_FLOW_END1(category, name, id, arg1_name, arg1_val) \
|
|
|
|
|
RTC_NOOP()
|
|
|
|
|
#define TRACE_EVENT_COPY_FLOW_END2(category, name, id, arg1_name, arg1_val, \
|
|
|
|
|
arg2_name, arg2_val) RTC_NOOP()
|
|
|
|
|
arg2_name, arg2_val) \
|
|
|
|
|
RTC_NOOP()
|
|
|
|
|
|
|
|
|
|
#define TRACE_EVENT_API_GET_CATEGORY_ENABLED ""
|
|
|
|
|
|
|
|
|
|