Roll src/third_party/WebKit 06cb9e9:a978ee5 (svn 202558:202559)
[chromium-blink-merge.git] / ppapi / c / dev / ppb_trace_event_dev.h
blob0fb8cc5a68bb656e025ee7dc3e9de3efc26972d6
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.
4 */
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
18 /**
19 * @file
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.
25 /**
26 * @addtogroup Typedefs
27 * @{
29 /**
30 * A trace event timestamp.
32 typedef int64_t PP_TraceEventTime;
33 /**
34 * @}
37 /**
38 * @addtogroup Interfaces
39 * @{
41 struct PPB_Trace_Event_Dev_0_2 {
42 /**
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
45 * tracing code.
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);
52 /**
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
57 * trace macros.
59 void (*AddTraceEvent)(int8_t phase,
60 const void* category_enabled,
61 const char* name,
62 uint64_t id,
63 uint32_t num_args,
64 const char* arg_names[],
65 const uint8_t arg_types[],
66 const uint64_t arg_values[],
67 uint8_t flags);
68 /**
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,
76 const char* name,
77 uint64_t id,
78 int32_t thread_id,
79 PP_TraceEventTime timestamp,
80 uint32_t num_args,
81 const char* arg_names[],
82 const uint8_t arg_types[],
83 const uint64_t arg_values[],
84 uint8_t flags);
85 /**
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
88 * stamps.
90 PP_TraceEventTime (*Now)(void);
91 /**
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,
104 const char* name,
105 uint64_t id,
106 uint32_t num_args,
107 const char* arg_names[],
108 const uint8_t arg_types[],
109 const uint64_t arg_values[],
110 uint8_t flags);
111 void (*SetThreadName)(const char* thread_name);
114 * @}
117 #endif /* PPAPI_C_DEV_PPB_TRACE_EVENT_DEV_H_ */