diff options
Diffstat (limited to 'kernel/trace/trace_branch.c')
-rw-r--r-- | kernel/trace/trace_branch.c | 69 |
1 files changed, 28 insertions, 41 deletions
diff --git a/kernel/trace/trace_branch.c b/kernel/trace/trace_branch.c index 4785a3b9bc4a..da5cf3e5581b 100644 --- a/kernel/trace/trace_branch.c +++ b/kernel/trace/trace_branch.c | |||
@@ -306,19 +306,6 @@ static int annotated_branch_stat_cmp(void *p1, void *p2) | |||
306 | } | 306 | } |
307 | 307 | ||
308 | #ifdef CONFIG_PROFILE_ALL_BRANCHES | 308 | #ifdef CONFIG_PROFILE_ALL_BRANCHES |
309 | enum { | ||
310 | TRACE_BRANCH_OPT_ALL = 0x1 | ||
311 | }; | ||
312 | |||
313 | static struct tracer_opt branch_opts[] = { | ||
314 | { TRACER_OPT(stat_all_branch, TRACE_BRANCH_OPT_ALL) }, | ||
315 | { } | ||
316 | }; | ||
317 | |||
318 | static struct tracer_flags branch_flags = { | ||
319 | .val = 0, | ||
320 | .opts = branch_opts | ||
321 | }; | ||
322 | 309 | ||
323 | extern unsigned long __start_branch_profile[]; | 310 | extern unsigned long __start_branch_profile[]; |
324 | extern unsigned long __stop_branch_profile[]; | 311 | extern unsigned long __stop_branch_profile[]; |
@@ -352,28 +339,36 @@ all_branch_stat_next(void *v, int idx) | |||
352 | return p; | 339 | return p; |
353 | } | 340 | } |
354 | 341 | ||
355 | static int branch_set_flag(u32 old_flags, u32 bit, int set) | 342 | static struct tracer_stat branch_stats[] = { |
356 | { | 343 | {.name = "annotated", |
357 | if (bit == TRACE_BRANCH_OPT_ALL) { | 344 | .stat_start = annotated_branch_stat_start, |
358 | if (set) { | 345 | .stat_next = annotated_branch_stat_next, |
359 | branch_trace.stat_headers = all_branch_stat_headers; | 346 | .stat_cmp = annotated_branch_stat_cmp, |
360 | branch_trace.stat_start = all_branch_stat_start; | 347 | .stat_headers = annotated_branch_stat_headers, |
361 | branch_trace.stat_next = all_branch_stat_next; | 348 | .stat_show = branch_stat_show}, |
362 | branch_trace.stat_cmp = NULL; | ||
363 | } else { | ||
364 | branch_trace.stat_headers = | ||
365 | annotated_branch_stat_headers; | ||
366 | branch_trace.stat_start = annotated_branch_stat_start; | ||
367 | branch_trace.stat_next = annotated_branch_stat_next; | ||
368 | branch_trace.stat_cmp = annotated_branch_stat_cmp; | ||
369 | } | ||
370 | init_tracer_stat(&branch_trace); | ||
371 | } | ||
372 | return 0; | ||
373 | } | ||
374 | 349 | ||
350 | {.name = "all", | ||
351 | .stat_start = all_branch_stat_start, | ||
352 | .stat_next = all_branch_stat_next, | ||
353 | .stat_headers = all_branch_stat_headers, | ||
354 | .stat_show = branch_stat_show}, | ||
355 | |||
356 | { } | ||
357 | }; | ||
358 | #else | ||
359 | static struct tracer_stat branch_stats[] = { | ||
360 | {.name = "annotated", | ||
361 | .stat_start = annotated_branch_stat_start, | ||
362 | .stat_next = annotated_branch_stat_next, | ||
363 | .stat_cmp = annotated_branch_stat_cmp, | ||
364 | .stat_headers = annotated_branch_stat_headers, | ||
365 | .stat_show = branch_stat_show}, | ||
366 | |||
367 | { } | ||
368 | }; | ||
375 | #endif /* CONFIG_PROFILE_ALL_BRANCHES */ | 369 | #endif /* CONFIG_PROFILE_ALL_BRANCHES */ |
376 | 370 | ||
371 | |||
377 | static struct tracer branch_trace __read_mostly = | 372 | static struct tracer branch_trace __read_mostly = |
378 | { | 373 | { |
379 | .name = "branch", | 374 | .name = "branch", |
@@ -383,16 +378,8 @@ static struct tracer branch_trace __read_mostly = | |||
383 | #ifdef CONFIG_FTRACE_SELFTEST | 378 | #ifdef CONFIG_FTRACE_SELFTEST |
384 | .selftest = trace_selftest_startup_branch, | 379 | .selftest = trace_selftest_startup_branch, |
385 | #endif /* CONFIG_FTRACE_SELFTEST */ | 380 | #endif /* CONFIG_FTRACE_SELFTEST */ |
386 | #endif /* CONFIG_BRANCH_TRACER */ | ||
387 | .stat_start = annotated_branch_stat_start, | ||
388 | .stat_next = annotated_branch_stat_next, | ||
389 | .stat_show = branch_stat_show, | ||
390 | .stat_headers = annotated_branch_stat_headers, | ||
391 | .stat_cmp = annotated_branch_stat_cmp, | ||
392 | #ifdef CONFIG_PROFILE_ALL_BRANCHES | ||
393 | .flags = &branch_flags, | ||
394 | .set_flag = branch_set_flag, | ||
395 | #endif | 381 | #endif |
382 | .stats = branch_stats | ||
396 | }; | 383 | }; |
397 | 384 | ||
398 | __init static int init_branch_trace(void) | 385 | __init static int init_branch_trace(void) |