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 | } |
