summaryrefslogtreecommitdiffstats
path: root/tools/perf/util/evsel.c
diff options
context:
space:
mode:
authorIngo Molnar <mingo@elte.hu>2011-03-11 09:28:31 +0100
committerIngo Molnar <mingo@elte.hu>2011-03-11 09:28:31 +0100
commit137ee20ddd10fdc20600c389fe63edab0c39cb1a (patch)
treef2f9db93cbbe1929d2c3380658a546a748181dc9 /tools/perf/util/evsel.c
parent4a0b1665db09cf2da9ad7d0f12da386373c10bfa (diff)
parent1c0b04d10bbe35279c50e3b36cf5b8ec2a0050d8 (diff)
Merge branch 'perf/core' of git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux-2.6 into perf/core
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 8083d5126fc..662596afd7f 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)
int perf_evsel__alloc_id(struct perf_evsel *evsel, int ncpus, int nthreads)
{
- evsel->id = xyarray__new(ncpus, nthreads, sizeof(struct perf_sample_id));
- return evsel->id != NULL ? 0 : -ENOMEM;
+ evsel->sample_id = xyarray__new(ncpus, nthreads, sizeof(struct perf_sample_id));
+ if (evsel->sample_id == NULL)
+ return -ENOMEM;
+
+ evsel->id = zalloc(ncpus * nthreads * sizeof(u64));
+ if (evsel->id == NULL) {
+ xyarray__delete(evsel->sample_id);
+ evsel->sample_id = NULL;
+ return -ENOMEM;
+ }
+
+ return 0;
}
int perf_evsel__alloc_counts(struct perf_evsel *evsel, int ncpus)
@@ -60,7 +70,9 @@ void perf_evsel__free_fd(struct perf_evsel *evsel)
void perf_evsel__free_id(struct perf_evsel *evsel)
{
- xyarray__delete(evsel->id);
+ xyarray__delete(evsel->sample_id);
+ evsel->sample_id = NULL;
+ free(evsel->id);
evsel->id = NULL;
}
@@ -79,7 +91,8 @@ void perf_evsel__exit(struct perf_evsel *evsel)
{
assert(list_empty(&evsel->node));
xyarray__delete(evsel->fd);
- xyarray__delete(evsel->id);
+ xyarray__delete(evsel->sample_id);
+ free(evsel->id);
}
void perf_evsel__delete(struct perf_evsel *evsel)