diff options
Diffstat (limited to 'kernel/trace/trace.h')
-rw-r--r-- | kernel/trace/trace.h | 42 |
1 files changed, 28 insertions, 14 deletions
diff --git a/kernel/trace/trace.h b/kernel/trace/trace.h index 3abd645e8af2..f96f4e787ff3 100644 --- a/kernel/trace/trace.h +++ b/kernel/trace/trace.h | |||
@@ -25,9 +25,11 @@ enum trace_type { | |||
25 | TRACE_BRANCH, | 25 | TRACE_BRANCH, |
26 | TRACE_BOOT_CALL, | 26 | TRACE_BOOT_CALL, |
27 | TRACE_BOOT_RET, | 27 | TRACE_BOOT_RET, |
28 | TRACE_FN_RET, | 28 | TRACE_GRAPH_RET, |
29 | TRACE_GRAPH_ENT, | ||
29 | TRACE_USER_STACK, | 30 | TRACE_USER_STACK, |
30 | TRACE_BTS, | 31 | TRACE_BTS, |
32 | TRACE_POWER, | ||
31 | 33 | ||
32 | __TRACE_LAST_TYPE | 34 | __TRACE_LAST_TYPE |
33 | }; | 35 | }; |
@@ -56,14 +58,16 @@ struct ftrace_entry { | |||
56 | unsigned long parent_ip; | 58 | unsigned long parent_ip; |
57 | }; | 59 | }; |
58 | 60 | ||
61 | /* Function call entry */ | ||
62 | struct ftrace_graph_ent_entry { | ||
63 | struct trace_entry ent; | ||
64 | struct ftrace_graph_ent graph_ent; | ||
65 | }; | ||
66 | |||
59 | /* Function return entry */ | 67 | /* Function return entry */ |
60 | struct ftrace_ret_entry { | 68 | struct ftrace_graph_ret_entry { |
61 | struct trace_entry ent; | 69 | struct trace_entry ent; |
62 | unsigned long ip; | 70 | struct ftrace_graph_ret ret; |
63 | unsigned long parent_ip; | ||
64 | unsigned long long calltime; | ||
65 | unsigned long long rettime; | ||
66 | unsigned long overrun; | ||
67 | }; | 71 | }; |
68 | extern struct tracer boot_tracer; | 72 | extern struct tracer boot_tracer; |
69 | 73 | ||
@@ -160,6 +164,11 @@ struct bts_entry { | |||
160 | unsigned long to; | 164 | unsigned long to; |
161 | }; | 165 | }; |
162 | 166 | ||
167 | struct trace_power { | ||
168 | struct trace_entry ent; | ||
169 | struct power_trace state_data; | ||
170 | }; | ||
171 | |||
163 | /* | 172 | /* |
164 | * trace_flag_type is an enumeration that holds different | 173 | * trace_flag_type is an enumeration that holds different |
165 | * states when a trace occurs. These are: | 174 | * states when a trace occurs. These are: |
@@ -264,8 +273,12 @@ extern void __ftrace_bad_type(void); | |||
264 | IF_ASSIGN(var, ent, struct trace_boot_call, TRACE_BOOT_CALL);\ | 273 | IF_ASSIGN(var, ent, struct trace_boot_call, TRACE_BOOT_CALL);\ |
265 | IF_ASSIGN(var, ent, struct trace_boot_ret, TRACE_BOOT_RET);\ | 274 | IF_ASSIGN(var, ent, struct trace_boot_ret, TRACE_BOOT_RET);\ |
266 | IF_ASSIGN(var, ent, struct trace_branch, TRACE_BRANCH); \ | 275 | IF_ASSIGN(var, ent, struct trace_branch, TRACE_BRANCH); \ |
267 | IF_ASSIGN(var, ent, struct ftrace_ret_entry, TRACE_FN_RET);\ | 276 | IF_ASSIGN(var, ent, struct ftrace_graph_ent_entry, \ |
277 | TRACE_GRAPH_ENT); \ | ||
278 | IF_ASSIGN(var, ent, struct ftrace_graph_ret_entry, \ | ||
279 | TRACE_GRAPH_RET); \ | ||
268 | IF_ASSIGN(var, ent, struct bts_entry, TRACE_BTS);\ | 280 | IF_ASSIGN(var, ent, struct bts_entry, TRACE_BTS);\ |
281 | IF_ASSIGN(var, ent, struct trace_power, TRACE_POWER); \ | ||
269 | __ftrace_bad_type(); \ | 282 | __ftrace_bad_type(); \ |
270 | } while (0) | 283 | } while (0) |
271 | 284 | ||
@@ -397,9 +410,9 @@ void trace_function(struct trace_array *tr, | |||
397 | unsigned long ip, | 410 | unsigned long ip, |
398 | unsigned long parent_ip, | 411 | unsigned long parent_ip, |
399 | unsigned long flags, int pc); | 412 | unsigned long flags, int pc); |
400 | void | ||
401 | trace_function_return(struct ftrace_retfunc *trace); | ||
402 | 413 | ||
414 | void trace_graph_return(struct ftrace_graph_ret *trace); | ||
415 | void trace_graph_entry(struct ftrace_graph_ent *trace); | ||
403 | void trace_bts(struct trace_array *tr, | 416 | void trace_bts(struct trace_array *tr, |
404 | unsigned long from, | 417 | unsigned long from, |
405 | unsigned long to); | 418 | unsigned long to); |
@@ -444,6 +457,7 @@ struct tracer_switch_ops { | |||
444 | struct tracer_switch_ops *next; | 457 | struct tracer_switch_ops *next; |
445 | }; | 458 | }; |
446 | 459 | ||
460 | char *trace_find_cmdline(int pid); | ||
447 | #endif /* CONFIG_CONTEXT_SWITCH_TRACER */ | 461 | #endif /* CONFIG_CONTEXT_SWITCH_TRACER */ |
448 | 462 | ||
449 | #ifdef CONFIG_DYNAMIC_FTRACE | 463 | #ifdef CONFIG_DYNAMIC_FTRACE |
@@ -489,11 +503,11 @@ extern int trace_vprintk(unsigned long ip, const char *fmt, va_list args); | |||
489 | extern unsigned long trace_flags; | 503 | extern unsigned long trace_flags; |
490 | 504 | ||
491 | /* Standard output formatting function used for function return traces */ | 505 | /* Standard output formatting function used for function return traces */ |
492 | #ifdef CONFIG_FUNCTION_RET_TRACER | 506 | #ifdef CONFIG_FUNCTION_GRAPH_TRACER |
493 | extern enum print_line_t print_return_function(struct trace_iterator *iter); | 507 | extern enum print_line_t print_graph_function(struct trace_iterator *iter); |
494 | #else | 508 | #else |
495 | static inline enum print_line_t | 509 | static inline enum print_line_t |
496 | print_return_function(struct trace_iterator *iter) | 510 | print_graph_function(struct trace_iterator *iter) |
497 | { | 511 | { |
498 | return TRACE_TYPE_UNHANDLED; | 512 | return TRACE_TYPE_UNHANDLED; |
499 | } | 513 | } |