diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2012-03-31 16:34:04 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2012-03-31 16:34:04 -0400 |
commit | f187e9fd68577cdd5f914659b6f7f11124e40485 (patch) | |
tree | ad0e7422359724f7c7ffaaaa80dd3a7281f02a83 /tools/perf/util/parse-events.h | |
parent | adb3b1f3fc1c6edb501808ebf80a81e81c52eb73 (diff) | |
parent | 8ebfdf2babcda5a3b06cc67523bca1f9aed46009 (diff) |
Merge branch 'perf-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
Pull perf updates and fixes from Ingo Molnar:
"It's mostly fixes, but there's also two late items:
- preliminary GTK GUI support for perf report
- PMU raw event format descriptors in sysfs, to be parsed by tooling
The raw event format in sysfs is a new ABI. For example for the 'CPU'
PMU we have:
aldebaran:~> ll /sys/bus/event_source/devices/cpu/format/*
-r--r--r--. 1 root root 4096 Mar 31 10:29 /sys/bus/event_source/devices/cpu/format/any
-r--r--r--. 1 root root 4096 Mar 31 10:29 /sys/bus/event_source/devices/cpu/format/cmask
-r--r--r--. 1 root root 4096 Mar 31 10:29 /sys/bus/event_source/devices/cpu/format/edge
-r--r--r--. 1 root root 4096 Mar 31 10:29 /sys/bus/event_source/devices/cpu/format/event
-r--r--r--. 1 root root 4096 Mar 31 10:29 /sys/bus/event_source/devices/cpu/format/inv
-r--r--r--. 1 root root 4096 Mar 31 10:29 /sys/bus/event_source/devices/cpu/format/offcore_rsp
-r--r--r--. 1 root root 4096 Mar 31 10:29 /sys/bus/event_source/devices/cpu/format/pc
-r--r--r--. 1 root root 4096 Mar 31 10:29 /sys/bus/event_source/devices/cpu/format/umask
those lists of fields contain a specific format:
aldebaran:~> cat /sys/bus/event_source/devices/cpu/format/offcore_rsp
config1:0-63
So, those who wish to specify raw events can now use the following
event format:
-e cpu/cmask=1,event=2,umask=3
Most people will not want to specify any events (let alone raw
events), they'll just use whatever default event the tools use.
But for more obscure PMU events that have no cross-architecture
generic events the above syntax is more usable and a bit more
structured than specifying hex numbers."
* 'perf-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (41 commits)
perf tools: Remove auto-generated bison/flex files
perf annotate: Fix off by one symbol hist size allocation and hit accounting
perf tools: Add missing ref-cycles event back to event parser
perf annotate: addr2line wants addresses in same format as objdump
perf probe: Finder fails to resolve function name to address
tracing: Fix ent_size in trace output
perf symbols: Handle NULL dso in dso__name_len
perf symbols: Do not include libgen.h
perf tools: Fix bug in raw sample parsing
perf tools: Fix display of first level of callchains
perf tools: Switch module.h into export.h
perf: Move mmap page data_head offset assertion out of header
perf: Fix mmap_page capabilities and docs
perf diff: Fix to work with new hists design
perf tools: Fix modifier to be applied on correct events
perf tools: Fix various casting issues for 32 bits
perf tools: Simplify event_read_id exit path
tracing: Fix ftrace stack trace entries
tracing: Move the tracing_on/off() declarations into CONFIG_TRACING
perf report: Add a simple GTK2-based 'perf report' browser
...
Diffstat (limited to 'tools/perf/util/parse-events.h')
-rw-r--r-- | tools/perf/util/parse-events.h | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/tools/perf/util/parse-events.h b/tools/perf/util/parse-events.h index 7e0cbe75d5f..ca069f89338 100644 --- a/tools/perf/util/parse-events.h +++ b/tools/perf/util/parse-events.h | |||
@@ -33,6 +33,55 @@ extern int parse_filter(const struct option *opt, const char *str, int unset); | |||
33 | 33 | ||
34 | #define EVENTS_HELP_MAX (128*1024) | 34 | #define EVENTS_HELP_MAX (128*1024) |
35 | 35 | ||
36 | enum { | ||
37 | PARSE_EVENTS__TERM_TYPE_CONFIG, | ||
38 | PARSE_EVENTS__TERM_TYPE_CONFIG1, | ||
39 | PARSE_EVENTS__TERM_TYPE_CONFIG2, | ||
40 | PARSE_EVENTS__TERM_TYPE_SAMPLE_PERIOD, | ||
41 | PARSE_EVENTS__TERM_TYPE_BRANCH_SAMPLE_TYPE, | ||
42 | PARSE_EVENTS__TERM_TYPE_NUM, | ||
43 | PARSE_EVENTS__TERM_TYPE_STR, | ||
44 | |||
45 | PARSE_EVENTS__TERM_TYPE_HARDCODED_MAX = | ||
46 | PARSE_EVENTS__TERM_TYPE_BRANCH_SAMPLE_TYPE, | ||
47 | }; | ||
48 | |||
49 | struct parse_events__term { | ||
50 | char *config; | ||
51 | union { | ||
52 | char *str; | ||
53 | long num; | ||
54 | } val; | ||
55 | int type; | ||
56 | |||
57 | struct list_head list; | ||
58 | }; | ||
59 | |||
60 | int parse_events__is_hardcoded_term(struct parse_events__term *term); | ||
61 | int parse_events__new_term(struct parse_events__term **term, int type, | ||
62 | char *config, char *str, long num); | ||
63 | void parse_events__free_terms(struct list_head *terms); | ||
64 | int parse_events_modifier(struct list_head *list __used, char *str __used); | ||
65 | int parse_events_add_tracepoint(struct list_head *list, int *idx, | ||
66 | char *sys, char *event); | ||
67 | int parse_events_add_raw(struct perf_evlist *evlist, unsigned long config, | ||
68 | unsigned long config1, unsigned long config2, | ||
69 | char *mod); | ||
70 | int parse_events_add_numeric(struct list_head *list, int *idx, | ||
71 | unsigned long type, unsigned long config, | ||
72 | struct list_head *head_config); | ||
73 | int parse_events_add_cache(struct list_head *list, int *idx, | ||
74 | char *type, char *op_result1, char *op_result2); | ||
75 | int parse_events_add_breakpoint(struct list_head *list, int *idx, | ||
76 | void *ptr, char *type); | ||
77 | int parse_events_add_pmu(struct list_head *list, int *idx, | ||
78 | char *pmu , struct list_head *head_config); | ||
79 | void parse_events_update_lists(struct list_head *list_event, | ||
80 | struct list_head *list_all); | ||
81 | void parse_events_error(struct list_head *list_all, | ||
82 | struct list_head *list_event, | ||
83 | int *idx, char const *msg); | ||
84 | |||
36 | void print_events(const char *event_glob); | 85 | void print_events(const char *event_glob); |
37 | void print_events_type(u8 type); | 86 | void print_events_type(u8 type); |
38 | void print_tracepoint_events(const char *subsys_glob, const char *event_glob); | 87 | void print_tracepoint_events(const char *subsys_glob, const char *event_glob); |