• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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  */
5 
6 /* From dev/ppb_trace_event_dev.idl modified Tue Jun 25 16:12:08 2013. */
7 
8 #ifndef PPAPI_C_DEV_PPB_TRACE_EVENT_DEV_H_
9 #define PPAPI_C_DEV_PPB_TRACE_EVENT_DEV_H_
10 
11 #include "ppapi/c/pp_macros.h"
12 #include "ppapi/c/pp_stdint.h"
13 
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
17 
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.
22  */
23 
24 
25 /**
26  * @addtogroup Typedefs
27  * @{
28  */
29 /**
30  * A trace event timestamp.
31  */
32 typedef int64_t PP_TraceEventTime;
33 /**
34  * @}
35  */
36 
37 /**
38  * @addtogroup Interfaces
39  * @{
40  */
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.
46    *
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.
50    */
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.
58    */
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.
73    */
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.
89    */
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.
94    */
95   void (*SetThreadName)(const char* thread_name);
96 };
97 
98 typedef struct PPB_Trace_Event_Dev_0_2 PPB_Trace_Event_Dev;
99 
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);
112 };
113 /**
114  * @}
115  */
116 
117 #endif  /* PPAPI_C_DEV_PPB_TRACE_EVENT_DEV_H_ */
118 
119