1 /* Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 * Use of this source code is governed by a BSD-style license that can be
3 * found in the LICENSE file.
6 /* From dev/ppb_trace_event_dev.idl modified Tue Jun 25 16:12:08 2013. */
8 #ifndef PPAPI_C_DEV_PPB_TRACE_EVENT_DEV_H_
9 #define PPAPI_C_DEV_PPB_TRACE_EVENT_DEV_H_
11 #include "ppapi/c/pp_macros.h"
12 #include "ppapi/c/pp_stdint.h"
14 #define PPB_TRACE_EVENT_DEV_INTERFACE_0_1 "PPB_Trace_Event(Dev);0.1"
15 #define PPB_TRACE_EVENT_DEV_INTERFACE_0_2 "PPB_Trace_Event(Dev);0.2"
16 #define PPB_TRACE_EVENT_DEV_INTERFACE PPB_TRACE_EVENT_DEV_INTERFACE_0_2
20 * This file defines the <code>PPB_Trace_Event</code> interface. It is meant
21 * to be used in plugins as the API that trace macros from trace_event.h use.
26 * @addtogroup Typedefs
30 * A trace event timestamp.
32 typedef int64_t PP_TraceEventTime
;
38 * @addtogroup Interfaces
41 struct PPB_Trace_Event_Dev_0_2
{
43 * Gets a pointer to a character for identifying a category name in the
44 * tracing system as well as for being able to early exit in client-side
47 * NB: This mem_t return value should technically be const, but return values
48 * for Pepper IDL of mem_t type are not const. The same is true for the arg
49 * |category_enabled| for AddTraceEvent.
51 void* (*GetCategoryEnabled
)(const char* category_name
);
53 * Adds a trace event to the platform tracing system. This function call is
54 * usually the result of a TRACE_* macro from trace_event.h when tracing and
55 * the category of the particular trace are enabled. It is not advisable to
56 * call this function on its own; it is really only meant to be used by the
59 void (*AddTraceEvent
)(int8_t phase
,
60 const void* category_enabled
,
64 const char* arg_names
[],
65 const uint8_t arg_types
[],
66 const uint64_t arg_values
[],
69 * Version of the above interface that allows specifying a custom thread id
70 * and timestamp. This is useful for when tracing data cannot be registered
71 * in real time. For example, this could be used by storing timestamps
72 * internally and then registering the events retroactively.
74 void (*AddTraceEventWithThreadIdAndTimestamp
)(int8_t phase
,
75 const void* category_enabled
,
79 PP_TraceEventTime timestamp
,
81 const char* arg_names
[],
82 const uint8_t arg_types
[],
83 const uint64_t arg_values
[],
86 * Get the current clock value. Since this uses the same function as the trace
87 * events use internally, it can be used to create events with explicit time
90 PP_TraceEventTime (*Now
)(void);
92 * Sets the thread name of the calling thread in the tracing system so it will
93 * show up properly in chrome://tracing.
95 void (*SetThreadName
)(const char* thread_name
);
98 typedef struct PPB_Trace_Event_Dev_0_2 PPB_Trace_Event_Dev
;
100 struct PPB_Trace_Event_Dev_0_1
{
101 void* (*GetCategoryEnabled
)(const char* category_name
);
102 void (*AddTraceEvent
)(int8_t phase
,
103 const void* category_enabled
,
107 const char* arg_names
[],
108 const uint8_t arg_types
[],
109 const uint64_t arg_values
[],
111 void (*SetThreadName
)(const char* thread_name
);
117 #endif /* PPAPI_C_DEV_PPB_TRACE_EVENT_DEV_H_ */