diff options
Diffstat (limited to 'kernel/trace/trace_functions.c')
-rw-r--r-- | kernel/trace/trace_functions.c | 35 |
1 files changed, 22 insertions, 13 deletions
diff --git a/kernel/trace/trace_functions.c b/kernel/trace/trace_functions.c index 2c8961b35401..797f087183c5 100644 --- a/kernel/trace/trace_functions.c +++ b/kernel/trace/trace_functions.c | |||
@@ -328,21 +328,24 @@ static void update_traceon_count(struct ftrace_probe_ops *ops, | |||
328 | 328 | ||
329 | static void | 329 | static void |
330 | ftrace_traceon_count(unsigned long ip, unsigned long parent_ip, | 330 | ftrace_traceon_count(unsigned long ip, unsigned long parent_ip, |
331 | struct ftrace_probe_ops *ops, void **data) | 331 | struct trace_array *tr, struct ftrace_probe_ops *ops, |
332 | void **data) | ||
332 | { | 333 | { |
333 | update_traceon_count(ops, ip, 1); | 334 | update_traceon_count(ops, ip, 1); |
334 | } | 335 | } |
335 | 336 | ||
336 | static void | 337 | static void |
337 | ftrace_traceoff_count(unsigned long ip, unsigned long parent_ip, | 338 | ftrace_traceoff_count(unsigned long ip, unsigned long parent_ip, |
338 | struct ftrace_probe_ops *ops, void **data) | 339 | struct trace_array *tr, struct ftrace_probe_ops *ops, |
340 | void **data) | ||
339 | { | 341 | { |
340 | update_traceon_count(ops, ip, 0); | 342 | update_traceon_count(ops, ip, 0); |
341 | } | 343 | } |
342 | 344 | ||
343 | static void | 345 | static void |
344 | ftrace_traceon(unsigned long ip, unsigned long parent_ip, | 346 | ftrace_traceon(unsigned long ip, unsigned long parent_ip, |
345 | struct ftrace_probe_ops *ops, void **data) | 347 | struct trace_array *tr, struct ftrace_probe_ops *ops, |
348 | void **data) | ||
346 | { | 349 | { |
347 | if (tracing_is_on()) | 350 | if (tracing_is_on()) |
348 | return; | 351 | return; |
@@ -352,7 +355,8 @@ ftrace_traceon(unsigned long ip, unsigned long parent_ip, | |||
352 | 355 | ||
353 | static void | 356 | static void |
354 | ftrace_traceoff(unsigned long ip, unsigned long parent_ip, | 357 | ftrace_traceoff(unsigned long ip, unsigned long parent_ip, |
355 | struct ftrace_probe_ops *ops, void **data) | 358 | struct trace_array *tr, struct ftrace_probe_ops *ops, |
359 | void **data) | ||
356 | { | 360 | { |
357 | if (!tracing_is_on()) | 361 | if (!tracing_is_on()) |
358 | return; | 362 | return; |
@@ -371,14 +375,16 @@ ftrace_traceoff(unsigned long ip, unsigned long parent_ip, | |||
371 | 375 | ||
372 | static void | 376 | static void |
373 | ftrace_stacktrace(unsigned long ip, unsigned long parent_ip, | 377 | ftrace_stacktrace(unsigned long ip, unsigned long parent_ip, |
374 | struct ftrace_probe_ops *ops, void **data) | 378 | struct trace_array *tr, struct ftrace_probe_ops *ops, |
379 | void **data) | ||
375 | { | 380 | { |
376 | trace_dump_stack(STACK_SKIP); | 381 | trace_dump_stack(STACK_SKIP); |
377 | } | 382 | } |
378 | 383 | ||
379 | static void | 384 | static void |
380 | ftrace_stacktrace_count(unsigned long ip, unsigned long parent_ip, | 385 | ftrace_stacktrace_count(unsigned long ip, unsigned long parent_ip, |
381 | struct ftrace_probe_ops *ops, void **data) | 386 | struct trace_array *tr, struct ftrace_probe_ops *ops, |
387 | void **data) | ||
382 | { | 388 | { |
383 | struct ftrace_func_mapper *mapper = ops->private_data; | 389 | struct ftrace_func_mapper *mapper = ops->private_data; |
384 | long *count; | 390 | long *count; |
@@ -436,7 +442,8 @@ static int update_count(struct ftrace_probe_ops *ops, unsigned long ip) | |||
436 | 442 | ||
437 | static void | 443 | static void |
438 | ftrace_dump_probe(unsigned long ip, unsigned long parent_ip, | 444 | ftrace_dump_probe(unsigned long ip, unsigned long parent_ip, |
439 | struct ftrace_probe_ops *ops, void **data) | 445 | struct trace_array *tr, struct ftrace_probe_ops *ops, |
446 | void **data) | ||
440 | { | 447 | { |
441 | if (update_count(ops, ip)) | 448 | if (update_count(ops, ip)) |
442 | ftrace_dump(DUMP_ALL); | 449 | ftrace_dump(DUMP_ALL); |
@@ -445,7 +452,8 @@ ftrace_dump_probe(unsigned long ip, unsigned long parent_ip, | |||
445 | /* Only dump the current CPU buffer. */ | 452 | /* Only dump the current CPU buffer. */ |
446 | static void | 453 | static void |
447 | ftrace_cpudump_probe(unsigned long ip, unsigned long parent_ip, | 454 | ftrace_cpudump_probe(unsigned long ip, unsigned long parent_ip, |
448 | struct ftrace_probe_ops *ops, void **data) | 455 | struct trace_array *tr, struct ftrace_probe_ops *ops, |
456 | void **data) | ||
449 | { | 457 | { |
450 | if (update_count(ops, ip)) | 458 | if (update_count(ops, ip)) |
451 | ftrace_dump(DUMP_ORIG); | 459 | ftrace_dump(DUMP_ORIG); |
@@ -473,7 +481,8 @@ ftrace_probe_print(const char *name, struct seq_file *m, | |||
473 | 481 | ||
474 | static int | 482 | static int |
475 | ftrace_traceon_print(struct seq_file *m, unsigned long ip, | 483 | ftrace_traceon_print(struct seq_file *m, unsigned long ip, |
476 | struct ftrace_probe_ops *ops, void *data) | 484 | struct ftrace_probe_ops *ops, |
485 | void *data) | ||
477 | { | 486 | { |
478 | return ftrace_probe_print("traceon", m, ip, ops); | 487 | return ftrace_probe_print("traceon", m, ip, ops); |
479 | } | 488 | } |
@@ -508,8 +517,8 @@ ftrace_cpudump_print(struct seq_file *m, unsigned long ip, | |||
508 | 517 | ||
509 | 518 | ||
510 | static int | 519 | static int |
511 | ftrace_count_init(struct ftrace_probe_ops *ops, unsigned long ip, | 520 | ftrace_count_init(struct ftrace_probe_ops *ops, struct trace_array *tr, |
512 | void *data) | 521 | unsigned long ip, void *data) |
513 | { | 522 | { |
514 | struct ftrace_func_mapper *mapper = ops->private_data; | 523 | struct ftrace_func_mapper *mapper = ops->private_data; |
515 | 524 | ||
@@ -517,8 +526,8 @@ ftrace_count_init(struct ftrace_probe_ops *ops, unsigned long ip, | |||
517 | } | 526 | } |
518 | 527 | ||
519 | static void | 528 | static void |
520 | ftrace_count_free(struct ftrace_probe_ops *ops, unsigned long ip, | 529 | ftrace_count_free(struct ftrace_probe_ops *ops, struct trace_array *tr, |
521 | void **_data) | 530 | unsigned long ip, void **_data) |
522 | { | 531 | { |
523 | struct ftrace_func_mapper *mapper = ops->private_data; | 532 | struct ftrace_func_mapper *mapper = ops->private_data; |
524 | 533 | ||