diff options
-rw-r--r-- | tools/perf/util/session.c | 19 | ||||
-rw-r--r-- | tools/perf/util/tool.h | 2 |
2 files changed, 20 insertions, 1 deletions
diff --git a/tools/perf/util/session.c b/tools/perf/util/session.c index bad5f87ae001..ec1dec86d0e1 100644 --- a/tools/perf/util/session.c +++ b/tools/perf/util/session.c | |||
@@ -358,6 +358,14 @@ static int process_stat_round_stub(struct perf_session *perf_session __maybe_unu | |||
358 | return 0; | 358 | return 0; |
359 | } | 359 | } |
360 | 360 | ||
361 | static int perf_session__process_compressed_event_stub(struct perf_session *session __maybe_unused, | ||
362 | union perf_event *event __maybe_unused, | ||
363 | u64 file_offset __maybe_unused) | ||
364 | { | ||
365 | dump_printf(": unhandled!\n"); | ||
366 | return 0; | ||
367 | } | ||
368 | |||
361 | void perf_tool__fill_defaults(struct perf_tool *tool) | 369 | void perf_tool__fill_defaults(struct perf_tool *tool) |
362 | { | 370 | { |
363 | if (tool->sample == NULL) | 371 | if (tool->sample == NULL) |
@@ -430,6 +438,8 @@ void perf_tool__fill_defaults(struct perf_tool *tool) | |||
430 | tool->time_conv = process_event_op2_stub; | 438 | tool->time_conv = process_event_op2_stub; |
431 | if (tool->feature == NULL) | 439 | if (tool->feature == NULL) |
432 | tool->feature = process_event_op2_stub; | 440 | tool->feature = process_event_op2_stub; |
441 | if (tool->compressed == NULL) | ||
442 | tool->compressed = perf_session__process_compressed_event_stub; | ||
433 | } | 443 | } |
434 | 444 | ||
435 | static void swap_sample_id_all(union perf_event *event, void *data) | 445 | static void swap_sample_id_all(union perf_event *event, void *data) |
@@ -1373,7 +1383,9 @@ static s64 perf_session__process_user_event(struct perf_session *session, | |||
1373 | int fd = perf_data__fd(session->data); | 1383 | int fd = perf_data__fd(session->data); |
1374 | int err; | 1384 | int err; |
1375 | 1385 | ||
1376 | dump_event(session->evlist, event, file_offset, &sample); | 1386 | if (event->header.type != PERF_RECORD_COMPRESSED || |
1387 | tool->compressed == perf_session__process_compressed_event_stub) | ||
1388 | dump_event(session->evlist, event, file_offset, &sample); | ||
1377 | 1389 | ||
1378 | /* These events are processed right away */ | 1390 | /* These events are processed right away */ |
1379 | switch (event->header.type) { | 1391 | switch (event->header.type) { |
@@ -1426,6 +1438,11 @@ static s64 perf_session__process_user_event(struct perf_session *session, | |||
1426 | return tool->time_conv(session, event); | 1438 | return tool->time_conv(session, event); |
1427 | case PERF_RECORD_HEADER_FEATURE: | 1439 | case PERF_RECORD_HEADER_FEATURE: |
1428 | return tool->feature(session, event); | 1440 | return tool->feature(session, event); |
1441 | case PERF_RECORD_COMPRESSED: | ||
1442 | err = tool->compressed(session, event, file_offset); | ||
1443 | if (err) | ||
1444 | dump_event(session->evlist, event, file_offset, &sample); | ||
1445 | return err; | ||
1429 | default: | 1446 | default: |
1430 | return -EINVAL; | 1447 | return -EINVAL; |
1431 | } | 1448 | } |
diff --git a/tools/perf/util/tool.h b/tools/perf/util/tool.h index 250391672f9f..9096a6e3de59 100644 --- a/tools/perf/util/tool.h +++ b/tools/perf/util/tool.h | |||
@@ -28,6 +28,7 @@ typedef int (*event_attr_op)(struct perf_tool *tool, | |||
28 | 28 | ||
29 | typedef int (*event_op2)(struct perf_session *session, union perf_event *event); | 29 | typedef int (*event_op2)(struct perf_session *session, union perf_event *event); |
30 | typedef s64 (*event_op3)(struct perf_session *session, union perf_event *event); | 30 | typedef s64 (*event_op3)(struct perf_session *session, union perf_event *event); |
31 | typedef int (*event_op4)(struct perf_session *session, union perf_event *event, u64 data); | ||
31 | 32 | ||
32 | typedef int (*event_oe)(struct perf_tool *tool, union perf_event *event, | 33 | typedef int (*event_oe)(struct perf_tool *tool, union perf_event *event, |
33 | struct ordered_events *oe); | 34 | struct ordered_events *oe); |
@@ -72,6 +73,7 @@ struct perf_tool { | |||
72 | stat, | 73 | stat, |
73 | stat_round, | 74 | stat_round, |
74 | feature; | 75 | feature; |
76 | event_op4 compressed; | ||
75 | event_op3 auxtrace; | 77 | event_op3 auxtrace; |
76 | bool ordered_events; | 78 | bool ordered_events; |
77 | bool ordering_requires_timestamps; | 79 | bool ordering_requires_timestamps; |