diff options
Diffstat (limited to 'tools/perf/util/session.c')
-rw-r--r-- | tools/perf/util/session.c | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/tools/perf/util/session.c b/tools/perf/util/session.c index c2f4ca917469..eac14ce0ae8d 100644 --- a/tools/perf/util/session.c +++ b/tools/perf/util/session.c | |||
@@ -1297,8 +1297,10 @@ int __perf_session__process_events(struct perf_session *session, | |||
1297 | ui_progress__init(&prog, file_size, "Processing events..."); | 1297 | ui_progress__init(&prog, file_size, "Processing events..."); |
1298 | 1298 | ||
1299 | mmap_size = MMAP_SIZE; | 1299 | mmap_size = MMAP_SIZE; |
1300 | if (mmap_size > file_size) | 1300 | if (mmap_size > file_size) { |
1301 | mmap_size = file_size; | 1301 | mmap_size = file_size; |
1302 | session->one_mmap = true; | ||
1303 | } | ||
1302 | 1304 | ||
1303 | memset(mmaps, 0, sizeof(mmaps)); | 1305 | memset(mmaps, 0, sizeof(mmaps)); |
1304 | 1306 | ||
@@ -1320,6 +1322,10 @@ remap: | |||
1320 | mmaps[map_idx] = buf; | 1322 | mmaps[map_idx] = buf; |
1321 | map_idx = (map_idx + 1) & (ARRAY_SIZE(mmaps) - 1); | 1323 | map_idx = (map_idx + 1) & (ARRAY_SIZE(mmaps) - 1); |
1322 | file_pos = file_offset + head; | 1324 | file_pos = file_offset + head; |
1325 | if (session->one_mmap) { | ||
1326 | session->one_mmap_addr = buf; | ||
1327 | session->one_mmap_offset = file_offset; | ||
1328 | } | ||
1323 | 1329 | ||
1324 | more: | 1330 | more: |
1325 | event = fetch_mmaped_event(session, head, mmap_size, buf); | 1331 | event = fetch_mmaped_event(session, head, mmap_size, buf); |
@@ -1365,6 +1371,7 @@ out_err: | |||
1365 | ui_progress__finish(); | 1371 | ui_progress__finish(); |
1366 | perf_session__warn_about_errors(session, tool); | 1372 | perf_session__warn_about_errors(session, tool); |
1367 | perf_session_free_sample_buffers(session); | 1373 | perf_session_free_sample_buffers(session); |
1374 | session->one_mmap = false; | ||
1368 | return err; | 1375 | return err; |
1369 | } | 1376 | } |
1370 | 1377 | ||