34 #ifndef GRPC_CORE_PROFILING_TIMERS_H
35 #define GRPC_CORE_PROFILING_TIMERS_H
41 void grpc_timers_global_init(
void);
42 void grpc_timers_global_destroy(
void);
44 void grpc_timer_add_mark(
int tag,
const char *tagstr,
void *
id,
45 const char *file,
int line);
46 void grpc_timer_add_important_mark(
int tag,
const char *tagstr,
void *
id,
47 const char *file,
int line);
48 void grpc_timer_begin(
int tag,
const char *tagstr,
void *
id,
const char *file,
50 void grpc_timer_end(
int tag,
const char *tagstr,
void *
id,
const char *file,
53 enum grpc_profiling_tags {
55 GRPC_PTAG_IGNORE_THRESHOLD = 1000000,
58 GRPC_PTAG_PROTO_SERIALIZE = 100 + GRPC_PTAG_IGNORE_THRESHOLD,
59 GRPC_PTAG_PROTO_DESERIALIZE = 101 + GRPC_PTAG_IGNORE_THRESHOLD,
62 GRPC_PTAG_HANDLE_READ = 200 + GRPC_PTAG_IGNORE_THRESHOLD,
63 GRPC_PTAG_SENDMSG = 201 + GRPC_PTAG_IGNORE_THRESHOLD,
64 GRPC_PTAG_RECVMSG = 202 + GRPC_PTAG_IGNORE_THRESHOLD,
65 GRPC_PTAG_POLL_FINISHED = 203 + GRPC_PTAG_IGNORE_THRESHOLD,
66 GRPC_PTAG_TCP_CB_WRITE = 204 + GRPC_PTAG_IGNORE_THRESHOLD,
67 GRPC_PTAG_TCP_WRITE = 205 + GRPC_PTAG_IGNORE_THRESHOLD,
68 GRPC_PTAG_CALL_ON_DONE_RECV = 206 + GRPC_PTAG_IGNORE_THRESHOLD,
71 GRPC_PTAG_CPP_CALL_CREATED = 300 + GRPC_PTAG_IGNORE_THRESHOLD,
72 GRPC_PTAG_CPP_PERFORM_OPS = 301 + GRPC_PTAG_IGNORE_THRESHOLD,
75 GRPC_PTAG_HTTP2_UNLOCK = 401 + GRPC_PTAG_IGNORE_THRESHOLD,
76 GRPC_PTAG_HTTP2_UNLOCK_CLEANUP = 402 + GRPC_PTAG_IGNORE_THRESHOLD,
81 GRPC_PTAG_OTHER_BASE = 1024
84 #if !(defined(GRPC_STAP_PROFILER) + defined(GRPC_BASIC_PROFILER))
86 #define GRPC_TIMER_MARK(tag, id) \
90 #define GRPC_TIMER_IMPORTANT_MARK(tag, id) \
94 #define GRPC_TIMER_BEGIN(tag, id) \
98 #define GRPC_TIMER_END(tag, id) \
104 #if defined(GRPC_STAP_PROFILER) && defined(GRPC_BASIC_PROFILER)
105 #error "GRPC_STAP_PROFILER and GRPC_BASIC_PROFILER are mutually exclusive."
109 #define GRPC_TIMER_MARK(tag, id) \
110 if (tag < GRPC_PTAG_IGNORE_THRESHOLD) { \
111 grpc_timer_add_mark(tag, #tag, ((void *)(gpr_intptr)(id)), __FILE__, \
115 #define GRPC_TIMER_IMPORTANT_MARK(tag, id) \
116 if (tag < GRPC_PTAG_IGNORE_THRESHOLD) { \
117 grpc_timer_add_important_mark(tag, #tag, ((void *)(gpr_intptr)(id)), \
118 __FILE__, __LINE__); \
121 #define GRPC_TIMER_BEGIN(tag, id) \
122 if (tag < GRPC_PTAG_IGNORE_THRESHOLD) { \
123 grpc_timer_begin(tag, #tag, ((void *)(gpr_intptr)(id)), __FILE__, \
127 #define GRPC_TIMER_END(tag, id) \
128 if (tag < GRPC_PTAG_IGNORE_THRESHOLD) { \
129 grpc_timer_end(tag, #tag, ((void *)(gpr_intptr)(id)), __FILE__, __LINE__); \
132 #ifdef GRPC_STAP_PROFILER
136 #ifdef GRPC_BASIC_PROFILER