aboutsummaryrefslogtreecommitdiffstats
path: root/tools/perf/builtin-record.c
diff options
context:
space:
mode:
authorTom Zanussi <tzanussi@gmail.com>2010-04-02 00:59:21 -0400
committerIngo Molnar <mingo@elte.hu>2010-04-14 05:56:07 -0400
commit9215545e99d8c0b27323df2de504f4294bf5e407 (patch)
treeb53dde70374d2f8a8cd12c44c3637665e559cb16 /tools/perf/builtin-record.c
parentcd19a035f3b63fee6dcbdb5371c4b22276f7dc8c (diff)
perf: Convert perf tracing data into a tracing_data event
Bypasses the tracing_data perf header code and replaces it with a synthesized event and processing function that accomplishes the same thing, used when reading/writing perf data to/from a pipe. The tracing data is pretty large, and this patch doesn't attempt to break it down into component events. The tracing_data event itself doesn't actually contain the tracing data, rather it arranges for the event processing code to skip over it after it's read, using the skip return value added to the event processing loop in a previous patch. Signed-off-by: Tom Zanussi <tzanussi@gmail.com> Acked-by: Thomas Gleixner <tglx@linutronix.de> Cc: fweisbec@gmail.com Cc: rostedt@goodmis.org Cc: k-keiichi@bx.jp.nec.com Cc: acme@ghostprotocols.net LKML-Reference: <1270184365-8281-8-git-send-email-tzanussi@gmail.com> Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'tools/perf/builtin-record.c')
-rw-r--r--tools/perf/builtin-record.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/tools/perf/builtin-record.c b/tools/perf/builtin-record.c
index c4c132205ed..3775abe2af7 100644
--- a/tools/perf/builtin-record.c
+++ b/tools/perf/builtin-record.c
@@ -104,6 +104,11 @@ static void mmap_write_tail(struct mmap_data *md, unsigned long tail)
104 pc->data_tail = tail; 104 pc->data_tail = tail;
105} 105}
106 106
107static void advance_output(size_t size)
108{
109 bytes_written += size;
110}
111
107static void write_output(void *buf, size_t size) 112static void write_output(void *buf, size_t size)
108{ 113{
109 while (size) { 114 while (size) {
@@ -599,6 +604,17 @@ static int __cmd_record(int argc, const char **argv)
599 pr_err("Couldn't synthesize event_types.\n"); 604 pr_err("Couldn't synthesize event_types.\n");
600 return err; 605 return err;
601 } 606 }
607
608 err = event__synthesize_tracing_data(output, attrs,
609 nr_counters,
610 process_synthesized_event,
611 session);
612 if (err <= 0) {
613 pr_err("Couldn't record tracing data.\n");
614 return err;
615 }
616
617 advance_output(err);
602 } 618 }
603 619
604 err = event__synthesize_kernel_mmap(process_synthesized_event, 620 err = event__synthesize_kernel_mmap(process_synthesized_event,