aboutsummaryrefslogtreecommitdiffstats
path: root/tools/perf/tests/mmap-basic.c
diff options
context:
space:
mode:
Diffstat (limited to 'tools/perf/tests/mmap-basic.c')
-rw-r--r--tools/perf/tests/mmap-basic.c25
1 files changed, 11 insertions, 14 deletions
diff --git a/tools/perf/tests/mmap-basic.c b/tools/perf/tests/mmap-basic.c
index d64ab79c6d35..142263492f6f 100644
--- a/tools/perf/tests/mmap-basic.c
+++ b/tools/perf/tests/mmap-basic.c
@@ -68,7 +68,7 @@ int test__basic_mmap(void)
68 evsels[i] = perf_evsel__newtp("syscalls", name); 68 evsels[i] = perf_evsel__newtp("syscalls", name);
69 if (evsels[i] == NULL) { 69 if (evsels[i] == NULL) {
70 pr_debug("perf_evsel__new\n"); 70 pr_debug("perf_evsel__new\n");
71 goto out_free_evlist; 71 goto out_delete_evlist;
72 } 72 }
73 73
74 evsels[i]->attr.wakeup_events = 1; 74 evsels[i]->attr.wakeup_events = 1;
@@ -80,7 +80,7 @@ int test__basic_mmap(void)
80 pr_debug("failed to open counter: %s, " 80 pr_debug("failed to open counter: %s, "
81 "tweak /proc/sys/kernel/perf_event_paranoid?\n", 81 "tweak /proc/sys/kernel/perf_event_paranoid?\n",
82 strerror(errno)); 82 strerror(errno));
83 goto out_close_fd; 83 goto out_delete_evlist;
84 } 84 }
85 85
86 nr_events[i] = 0; 86 nr_events[i] = 0;
@@ -90,7 +90,7 @@ int test__basic_mmap(void)
90 if (perf_evlist__mmap(evlist, 128, true) < 0) { 90 if (perf_evlist__mmap(evlist, 128, true) < 0) {
91 pr_debug("failed to mmap events: %d (%s)\n", errno, 91 pr_debug("failed to mmap events: %d (%s)\n", errno,
92 strerror(errno)); 92 strerror(errno));
93 goto out_close_fd; 93 goto out_delete_evlist;
94 } 94 }
95 95
96 for (i = 0; i < nsyscalls; ++i) 96 for (i = 0; i < nsyscalls; ++i)
@@ -105,13 +105,13 @@ int test__basic_mmap(void)
105 if (event->header.type != PERF_RECORD_SAMPLE) { 105 if (event->header.type != PERF_RECORD_SAMPLE) {
106 pr_debug("unexpected %s event\n", 106 pr_debug("unexpected %s event\n",
107 perf_event__name(event->header.type)); 107 perf_event__name(event->header.type));
108 goto out_munmap; 108 goto out_delete_evlist;
109 } 109 }
110 110
111 err = perf_evlist__parse_sample(evlist, event, &sample); 111 err = perf_evlist__parse_sample(evlist, event, &sample);
112 if (err) { 112 if (err) {
113 pr_err("Can't parse sample, err = %d\n", err); 113 pr_err("Can't parse sample, err = %d\n", err);
114 goto out_munmap; 114 goto out_delete_evlist;
115 } 115 }
116 116
117 err = -1; 117 err = -1;
@@ -119,30 +119,27 @@ int test__basic_mmap(void)
119 if (evsel == NULL) { 119 if (evsel == NULL) {
120 pr_debug("event with id %" PRIu64 120 pr_debug("event with id %" PRIu64
121 " doesn't map to an evsel\n", sample.id); 121 " doesn't map to an evsel\n", sample.id);
122 goto out_munmap; 122 goto out_delete_evlist;
123 } 123 }
124 nr_events[evsel->idx]++; 124 nr_events[evsel->idx]++;
125 perf_evlist__mmap_consume(evlist, 0); 125 perf_evlist__mmap_consume(evlist, 0);
126 } 126 }
127 127
128 err = 0; 128 err = 0;
129 list_for_each_entry(evsel, &evlist->entries, node) { 129 evlist__for_each(evlist, evsel) {
130 if (nr_events[evsel->idx] != expected_nr_events[evsel->idx]) { 130 if (nr_events[evsel->idx] != expected_nr_events[evsel->idx]) {
131 pr_debug("expected %d %s events, got %d\n", 131 pr_debug("expected %d %s events, got %d\n",
132 expected_nr_events[evsel->idx], 132 expected_nr_events[evsel->idx],
133 perf_evsel__name(evsel), nr_events[evsel->idx]); 133 perf_evsel__name(evsel), nr_events[evsel->idx]);
134 err = -1; 134 err = -1;
135 goto out_munmap; 135 goto out_delete_evlist;
136 } 136 }
137 } 137 }
138 138
139out_munmap: 139out_delete_evlist:
140 perf_evlist__munmap(evlist);
141out_close_fd:
142 for (i = 0; i < nsyscalls; ++i)
143 perf_evsel__close_fd(evsels[i], 1, threads->nr);
144out_free_evlist:
145 perf_evlist__delete(evlist); 140 perf_evlist__delete(evlist);
141 cpus = NULL;
142 threads = NULL;
146out_free_cpus: 143out_free_cpus:
147 cpu_map__delete(cpus); 144 cpu_map__delete(cpus);
148out_free_threads: 145out_free_threads: