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 */
32typedef int64_t PP_TraceEventTime;
33/**
34 * @}
35 */
36
37/**
38 * @addtogroup Interfaces
39 * @{
40 */
41struct 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
98typedef struct PPB_Trace_Event_Dev_0_2 PPB_Trace_Event_Dev;
99
100struct 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