From: Kan Liang <kan.li...@intel.com> no functional change
backward-ring-buffer is the test case for backward mode. The rest of the test cases are forward mode. Signed-off-by: Kan Liang <kan.li...@intel.com> --- tools/perf/arch/x86/tests/perf-time-to-tsc.c | 9 ++++++++- tools/perf/tests/backward-ring-buffer.c | 10 ++++++++-- tools/perf/tests/bpf.c | 10 +++++++++- tools/perf/tests/code-reading.c | 8 +++++++- tools/perf/tests/keep-tracking.c | 8 +++++++- tools/perf/tests/mmap-basic.c | 9 ++++++++- tools/perf/tests/openat-syscall-tp-fields.c | 9 ++++++++- tools/perf/tests/perf-record.c | 9 ++++++++- tools/perf/tests/sw-clock.c | 8 +++++++- tools/perf/tests/switch-tracking.c | 8 +++++++- tools/perf/tests/task-exit.c | 8 +++++++- 11 files changed, 84 insertions(+), 12 deletions(-) diff --git a/tools/perf/arch/x86/tests/perf-time-to-tsc.c b/tools/perf/arch/x86/tests/perf-time-to-tsc.c index 5dd7efb..e1cdd23 100644 --- a/tools/perf/arch/x86/tests/perf-time-to-tsc.c +++ b/tools/perf/arch/x86/tests/perf-time-to-tsc.c @@ -57,6 +57,7 @@ int test__perf_time_to_tsc(struct test *test __maybe_unused, int subtest __maybe struct perf_tsc_conversion tc; struct perf_event_mmap_page *pc; union perf_event *event; + struct perf_mmap_read read; u64 test_tsc, comm1_tsc, comm2_tsc; u64 test_time, comm1_time = 0, comm2_time = 0; @@ -108,7 +109,12 @@ int test__perf_time_to_tsc(struct test *test __maybe_unused, int subtest __maybe perf_evlist__disable(evlist); for (i = 0; i < evlist->nr_mmaps; i++) { - while ((event = perf_evlist__mmap_read(evlist, i)) != NULL) { + if (perf_evlist__mmap_read_init(evlist, i, &read, false)) { + pr_err("Can't get mmap information\n"); + continue; + } + + while ((event = perf_mmap__read_event(&read)) != NULL) { struct perf_sample sample; if (event->header.type != PERF_RECORD_COMM || @@ -129,6 +135,7 @@ int test__perf_time_to_tsc(struct test *test __maybe_unused, int subtest __maybe next_event: perf_evlist__mmap_consume(evlist, i); } + perf_mmap__read_done(&read); } if (!comm1_time || !comm2_time) diff --git a/tools/perf/tests/backward-ring-buffer.c b/tools/perf/tests/backward-ring-buffer.c index d233ad3..4841b7e 100644 --- a/tools/perf/tests/backward-ring-buffer.c +++ b/tools/perf/tests/backward-ring-buffer.c @@ -31,9 +31,14 @@ static int count_samples(struct perf_evlist *evlist, int *sample_count, for (i = 0; i < evlist->nr_mmaps; i++) { union perf_event *event; + struct perf_mmap_read read; - perf_mmap__read_catchup(&evlist->backward_mmap[i]); - while ((event = perf_mmap__read_backward(&evlist->backward_mmap[i])) != NULL) { + if (perf_evlist__mmap_read_init(evlist, i, &read, true)) { + pr_err("Can't get mmap information\n"); + continue; + } + + while ((event = perf_mmap__read_event(&read)) != NULL) { const u32 type = event->header.type; switch (type) { @@ -48,6 +53,7 @@ static int count_samples(struct perf_evlist *evlist, int *sample_count, return TEST_FAIL; } } + perf_mmap__read_done(&read); } return TEST_OK; } diff --git a/tools/perf/tests/bpf.c b/tools/perf/tests/bpf.c index 34c22cd..0ab7f8f 100644 --- a/tools/perf/tests/bpf.c +++ b/tools/perf/tests/bpf.c @@ -180,13 +180,21 @@ static int do_test(struct bpf_object *obj, int (*func)(void), for (i = 0; i < evlist->nr_mmaps; i++) { union perf_event *event; + struct perf_mmap_read read; - while ((event = perf_evlist__mmap_read(evlist, i)) != NULL) { + if (perf_evlist__mmap_read_init(evlist, i, &read, false)) { + pr_err("Can't get mmap information\n"); + continue; + } + + while ((event = perf_mmap__read_event(&read)) != NULL) { const u32 type = event->header.type; if (type == PERF_RECORD_SAMPLE) count ++; + perf_evlist__mmap_consume(evlist, i); } + perf_mmap__read_done(&read); } if (count != expect) { diff --git a/tools/perf/tests/code-reading.c b/tools/perf/tests/code-reading.c index 466a462..69cf7fc 100644 --- a/tools/perf/tests/code-reading.c +++ b/tools/perf/tests/code-reading.c @@ -408,15 +408,21 @@ static int process_events(struct machine *machine, struct perf_evlist *evlist, struct state *state) { union perf_event *event; + struct perf_mmap_read read; int i, ret; for (i = 0; i < evlist->nr_mmaps; i++) { - while ((event = perf_evlist__mmap_read(evlist, i)) != NULL) { + if (perf_evlist__mmap_read_init(evlist, i, &read, false)) { + pr_err("Can't get mmap information\n"); + continue; + } + while ((event = perf_mmap__read_event(&read)) != NULL) { ret = process_event(machine, evlist, event, state); perf_evlist__mmap_consume(evlist, i); if (ret < 0) return ret; } + perf_mmap__read_done(&read); } return 0; } diff --git a/tools/perf/tests/keep-tracking.c b/tools/perf/tests/keep-tracking.c index 7394286..b2beab0 100644 --- a/tools/perf/tests/keep-tracking.c +++ b/tools/perf/tests/keep-tracking.c @@ -26,11 +26,16 @@ static int find_comm(struct perf_evlist *evlist, const char *comm) { union perf_event *event; + struct perf_mmap_read read; int i, found; found = 0; for (i = 0; i < evlist->nr_mmaps; i++) { - while ((event = perf_evlist__mmap_read(evlist, i)) != NULL) { + if (perf_evlist__mmap_read_init(evlist, i, &read, false)) { + pr_err("Can't get mmap information\n"); + continue; + } + while ((event = perf_mmap__read_event(&read)) != NULL) { if (event->header.type == PERF_RECORD_COMM && (pid_t)event->comm.pid == getpid() && (pid_t)event->comm.tid == getpid() && @@ -38,6 +43,7 @@ static int find_comm(struct perf_evlist *evlist, const char *comm) found += 1; perf_evlist__mmap_consume(evlist, i); } + perf_mmap__read_done(&read); } return found; } diff --git a/tools/perf/tests/mmap-basic.c b/tools/perf/tests/mmap-basic.c index bc8a70e..529c0c7 100644 --- a/tools/perf/tests/mmap-basic.c +++ b/tools/perf/tests/mmap-basic.c @@ -37,6 +37,7 @@ int test__basic_mmap(struct test *test __maybe_unused, int subtest __maybe_unuse expected_nr_events[nsyscalls], i, j; struct perf_evsel *evsels[nsyscalls], *evsel; char sbuf[STRERR_BUFSIZE]; + struct perf_mmap_read read; threads = thread_map__new(-1, getpid(), UINT_MAX); if (threads == NULL) { @@ -105,7 +106,12 @@ int test__basic_mmap(struct test *test __maybe_unused, int subtest __maybe_unuse ++foo; } - while ((event = perf_evlist__mmap_read(evlist, 0)) != NULL) { + if (perf_evlist__mmap_read_init(evlist, 0, &read, false)) { + pr_err("Can't get mmap information\n"); + goto out_delete_evlist; + } + + while ((event = perf_mmap__read_event(&read)) != NULL) { struct perf_sample sample; if (event->header.type != PERF_RECORD_SAMPLE) { @@ -130,6 +136,7 @@ int test__basic_mmap(struct test *test __maybe_unused, int subtest __maybe_unuse nr_events[evsel->idx]++; perf_evlist__mmap_consume(evlist, 0); } + perf_mmap__read_done(&read); err = 0; evlist__for_each_entry(evlist, evsel) { diff --git a/tools/perf/tests/openat-syscall-tp-fields.c b/tools/perf/tests/openat-syscall-tp-fields.c index b6ee1c4..8431561 100644 --- a/tools/perf/tests/openat-syscall-tp-fields.c +++ b/tools/perf/tests/openat-syscall-tp-fields.c @@ -82,8 +82,14 @@ int test__syscall_openat_tp_fields(struct test *test __maybe_unused, int subtest for (i = 0; i < evlist->nr_mmaps; i++) { union perf_event *event; + struct perf_mmap_read read; - while ((event = perf_evlist__mmap_read(evlist, i)) != NULL) { + if (perf_evlist__mmap_read_init(evlist, i, &read, false)) { + pr_err("Can't get mmap information\n"); + continue; + } + + while ((event = perf_mmap__read_event(&read)) != NULL) { const u32 type = event->header.type; int tp_flags; struct perf_sample sample; @@ -111,6 +117,7 @@ int test__syscall_openat_tp_fields(struct test *test __maybe_unused, int subtest goto out_ok; } + perf_mmap__read_done(&read); } if (nr_events == before) diff --git a/tools/perf/tests/perf-record.c b/tools/perf/tests/perf-record.c index 19b6500..c5e1f08 100644 --- a/tools/perf/tests/perf-record.c +++ b/tools/perf/tests/perf-record.c @@ -163,8 +163,14 @@ int test__PERF_RECORD(struct test *test __maybe_unused, int subtest __maybe_unus for (i = 0; i < evlist->nr_mmaps; i++) { union perf_event *event; + struct perf_mmap_read read; - while ((event = perf_evlist__mmap_read(evlist, i)) != NULL) { + if (perf_evlist__mmap_read_init(evlist, i, &read, false)) { + pr_err("Can't get mmap information\n"); + continue; + } + + while ((event = perf_mmap__read_event(&read)) != NULL) { const u32 type = event->header.type; const char *name = perf_event__name(type); @@ -267,6 +273,7 @@ int test__PERF_RECORD(struct test *test __maybe_unused, int subtest __maybe_unus perf_evlist__mmap_consume(evlist, i); } + perf_mmap__read_done(&read); } /* diff --git a/tools/perf/tests/sw-clock.c b/tools/perf/tests/sw-clock.c index d88511f..a5dd3e8 100644 --- a/tools/perf/tests/sw-clock.c +++ b/tools/perf/tests/sw-clock.c @@ -38,6 +38,7 @@ static int __test__sw_clock_freq(enum perf_sw_ids clock_id) }; struct cpu_map *cpus; struct thread_map *threads; + struct perf_mmap_read read; attr.sample_freq = 500; @@ -92,7 +93,11 @@ static int __test__sw_clock_freq(enum perf_sw_ids clock_id) perf_evlist__disable(evlist); - while ((event = perf_evlist__mmap_read(evlist, 0)) != NULL) { + if (perf_evlist__mmap_read_init(evlist, 0, &read, false)) { + pr_err("Can't get mmap information\n"); + goto out_delete_evlist; + } + while ((event = perf_mmap__read_event(&read)) != NULL) { struct perf_sample sample; if (event->header.type != PERF_RECORD_SAMPLE) @@ -109,6 +114,7 @@ static int __test__sw_clock_freq(enum perf_sw_ids clock_id) next_event: perf_evlist__mmap_consume(evlist, 0); } + perf_mmap__read_done(&read); if ((u64) nr_samples == total_periods) { pr_debug("All (%d) samples have period value of 1!\n", diff --git a/tools/perf/tests/switch-tracking.c b/tools/perf/tests/switch-tracking.c index 2acd785..3b4f2f6 100644 --- a/tools/perf/tests/switch-tracking.c +++ b/tools/perf/tests/switch-tracking.c @@ -257,16 +257,22 @@ static int process_events(struct perf_evlist *evlist, unsigned pos, cnt = 0; LIST_HEAD(events); struct event_node *events_array, *node; + struct perf_mmap_read read; int i, ret; for (i = 0; i < evlist->nr_mmaps; i++) { - while ((event = perf_evlist__mmap_read(evlist, i)) != NULL) { + if (perf_evlist__mmap_read_init(evlist, i, &read, false)) { + pr_err("Can't get mmap information\n"); + continue; + } + while ((event = perf_mmap__read_event(&read)) != NULL) { cnt += 1; ret = add_event(evlist, &events, event); perf_evlist__mmap_consume(evlist, i); if (ret < 0) goto out_free_nodes; } + perf_mmap__read_done(&read); } events_array = calloc(cnt, sizeof(struct event_node)); diff --git a/tools/perf/tests/task-exit.c b/tools/perf/tests/task-exit.c index f0881d0..2529fba 100644 --- a/tools/perf/tests/task-exit.c +++ b/tools/perf/tests/task-exit.c @@ -46,6 +46,7 @@ int test__task_exit(struct test *test __maybe_unused, int subtest __maybe_unused char sbuf[STRERR_BUFSIZE]; struct cpu_map *cpus; struct thread_map *threads; + struct perf_mmap_read read; signal(SIGCHLD, sig_handler); @@ -105,12 +106,17 @@ int test__task_exit(struct test *test __maybe_unused, int subtest __maybe_unused perf_evlist__start_workload(evlist); retry: - while ((event = perf_evlist__mmap_read(evlist, 0)) != NULL) { + if (perf_evlist__mmap_read_init(evlist, 0, &read, false)) { + pr_err("Can't get mmap information\n"); + goto out_delete_evlist; + } + while ((event = perf_mmap__read_event(&read)) != NULL) { if (event->header.type == PERF_RECORD_EXIT) nr_exit++; perf_evlist__mmap_consume(evlist, 0); } + perf_mmap__read_done(&read); if (!exited || !nr_exit) { perf_evlist__poll(evlist, -1); -- 2.5.5