aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJiri Olsa <jolsa@kernel.org>2018-09-13 08:54:05 -0400
committerArnaldo Carvalho de Melo <acme@redhat.com>2018-09-19 09:25:11 -0400
commite035f4ca2ac97c30842fb03101198a86730de3ad (patch)
treedb35a8fcefe3bf0c71d4971f527366a10fde7bf0
parent7336555a682c09fd9a3fdf38724493e52653be50 (diff)
perf auxtrace: Pass struct perf_mmap into mmap__read* functions
The perf_mmap struct will hold a file pointer to write the mmap's contents, so we need to propagate it down the stack to record__write callers instead of its member the auxtrace_mmap struct. Signed-off-by: Jiri Olsa <jolsa@kernel.org> Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com> Cc: Alexey Budankov <alexey.budankov@linux.intel.com> Cc: Andi Kleen <andi@firstfloor.org> Cc: Namhyung Kim <namhyung@kernel.org> Cc: Peter Zijlstra <peterz@infradead.org> Link: http://lkml.kernel.org/r/20180913125450.21342-4-jolsa@kernel.org Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
-rw-r--r--tools/perf/builtin-record.c27
-rw-r--r--tools/perf/util/auxtrace.c11
-rw-r--r--tools/perf/util/auxtrace.h5
3 files changed, 22 insertions, 21 deletions
diff --git a/tools/perf/builtin-record.c b/tools/perf/builtin-record.c
index 9853552bcf16..fd8b12c5f4ae 100644
--- a/tools/perf/builtin-record.c
+++ b/tools/perf/builtin-record.c
@@ -207,11 +207,11 @@ static int record__process_auxtrace(struct perf_tool *tool,
207} 207}
208 208
209static int record__auxtrace_mmap_read(struct record *rec, 209static int record__auxtrace_mmap_read(struct record *rec,
210 struct auxtrace_mmap *mm) 210 struct perf_mmap *map)
211{ 211{
212 int ret; 212 int ret;
213 213
214 ret = auxtrace_mmap__read(mm, rec->itr, &rec->tool, 214 ret = auxtrace_mmap__read(map, rec->itr, &rec->tool,
215 record__process_auxtrace); 215 record__process_auxtrace);
216 if (ret < 0) 216 if (ret < 0)
217 return ret; 217 return ret;
@@ -223,11 +223,11 @@ static int record__auxtrace_mmap_read(struct record *rec,
223} 223}
224 224
225static int record__auxtrace_mmap_read_snapshot(struct record *rec, 225static int record__auxtrace_mmap_read_snapshot(struct record *rec,
226 struct auxtrace_mmap *mm) 226 struct perf_mmap *map)
227{ 227{
228 int ret; 228 int ret;
229 229
230 ret = auxtrace_mmap__read_snapshot(mm, rec->itr, &rec->tool, 230 ret = auxtrace_mmap__read_snapshot(map, rec->itr, &rec->tool,
231 record__process_auxtrace, 231 record__process_auxtrace,
232 rec->opts.auxtrace_snapshot_size); 232 rec->opts.auxtrace_snapshot_size);
233 if (ret < 0) 233 if (ret < 0)
@@ -245,13 +245,12 @@ static int record__auxtrace_read_snapshot_all(struct record *rec)
245 int rc = 0; 245 int rc = 0;
246 246
247 for (i = 0; i < rec->evlist->nr_mmaps; i++) { 247 for (i = 0; i < rec->evlist->nr_mmaps; i++) {
248 struct auxtrace_mmap *mm = 248 struct perf_mmap *map = &rec->evlist->mmap[i];
249 &rec->evlist->mmap[i].auxtrace_mmap;
250 249
251 if (!mm->base) 250 if (!map->auxtrace_mmap.base)
252 continue; 251 continue;
253 252
254 if (record__auxtrace_mmap_read_snapshot(rec, mm) != 0) { 253 if (record__auxtrace_mmap_read_snapshot(rec, map) != 0) {
255 rc = -1; 254 rc = -1;
256 goto out; 255 goto out;
257 } 256 }
@@ -295,7 +294,7 @@ static int record__auxtrace_init(struct record *rec)
295 294
296static inline 295static inline
297int record__auxtrace_mmap_read(struct record *rec __maybe_unused, 296int record__auxtrace_mmap_read(struct record *rec __maybe_unused,
298 struct auxtrace_mmap *mm __maybe_unused) 297 struct perf_mmap *map __maybe_unused)
299{ 298{
300 return 0; 299 return 0;
301} 300}
@@ -529,17 +528,17 @@ static int record__mmap_read_evlist(struct record *rec, struct perf_evlist *evli
529 return 0; 528 return 0;
530 529
531 for (i = 0; i < evlist->nr_mmaps; i++) { 530 for (i = 0; i < evlist->nr_mmaps; i++) {
532 struct auxtrace_mmap *mm = &maps[i].auxtrace_mmap; 531 struct perf_mmap *map = &maps[i];
533 532
534 if (maps[i].base) { 533 if (map->base) {
535 if (perf_mmap__push(&maps[i], rec, record__pushfn) != 0) { 534 if (perf_mmap__push(map, rec, record__pushfn) != 0) {
536 rc = -1; 535 rc = -1;
537 goto out; 536 goto out;
538 } 537 }
539 } 538 }
540 539
541 if (mm->base && !rec->opts.auxtrace_snapshot_mode && 540 if (map->auxtrace_mmap.base && !rec->opts.auxtrace_snapshot_mode &&
542 record__auxtrace_mmap_read(rec, mm) != 0) { 541 record__auxtrace_mmap_read(rec, map) != 0) {
543 rc = -1; 542 rc = -1;
544 goto out; 543 goto out;
545 } 544 }
diff --git a/tools/perf/util/auxtrace.c b/tools/perf/util/auxtrace.c
index 3017b205a157..2fecee57f555 100644
--- a/tools/perf/util/auxtrace.c
+++ b/tools/perf/util/auxtrace.c
@@ -1193,11 +1193,12 @@ int perf_event__process_auxtrace_error(struct perf_session *session,
1193 return 0; 1193 return 0;
1194} 1194}
1195 1195
1196static int __auxtrace_mmap__read(struct auxtrace_mmap *mm, 1196static int __auxtrace_mmap__read(struct perf_mmap *map,
1197 struct auxtrace_record *itr, 1197 struct auxtrace_record *itr,
1198 struct perf_tool *tool, process_auxtrace_t fn, 1198 struct perf_tool *tool, process_auxtrace_t fn,
1199 bool snapshot, size_t snapshot_size) 1199 bool snapshot, size_t snapshot_size)
1200{ 1200{
1201 struct auxtrace_mmap *mm = &map->auxtrace_mmap;
1201 u64 head, old = mm->prev, offset, ref; 1202 u64 head, old = mm->prev, offset, ref;
1202 unsigned char *data = mm->base; 1203 unsigned char *data = mm->base;
1203 size_t size, head_off, old_off, len1, len2, padding; 1204 size_t size, head_off, old_off, len1, len2, padding;
@@ -1303,18 +1304,18 @@ static int __auxtrace_mmap__read(struct auxtrace_mmap *mm,
1303 return 1; 1304 return 1;
1304} 1305}
1305 1306
1306int auxtrace_mmap__read(struct auxtrace_mmap *mm, struct auxtrace_record *itr, 1307int auxtrace_mmap__read(struct perf_mmap *map, struct auxtrace_record *itr,
1307 struct perf_tool *tool, process_auxtrace_t fn) 1308 struct perf_tool *tool, process_auxtrace_t fn)
1308{ 1309{
1309 return __auxtrace_mmap__read(mm, itr, tool, fn, false, 0); 1310 return __auxtrace_mmap__read(map, itr, tool, fn, false, 0);
1310} 1311}
1311 1312
1312int auxtrace_mmap__read_snapshot(struct auxtrace_mmap *mm, 1313int auxtrace_mmap__read_snapshot(struct perf_mmap *map,
1313 struct auxtrace_record *itr, 1314 struct auxtrace_record *itr,
1314 struct perf_tool *tool, process_auxtrace_t fn, 1315 struct perf_tool *tool, process_auxtrace_t fn,
1315 size_t snapshot_size) 1316 size_t snapshot_size)
1316{ 1317{
1317 return __auxtrace_mmap__read(mm, itr, tool, fn, true, snapshot_size); 1318 return __auxtrace_mmap__read(map, itr, tool, fn, true, snapshot_size);
1318} 1319}
1319 1320
1320/** 1321/**
diff --git a/tools/perf/util/auxtrace.h b/tools/perf/util/auxtrace.h
index 6be89776358c..7eeb141361b9 100644
--- a/tools/perf/util/auxtrace.h
+++ b/tools/perf/util/auxtrace.h
@@ -33,6 +33,7 @@ union perf_event;
33struct perf_session; 33struct perf_session;
34struct perf_evlist; 34struct perf_evlist;
35struct perf_tool; 35struct perf_tool;
36struct perf_mmap;
36struct option; 37struct option;
37struct record_opts; 38struct record_opts;
38struct auxtrace_info_event; 39struct auxtrace_info_event;
@@ -437,10 +438,10 @@ typedef int (*process_auxtrace_t)(struct perf_tool *tool,
437 union perf_event *event, void *data1, 438 union perf_event *event, void *data1,
438 size_t len1, void *data2, size_t len2); 439 size_t len1, void *data2, size_t len2);
439 440
440int auxtrace_mmap__read(struct auxtrace_mmap *mm, struct auxtrace_record *itr, 441int auxtrace_mmap__read(struct perf_mmap *map, struct auxtrace_record *itr,
441 struct perf_tool *tool, process_auxtrace_t fn); 442 struct perf_tool *tool, process_auxtrace_t fn);
442 443
443int auxtrace_mmap__read_snapshot(struct auxtrace_mmap *mm, 444int auxtrace_mmap__read_snapshot(struct perf_mmap *map,
444 struct auxtrace_record *itr, 445 struct auxtrace_record *itr,
445 struct perf_tool *tool, process_auxtrace_t fn, 446 struct perf_tool *tool, process_auxtrace_t fn,
446 size_t snapshot_size); 447 size_t snapshot_size);