diff options
Diffstat (limited to 'tools/perf/util/parse-events.c')
-rw-r--r-- | tools/perf/util/parse-events.c | 26 |
1 files changed, 22 insertions, 4 deletions
diff --git a/tools/perf/util/parse-events.c b/tools/perf/util/parse-events.c index 4364575ce6ac..f6453cd414ae 100644 --- a/tools/perf/util/parse-events.c +++ b/tools/perf/util/parse-events.c | |||
@@ -611,14 +611,32 @@ int parse_events_add_pmu(struct list_head **list, int *idx, | |||
611 | pmu_event_name(head_config)); | 611 | pmu_event_name(head_config)); |
612 | } | 612 | } |
613 | 613 | ||
614 | int parse_events__modifier_group(struct list_head *list __used, | 614 | struct perf_evsel *parse_events__set_leader(struct list_head *list) |
615 | char *event_mod __used) | ||
616 | { | 615 | { |
617 | return 0; | 616 | struct perf_evsel *evsel, *leader; |
617 | |||
618 | leader = list_entry(list->next, struct perf_evsel, node); | ||
619 | leader->leader = NULL; | ||
620 | |||
621 | list_for_each_entry(evsel, list, node) | ||
622 | if (evsel != leader) | ||
623 | evsel->leader = leader; | ||
624 | |||
625 | return leader; | ||
618 | } | 626 | } |
619 | 627 | ||
620 | void parse_events__group(char *name __used, struct list_head *list __used) | 628 | int parse_events__modifier_group(struct list_head *list, |
629 | char *event_mod) | ||
621 | { | 630 | { |
631 | return parse_events__modifier_event(list, event_mod, true); | ||
632 | } | ||
633 | |||
634 | void parse_events__group(char *name, struct list_head *list) | ||
635 | { | ||
636 | struct perf_evsel *leader; | ||
637 | |||
638 | leader = parse_events__set_leader(list); | ||
639 | leader->group_name = name ? strdup(name) : NULL; | ||
622 | } | 640 | } |
623 | 641 | ||
624 | void parse_events_update_lists(struct list_head *list_event, | 642 | void parse_events_update_lists(struct list_head *list_event, |