diff options
author | Arnaldo Carvalho de Melo <acme@redhat.com> | 2011-11-28 05:30:20 -0500 |
---|---|---|
committer | Arnaldo Carvalho de Melo <acme@redhat.com> | 2011-11-28 07:39:28 -0500 |
commit | 45694aa7702bc44d538a3bcb51bb2bb96cf190c0 (patch) | |
tree | 81bc1f449f55984556d89b63c461dcf181dc97e5 /tools/perf/builtin-record.c | |
parent | 743eb868657bdb1b26c7b24077ca21c67c82c777 (diff) |
perf tools: Rename perf_event_ops to perf_tool
To better reflect that it became the base class for all tools, that must
be in each tool struct and where common stuff will be put.
Cc: David Ahern <dsahern@gmail.com>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Mike Galbraith <efault@gmx.de>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Stephane Eranian <eranian@google.com>
Link: http://lkml.kernel.org/n/tip-qgpc4msetqlwr8y2k7537cxe@git.kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Diffstat (limited to 'tools/perf/builtin-record.c')
-rw-r--r-- | tools/perf/builtin-record.c | 35 |
1 files changed, 18 insertions, 17 deletions
diff --git a/tools/perf/builtin-record.c b/tools/perf/builtin-record.c index 0af598a1059f..7d4fdaacc8ba 100644 --- a/tools/perf/builtin-record.c +++ b/tools/perf/builtin-record.c | |||
@@ -22,6 +22,7 @@ | |||
22 | #include "util/evsel.h" | 22 | #include "util/evsel.h" |
23 | #include "util/debug.h" | 23 | #include "util/debug.h" |
24 | #include "util/session.h" | 24 | #include "util/session.h" |
25 | #include "util/tool.h" | ||
25 | #include "util/symbol.h" | 26 | #include "util/symbol.h" |
26 | #include "util/cpumap.h" | 27 | #include "util/cpumap.h" |
27 | #include "util/thread_map.h" | 28 | #include "util/thread_map.h" |
@@ -36,7 +37,7 @@ enum write_mode_t { | |||
36 | }; | 37 | }; |
37 | 38 | ||
38 | struct perf_record { | 39 | struct perf_record { |
39 | struct perf_event_ops ops; | 40 | struct perf_tool tool; |
40 | struct perf_record_opts opts; | 41 | struct perf_record_opts opts; |
41 | u64 bytes_written; | 42 | u64 bytes_written; |
42 | const char *output_name; | 43 | const char *output_name; |
@@ -76,12 +77,12 @@ static void write_output(struct perf_record *rec, void *buf, size_t size) | |||
76 | } | 77 | } |
77 | } | 78 | } |
78 | 79 | ||
79 | static int process_synthesized_event(struct perf_event_ops *ops, | 80 | static int process_synthesized_event(struct perf_tool *tool, |
80 | union perf_event *event, | 81 | union perf_event *event, |
81 | struct perf_sample *sample __used, | 82 | struct perf_sample *sample __used, |
82 | struct machine *machine __used) | 83 | struct machine *machine __used) |
83 | { | 84 | { |
84 | struct perf_record *rec = container_of(ops, struct perf_record, ops); | 85 | struct perf_record *rec = container_of(tool, struct perf_record, tool); |
85 | write_output(rec, event, event->header.size); | 86 | write_output(rec, event, event->header.size); |
86 | return 0; | 87 | return 0; |
87 | } | 88 | } |
@@ -319,7 +320,7 @@ static void perf_record__exit(int status __used, void *arg) | |||
319 | static void perf_event__synthesize_guest_os(struct machine *machine, void *data) | 320 | static void perf_event__synthesize_guest_os(struct machine *machine, void *data) |
320 | { | 321 | { |
321 | int err; | 322 | int err; |
322 | struct perf_event_ops *ops = data; | 323 | struct perf_tool *tool = data; |
323 | 324 | ||
324 | if (machine__is_host(machine)) | 325 | if (machine__is_host(machine)) |
325 | return; | 326 | return; |
@@ -332,7 +333,7 @@ static void perf_event__synthesize_guest_os(struct machine *machine, void *data) | |||
332 | *method is used to avoid symbol missing when the first addr is | 333 | *method is used to avoid symbol missing when the first addr is |
333 | *in module instead of in guest kernel. | 334 | *in module instead of in guest kernel. |
334 | */ | 335 | */ |
335 | err = perf_event__synthesize_modules(ops, process_synthesized_event, | 336 | err = perf_event__synthesize_modules(tool, process_synthesized_event, |
336 | machine); | 337 | machine); |
337 | if (err < 0) | 338 | if (err < 0) |
338 | pr_err("Couldn't record guest kernel [%d]'s reference" | 339 | pr_err("Couldn't record guest kernel [%d]'s reference" |
@@ -342,10 +343,10 @@ static void perf_event__synthesize_guest_os(struct machine *machine, void *data) | |||
342 | * We use _stext for guest kernel because guest kernel's /proc/kallsyms | 343 | * We use _stext for guest kernel because guest kernel's /proc/kallsyms |
343 | * have no _text sometimes. | 344 | * have no _text sometimes. |
344 | */ | 345 | */ |
345 | err = perf_event__synthesize_kernel_mmap(ops, process_synthesized_event, | 346 | err = perf_event__synthesize_kernel_mmap(tool, process_synthesized_event, |
346 | machine, "_text"); | 347 | machine, "_text"); |
347 | if (err < 0) | 348 | if (err < 0) |
348 | err = perf_event__synthesize_kernel_mmap(ops, process_synthesized_event, | 349 | err = perf_event__synthesize_kernel_mmap(tool, process_synthesized_event, |
349 | machine, "_stext"); | 350 | machine, "_stext"); |
350 | if (err < 0) | 351 | if (err < 0) |
351 | pr_err("Couldn't record guest kernel [%d]'s reference" | 352 | pr_err("Couldn't record guest kernel [%d]'s reference" |
@@ -378,7 +379,7 @@ static int __cmd_record(struct perf_record *rec, int argc, const char **argv) | |||
378 | unsigned long waking = 0; | 379 | unsigned long waking = 0; |
379 | const bool forks = argc > 0; | 380 | const bool forks = argc > 0; |
380 | struct machine *machine; | 381 | struct machine *machine; |
381 | struct perf_event_ops *ops = &rec->ops; | 382 | struct perf_tool *tool = &rec->tool; |
382 | struct perf_record_opts *opts = &rec->opts; | 383 | struct perf_record_opts *opts = &rec->opts; |
383 | struct perf_evlist *evsel_list = rec->evlist; | 384 | struct perf_evlist *evsel_list = rec->evlist; |
384 | const char *output_name = rec->output_name; | 385 | const char *output_name = rec->output_name; |
@@ -501,14 +502,14 @@ static int __cmd_record(struct perf_record *rec, int argc, const char **argv) | |||
501 | } | 502 | } |
502 | 503 | ||
503 | if (opts->pipe_output) { | 504 | if (opts->pipe_output) { |
504 | err = perf_event__synthesize_attrs(ops, session, | 505 | err = perf_event__synthesize_attrs(tool, session, |
505 | process_synthesized_event); | 506 | process_synthesized_event); |
506 | if (err < 0) { | 507 | if (err < 0) { |
507 | pr_err("Couldn't synthesize attrs.\n"); | 508 | pr_err("Couldn't synthesize attrs.\n"); |
508 | return err; | 509 | return err; |
509 | } | 510 | } |
510 | 511 | ||
511 | err = perf_event__synthesize_event_types(ops, process_synthesized_event, | 512 | err = perf_event__synthesize_event_types(tool, process_synthesized_event, |
512 | machine); | 513 | machine); |
513 | if (err < 0) { | 514 | if (err < 0) { |
514 | pr_err("Couldn't synthesize event_types.\n"); | 515 | pr_err("Couldn't synthesize event_types.\n"); |
@@ -524,7 +525,7 @@ static int __cmd_record(struct perf_record *rec, int argc, const char **argv) | |||
524 | * return this more properly and also | 525 | * return this more properly and also |
525 | * propagate errors that now are calling die() | 526 | * propagate errors that now are calling die() |
526 | */ | 527 | */ |
527 | err = perf_event__synthesize_tracing_data(ops, output, evsel_list, | 528 | err = perf_event__synthesize_tracing_data(tool, output, evsel_list, |
528 | process_synthesized_event); | 529 | process_synthesized_event); |
529 | if (err <= 0) { | 530 | if (err <= 0) { |
530 | pr_err("Couldn't record tracing data.\n"); | 531 | pr_err("Couldn't record tracing data.\n"); |
@@ -534,17 +535,17 @@ static int __cmd_record(struct perf_record *rec, int argc, const char **argv) | |||
534 | } | 535 | } |
535 | } | 536 | } |
536 | 537 | ||
537 | err = perf_event__synthesize_kernel_mmap(ops, process_synthesized_event, | 538 | err = perf_event__synthesize_kernel_mmap(tool, process_synthesized_event, |
538 | machine, "_text"); | 539 | machine, "_text"); |
539 | if (err < 0) | 540 | if (err < 0) |
540 | err = perf_event__synthesize_kernel_mmap(ops, process_synthesized_event, | 541 | err = perf_event__synthesize_kernel_mmap(tool, process_synthesized_event, |
541 | machine, "_stext"); | 542 | machine, "_stext"); |
542 | if (err < 0) | 543 | if (err < 0) |
543 | pr_err("Couldn't record kernel reference relocation symbol\n" | 544 | pr_err("Couldn't record kernel reference relocation symbol\n" |
544 | "Symbol resolution may be skewed if relocation was used (e.g. kexec).\n" | 545 | "Symbol resolution may be skewed if relocation was used (e.g. kexec).\n" |
545 | "Check /proc/kallsyms permission or run as root.\n"); | 546 | "Check /proc/kallsyms permission or run as root.\n"); |
546 | 547 | ||
547 | err = perf_event__synthesize_modules(ops, process_synthesized_event, | 548 | err = perf_event__synthesize_modules(tool, process_synthesized_event, |
548 | machine); | 549 | machine); |
549 | if (err < 0) | 550 | if (err < 0) |
550 | pr_err("Couldn't record kernel module information.\n" | 551 | pr_err("Couldn't record kernel module information.\n" |
@@ -552,15 +553,15 @@ static int __cmd_record(struct perf_record *rec, int argc, const char **argv) | |||
552 | "Check /proc/modules permission or run as root.\n"); | 553 | "Check /proc/modules permission or run as root.\n"); |
553 | 554 | ||
554 | if (perf_guest) | 555 | if (perf_guest) |
555 | perf_session__process_machines(session, ops, | 556 | perf_session__process_machines(session, tool, |
556 | perf_event__synthesize_guest_os); | 557 | perf_event__synthesize_guest_os); |
557 | 558 | ||
558 | if (!opts->system_wide) | 559 | if (!opts->system_wide) |
559 | perf_event__synthesize_thread_map(ops, evsel_list->threads, | 560 | perf_event__synthesize_thread_map(tool, evsel_list->threads, |
560 | process_synthesized_event, | 561 | process_synthesized_event, |
561 | machine); | 562 | machine); |
562 | else | 563 | else |
563 | perf_event__synthesize_threads(ops, process_synthesized_event, | 564 | perf_event__synthesize_threads(tool, process_synthesized_event, |
564 | machine); | 565 | machine); |
565 | 566 | ||
566 | if (rec->realtime_prio) { | 567 | if (rec->realtime_prio) { |