aboutsummaryrefslogtreecommitdiffstats
path: root/tools/perf/builtin-record.c
diff options
context:
space:
mode:
authorArnaldo Carvalho de Melo <acme@redhat.com>2011-11-28 05:30:20 -0500
committerArnaldo Carvalho de Melo <acme@redhat.com>2011-11-28 07:39:28 -0500
commit45694aa7702bc44d538a3bcb51bb2bb96cf190c0 (patch)
tree81bc1f449f55984556d89b63c461dcf181dc97e5 /tools/perf/builtin-record.c
parent743eb868657bdb1b26c7b24077ca21c67c82c777 (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.c35
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
38struct perf_record { 39struct 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
79static int process_synthesized_event(struct perf_event_ops *ops, 80static 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)
319static void perf_event__synthesize_guest_os(struct machine *machine, void *data) 320static 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) {