Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

perf evsel: Add a backpointer to the evlist a evsel is in

So that functions that deal primarily with an evsel to access
information that concerns the whole evlist it is in.

Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: Andi Kleen <ak@linux.intel.com>
Cc: Andy Lutomirski <luto@kernel.org>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Kan Liang <kan.liang@intel.com>
Cc: Mark Rutland <mark.rutland@arm.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Cc: Stephane Eranian <eranian@google.com>
Link: http://lkml.kernel.org/r/1440677263-21954-5-git-send-email-kan.liang@intel.com
Signed-off-by: Kan Liang <kan.liang@intel.com>
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>

+8
+2
tools/perf/util/evlist.c
··· 98 98 99 99 evlist__for_each_safe(evlist, n, pos) { 100 100 list_del_init(&pos->node); 101 + pos->evlist = NULL; 101 102 perf_evsel__delete(pos); 102 103 } 103 104 ··· 126 125 127 126 void perf_evlist__add(struct perf_evlist *evlist, struct perf_evsel *entry) 128 127 { 128 + entry->evlist = evlist; 129 129 list_add_tail(&entry->node, &evlist->entries); 130 130 entry->idx = evlist->nr_entries; 131 131 entry->tracking = !entry->idx;
+2
tools/perf/util/evsel.c
··· 206 206 evsel->leader = evsel; 207 207 evsel->unit = ""; 208 208 evsel->scale = 1.0; 209 + evsel->evlist = NULL; 209 210 INIT_LIST_HEAD(&evsel->node); 210 211 INIT_LIST_HEAD(&evsel->config_terms); 211 212 perf_evsel__object.init(evsel); ··· 1027 1026 void perf_evsel__exit(struct perf_evsel *evsel) 1028 1027 { 1029 1028 assert(list_empty(&evsel->node)); 1029 + assert(evsel->evlist == NULL); 1030 1030 perf_evsel__free_fd(evsel); 1031 1031 perf_evsel__free_id(evsel); 1032 1032 perf_evsel__free_config_terms(evsel);
+4
tools/perf/util/evsel.h
··· 60 60 61 61 /** struct perf_evsel - event selector 62 62 * 63 + * @evlist - evlist this evsel is in, if it is in one. 64 + * @node - To insert it into evlist->entries or in other list_heads, say in 65 + * the event parsing routines. 63 66 * @name - Can be set to retain the original event name passed by the user, 64 67 * so that when showing results in tools such as 'perf stat', we 65 68 * show the name used, not some alias. ··· 76 73 */ 77 74 struct perf_evsel { 78 75 struct list_head node; 76 + struct perf_evlist *evlist; 79 77 struct perf_event_attr attr; 80 78 char *filter; 81 79 struct xyarray *fd;