aboutsummaryrefslogtreecommitdiffstats
path: root/tools/perf/util/evsel.c
diff options
context:
space:
mode:
authorArnaldo Carvalho de Melo <acme@redhat.com>2011-03-10 09:15:54 -0500
committerArnaldo Carvalho de Melo <acme@redhat.com>2011-03-10 09:15:54 -0500
commita91e5431d54f5359fccb5ec2512f252eb217707e (patch)
tree8f8ba4940d9f4e910b339baee13a710baa920378 /tools/perf/util/evsel.c
parent6547250381eb315acff3d52b4872ad775359407c (diff)
perf session: Use evlist/evsel for managing perf.data attributes
So that we can reuse things like the id to attr lookup routine (perf_evlist__id2evsel) that uses a hash table instead of the linear lookup done in the older perf_header_attr routines, etc. Also to make evsels/evlist more pervasive an API, simplyfing using the emerging perf lib. cc: Arun Sharma <arun@sharma-home.net> Cc: Frederic Weisbecker <fweisbec@gmail.com> Cc: Ingo Molnar <mingo@elte.hu> Cc: Mike Galbraith <efault@gmx.de> Cc: Paul Mackerras <paulus@samba.org> Cc: Peter Zijlstra <peterz@infradead.org> Cc: Stephane Eranian <eranian@google.com> Cc: Tom Zanussi <tzanussi@gmail.com> LKML-Reference: <new-submission> Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Diffstat (limited to 'tools/perf/util/evsel.c')
-rw-r--r--tools/perf/util/evsel.c21
1 files changed, 17 insertions, 4 deletions
diff --git a/tools/perf/util/evsel.c b/tools/perf/util/evsel.c
index 8083d5126fca..662596afd7f1 100644
--- a/tools/perf/util/evsel.c
+++ b/tools/perf/util/evsel.c
@@ -41,8 +41,18 @@ int perf_evsel__alloc_fd(struct perf_evsel *evsel, int ncpus, int nthreads)
41 41
42int perf_evsel__alloc_id(struct perf_evsel *evsel, int ncpus, int nthreads) 42int perf_evsel__alloc_id(struct perf_evsel *evsel, int ncpus, int nthreads)
43{ 43{
44 evsel->id = xyarray__new(ncpus, nthreads, sizeof(struct perf_sample_id)); 44 evsel->sample_id = xyarray__new(ncpus, nthreads, sizeof(struct perf_sample_id));
45 return evsel->id != NULL ? 0 : -ENOMEM; 45 if (evsel->sample_id == NULL)
46 return -ENOMEM;
47
48 evsel->id = zalloc(ncpus * nthreads * sizeof(u64));
49 if (evsel->id == NULL) {
50 xyarray__delete(evsel->sample_id);
51 evsel->sample_id = NULL;
52 return -ENOMEM;
53 }
54
55 return 0;
46} 56}
47 57
48int perf_evsel__alloc_counts(struct perf_evsel *evsel, int ncpus) 58int perf_evsel__alloc_counts(struct perf_evsel *evsel, int ncpus)
@@ -60,7 +70,9 @@ void perf_evsel__free_fd(struct perf_evsel *evsel)
60 70
61void perf_evsel__free_id(struct perf_evsel *evsel) 71void perf_evsel__free_id(struct perf_evsel *evsel)
62{ 72{
63 xyarray__delete(evsel->id); 73 xyarray__delete(evsel->sample_id);
74 evsel->sample_id = NULL;
75 free(evsel->id);
64 evsel->id = NULL; 76 evsel->id = NULL;
65} 77}
66 78
@@ -79,7 +91,8 @@ void perf_evsel__exit(struct perf_evsel *evsel)
79{ 91{
80 assert(list_empty(&evsel->node)); 92 assert(list_empty(&evsel->node));
81 xyarray__delete(evsel->fd); 93 xyarray__delete(evsel->fd);
82 xyarray__delete(evsel->id); 94 xyarray__delete(evsel->sample_id);
95 free(evsel->id);
83} 96}
84 97
85void perf_evsel__delete(struct perf_evsel *evsel) 98void perf_evsel__delete(struct perf_evsel *evsel)