linux/tools/perf/util
Robert Richter 37a058ea00 perf script: Add generic perl handler to process events
The current perf scripting facility only supports tracepoints. This
patch implements a generic perl handler to support other events than
tracepoints too.

This patch introduces a function process_event() that is called by perf
for each sample. The function is called with byte streams as arguments
containing information about the event, its attributes, the sample and
raw data. Perl's unpack() function can easily be used for byte decoding.
The following is the default implementation for process_event() that can
also be generated with perf script:

 # Packed byte string args of process_event():
 #
 # $event:       union perf_event        util/event.h
 # $attr:        struct perf_event_attr  linux/perf_event.h
 # $sample:      struct perf_sample      util/event.h
 # $raw_data:    perf_sample->raw_data   util/event.h

 sub process_event
 {
         my ($event, $attr, $sample, $raw_data) = @_;

         my @event       = unpack("LSS", $event);
         my @attr        = unpack("LLQQQQQLLQQ", $attr);
         my @sample      = unpack("QLLQQQQQLL", $sample);
         my @raw_data    = unpack("C*", $raw_data);

         use Data::Dumper;
         print Dumper \@event, \@attr, \@sample, \@raw_data;
 }

Cc: Ingo Molnar <mingo@elte.hu>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Stephane Eranian <eranian@google.com>
Link: http://lkml.kernel.org/r/1323969824-9711-4-git-send-email-robert.richter@amd.com
Signed-off-by: Robert Richter <robert.richter@amd.com>
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
2011-12-23 17:05:48 -02:00
..
include perf tools: Use for_each_set_bit() to iterate over feature flags 2011-12-23 17:03:36 -02:00
scripting-engines perf script: Add generic perl handler to process events 2011-12-23 17:05:48 -02:00
ui perf symbols: Add nr_events to symbol_conf 2011-11-28 10:37:11 -02:00
abspath.c
alias.c
annotate.c perf tools: Fix truncated annotation 2011-12-23 16:39:19 -02:00
annotate.h perf symbols: Add nr_events to symbol_conf 2011-11-28 10:37:11 -02:00
bitmap.c
build-id.c perf tools: Rename perf_event_ops to perf_tool 2011-11-28 10:39:28 -02:00
build-id.h perf tools: Rename perf_event_ops to perf_tool 2011-11-28 10:39:28 -02:00
cache.h
callchain.c
callchain.h perf tools: Pass tool context in the the perf_event_ops functions 2011-11-28 10:38:56 -02:00
cgroup.c perf tools: Eliminate duplicate code and use PATH_MAX consistently 2011-11-28 10:11:04 -02:00
cgroup.h
color.c
color.h
config.c perf tools: Remove stale git headlines from top comment 2011-12-20 13:43:36 -02:00
cpumap.c
cpumap.h
ctype.c
debug.c perf ui browser: Handle K_RESIZE in dialog windows 2011-10-26 13:15:07 -02:00
debug.h perf ui browser: Handle K_RESIZE in dialog windows 2011-10-26 13:15:07 -02:00
debugfs.c perf tools: Simplify debugfs mountpoint handling code 2011-11-28 10:11:28 -02:00
debugfs.h perf tools: Simplify debugfs mountpoint handling code 2011-11-28 10:11:28 -02:00
dwarf-aux.c
dwarf-aux.h
environment.c
event.c perf tools: Look up thread names for system wide profiling 2011-12-23 16:33:57 -02:00
event.h perf tools: Add ability to synthesize event according to a sample 2011-12-12 08:44:00 -02:00
evlist.c perf: builtin-record: Document and check that mmap_pages must be a power of two. 2011-12-23 16:53:58 -02:00
evlist.h perf evlist: Always do automatic allocation of pollfd and mmap structures 2011-11-29 08:05:52 -02:00
evsel.c perf evsel: Fix uninitialized memory access to struct perf_sample 2011-12-20 13:26:47 -02:00
evsel.h perf tools: Save some loops using perf_evlist__id2evsel 2011-11-28 17:57:40 -02:00
exec_cmd.c
exec_cmd.h
generate-cmdlist.sh
header.c perf tools: Use for_each_set_bit() to iterate over feature flags 2011-12-23 17:03:36 -02:00
header.h perf tools: Use for_each_set_bit() to iterate over feature flags 2011-12-23 17:03:36 -02:00
help.c
help.h
hist.c perf python: Fix undefined symbol problem 2011-11-16 10:02:26 -02:00
hist.h Merge branch 'perf/urgent' into perf/core 2011-12-06 06:43:49 +01:00
hweight.c
levenshtein.c
levenshtein.h
map.c perf session: Move threads to struct machine 2011-11-28 10:35:31 -02:00
map.h perf tools: Resolve machine earlier and pass it to perf_event_ops 2011-11-28 10:39:12 -02:00
pager.c
parse-events.c perf: Add support for PERF_HW_COUNT_REF_CPU_CYCLES 2011-12-21 10:26:41 +01:00
parse-events.h perf tools: Simplify debugfs mountpoint handling code 2011-11-28 10:11:28 -02:00
parse-options.c
parse-options.h
path.c
PERF-VERSION-GEN
probe-event.c perf probe: Fix to show correct error string 2011-10-10 15:13:23 -04:00
probe-event.h
probe-finder.c
probe-finder.h perf tools: Eliminate duplicate code and use PATH_MAX consistently 2011-11-28 10:11:04 -02:00
pstack.c
pstack.h
python.c perf evlist: Fix grouping of multiple events 2011-10-26 10:25:02 -02:00
quote.c
quote.h
run-command.c
run-command.h
session.c perf report: Accept fifos as input file 2011-12-23 17:01:03 -02:00
session.h perf tools: Fix out-of-bound access to struct perf_session 2011-12-23 16:57:41 -02:00
setup.py perf evlist: Introduce add_tracepoints method 2011-11-28 10:25:11 -02:00
sigchain.c
sigchain.h
sort.c perf hists browser: Elide DSO column when it is set to just one DSO, ditto for threads 2011-10-20 08:02:30 -02:00
sort.h perf hists: Don't free decayed entries if in the annotation browser 2011-10-13 08:01:33 -03:00
strbuf.c
strbuf.h
strfilter.c
strfilter.h
string.c
strlist.c
strlist.h
svghelper.c
svghelper.h
symbol.c perf symbols: Fix error path on symbol__init() 2011-12-20 13:40:27 -02:00
symbol.h perf symbols: Add nr_events to symbol_conf 2011-11-28 10:37:11 -02:00
thread_map.c
thread_map.h
thread.c perf session: Move threads to struct machine 2011-11-28 10:35:31 -02:00
thread.h perf tools: Resolve machine earlier and pass it to perf_event_ops 2011-11-28 10:39:12 -02:00
tool.h perf tools: Save some loops using perf_evlist__id2evsel 2011-11-28 17:57:40 -02:00
top.c perf top: Reuse the 'report' hist_entry/hists classes 2011-10-07 16:56:44 -03:00
top.h perf top: Stop using globals for tool state 2011-11-28 10:39:44 -02:00
trace-event-info.c perf tools: Eliminate duplicate code and use PATH_MAX consistently 2011-11-28 10:11:04 -02:00
trace-event-parse.c perf: Fix parsing of __print_flags() in TP_printk() 2011-12-05 13:28:47 -05:00
trace-event-read.c
trace-event-scripting.c perf tools: Resolve machine earlier and pass it to perf_event_ops 2011-11-28 10:39:12 -02:00
trace-event.h perf tools: Resolve machine earlier and pass it to perf_event_ops 2011-11-28 10:39:12 -02:00
types.h
usage.c perf tools: Remove stale git headlines from top comment 2011-12-20 13:43:36 -02:00
util.c
util.h perf: builtin-record: Document and check that mmap_pages must be a power of two. 2011-12-23 16:53:58 -02:00
values.c perf tools: Fix a memory leak on perf_read_values_destroy 2011-12-20 13:41:34 -02:00
values.h
wrapper.c
xyarray.c
xyarray.h