|
@@ -403,16 +403,20 @@ union perf_event *perf_evlist__mmap_read(struct perf_evlist *evlist, int idx)
|
|
|
return event;
|
|
|
}
|
|
|
|
|
|
+static void __perf_evlist__munmap(struct perf_evlist *evlist, int idx)
|
|
|
+{
|
|
|
+ if (evlist->mmap[idx].base != NULL) {
|
|
|
+ munmap(evlist->mmap[idx].base, evlist->mmap_len);
|
|
|
+ evlist->mmap[idx].base = NULL;
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
void perf_evlist__munmap(struct perf_evlist *evlist)
|
|
|
{
|
|
|
int i;
|
|
|
|
|
|
- for (i = 0; i < evlist->nr_mmaps; i++) {
|
|
|
- if (evlist->mmap[i].base != NULL) {
|
|
|
- munmap(evlist->mmap[i].base, evlist->mmap_len);
|
|
|
- evlist->mmap[i].base = NULL;
|
|
|
- }
|
|
|
- }
|
|
|
+ for (i = 0; i < evlist->nr_mmaps; i++)
|
|
|
+ __perf_evlist__munmap(evlist, i);
|
|
|
|
|
|
free(evlist->mmap);
|
|
|
evlist->mmap = NULL;
|
|
@@ -477,12 +481,8 @@ static int perf_evlist__mmap_per_cpu(struct perf_evlist *evlist, int prot, int m
|
|
|
return 0;
|
|
|
|
|
|
out_unmap:
|
|
|
- for (cpu = 0; cpu < nr_cpus; cpu++) {
|
|
|
- if (evlist->mmap[cpu].base != NULL) {
|
|
|
- munmap(evlist->mmap[cpu].base, evlist->mmap_len);
|
|
|
- evlist->mmap[cpu].base = NULL;
|
|
|
- }
|
|
|
- }
|
|
|
+ for (cpu = 0; cpu < nr_cpus; cpu++)
|
|
|
+ __perf_evlist__munmap(evlist, cpu);
|
|
|
return -1;
|
|
|
}
|
|
|
|
|
@@ -517,12 +517,8 @@ static int perf_evlist__mmap_per_thread(struct perf_evlist *evlist, int prot, in
|
|
|
return 0;
|
|
|
|
|
|
out_unmap:
|
|
|
- for (thread = 0; thread < nr_threads; thread++) {
|
|
|
- if (evlist->mmap[thread].base != NULL) {
|
|
|
- munmap(evlist->mmap[thread].base, evlist->mmap_len);
|
|
|
- evlist->mmap[thread].base = NULL;
|
|
|
- }
|
|
|
- }
|
|
|
+ for (thread = 0; thread < nr_threads; thread++)
|
|
|
+ __perf_evlist__munmap(evlist, thread);
|
|
|
return -1;
|
|
|
}
|
|
|
|