perf test: Add 'struct test *' to the test functions
authorArnaldo Carvalho de Melo <acme@redhat.com>
Thu, 3 Aug 2017 18:16:31 +0000 (15:16 -0300)
committerArnaldo Carvalho de Melo <acme@redhat.com>
Fri, 11 Aug 2017 13:42:53 +0000 (10:42 -0300)
This way we'll be able to pass more test specific parameters without
having to change this function signature.

Will be used by the upcoming 'shell tests', shell scripts that will
call perf tools and check if they work as expected, comparing its
effects on the system (think 'perf probe foo') the output produced, etc.

Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: David Ahern <dsahern@gmail.com>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Michael Petlan <mpetlan@redhat.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Thomas Richter <tmricht@linux.vnet.ibm.com>
Cc: Wang Nan <wangnan0@huawei.com>
Link: http://lkml.kernel.org/n/tip-wq250w7j1opbzyiynozuajbl@git.kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
54 files changed:
tools/perf/arch/x86/include/arch-tests.h
tools/perf/arch/x86/tests/insn-x86.c
tools/perf/arch/x86/tests/intel-cqm.c
tools/perf/arch/x86/tests/perf-time-to-tsc.c
tools/perf/arch/x86/tests/rdpmc.c
tools/perf/tests/attr.c
tools/perf/tests/backward-ring-buffer.c
tools/perf/tests/bitmap.c
tools/perf/tests/bp_signal.c
tools/perf/tests/bp_signal_overflow.c
tools/perf/tests/bpf.c
tools/perf/tests/builtin-test.c
tools/perf/tests/clang.c
tools/perf/tests/code-reading.c
tools/perf/tests/cpumap.c
tools/perf/tests/dso-data.c
tools/perf/tests/dwarf-unwind.c
tools/perf/tests/event-times.c
tools/perf/tests/event_update.c
tools/perf/tests/evsel-roundtrip-name.c
tools/perf/tests/evsel-tp-sched.c
tools/perf/tests/expr.c
tools/perf/tests/fdarray.c
tools/perf/tests/hists_cumulate.c
tools/perf/tests/hists_filter.c
tools/perf/tests/hists_link.c
tools/perf/tests/hists_output.c
tools/perf/tests/is_printable_array.c
tools/perf/tests/keep-tracking.c
tools/perf/tests/kmod-path.c
tools/perf/tests/llvm.c
tools/perf/tests/mmap-basic.c
tools/perf/tests/mmap-thread-lookup.c
tools/perf/tests/openat-syscall-all-cpus.c
tools/perf/tests/openat-syscall-tp-fields.c
tools/perf/tests/openat-syscall.c
tools/perf/tests/parse-events.c
tools/perf/tests/parse-no-sample-id-all.c
tools/perf/tests/perf-hooks.c
tools/perf/tests/perf-record.c
tools/perf/tests/pmu.c
tools/perf/tests/python-use.c
tools/perf/tests/sample-parsing.c
tools/perf/tests/sdt.c
tools/perf/tests/stat.c
tools/perf/tests/sw-clock.c
tools/perf/tests/switch-tracking.c
tools/perf/tests/task-exit.c
tools/perf/tests/tests.h
tools/perf/tests/thread-map.c
tools/perf/tests/thread-mg-share.c
tools/perf/tests/topology.c
tools/perf/tests/unit_number__scnprintf.c
tools/perf/tests/vmlinux-kallsyms.c

index b48de2f5813c60ac037d717a05ee408581e8dec2..4e0b806a7a0fe0cc5a1881085e251775afb7d782 100644 (file)
@@ -1,11 +1,14 @@
 #ifndef ARCH_TESTS_H
 #define ARCH_TESTS_H
 
+#include <linux/compiler.h>
+struct test;
+
 /* Tests */
-int test__rdpmc(int subtest);
-int test__perf_time_to_tsc(int subtest);
-int test__insn_x86(int subtest);
-int test__intel_cqm_count_nmi_context(int subtest);
+int test__rdpmc(struct test *test __maybe_unused, int subtest);
+int test__perf_time_to_tsc(struct test *test __maybe_unused, int subtest);
+int test__insn_x86(struct test *test __maybe_unused, int subtest);
+int test__intel_cqm_count_nmi_context(struct test *test __maybe_unused, int subtest);
 
 #ifdef HAVE_DWARF_UNWIND_SUPPORT
 struct thread;
index 08d9b2bc185ca039855266e5608794dad7dbfdb0..b3860586a0c2d949ba5d57b76cfd78ddeaa170d4 100644 (file)
@@ -171,7 +171,7 @@ static int test_data_set(struct test_data *dat_set, int x86_64)
  * verbose (-v) option to see all the instructions and whether or not they
  * decoded successfuly.
  */
-int test__insn_x86(int subtest __maybe_unused)
+int test__insn_x86(struct test *test __maybe_unused, int subtest __maybe_unused)
 {
        int ret = 0;
 
index f9713a71d77e8be3d7766ba91cf69556d401bedc..57f86b6e7d6f52f2743ab26fef4869883da1799d 100644 (file)
@@ -36,7 +36,7 @@ static pid_t spawn(void)
  * the last read counter value to avoid triggering a WARN_ON_ONCE() in
  * smp_call_function_many() caused by sending IPIs from NMI context.
  */
-int test__intel_cqm_count_nmi_context(int subtest __maybe_unused)
+int test__intel_cqm_count_nmi_context(struct test *test __maybe_unused, int subtest __maybe_unused)
 {
        struct perf_evlist *evlist = NULL;
        struct perf_evsel *evsel = NULL;
index e3ae9cff2b6716617088c2baf3d962370df49b81..5dd7efb192ce962b3b56995aa707c429f5d01c71 100644 (file)
@@ -37,7 +37,7 @@
  * %0 is returned, otherwise %-1 is returned.  If TSC conversion is not
  * supported then then the test passes but " (not supported)" is printed.
  */
-int test__perf_time_to_tsc(int subtest __maybe_unused)
+int test__perf_time_to_tsc(struct test *test __maybe_unused, int subtest __maybe_unused)
 {
        struct record_opts opts = {
                .mmap_pages          = UINT_MAX,
index 500cf96db9790b66dfc54a726316a83583c4a24a..17fec30a0b31af067c99817b02394e85113aca82 100644 (file)
@@ -154,7 +154,7 @@ out_close:
        return 0;
 }
 
-int test__rdpmc(int subtest __maybe_unused)
+int test__rdpmc(struct test *test __maybe_unused, int subtest __maybe_unused)
 {
        int status = 0;
        int wret = 0;
index 84c0eb598a67176a470a3aaeacc325bf82600f6c..c9aafed7da15ad4587616a98a48cb8de24570ed8 100644 (file)
@@ -169,7 +169,7 @@ static int run_dir(const char *d, const char *perf)
        return system(cmd);
 }
 
-int test__attr(int subtest __maybe_unused)
+int test__attr(struct test *test __maybe_unused, int subtest __maybe_unused)
 {
        struct stat st;
        char path_perf[PATH_MAX];
index 50f6d7afee586320b7193b88dea7f521c28aa5f6..d233ad33646319e2a4f8428454fb1d637dd1804e 100644 (file)
@@ -75,7 +75,7 @@ static int do_test(struct perf_evlist *evlist, int mmap_pages,
 }
 
 
-int test__backward_ring_buffer(int subtest __maybe_unused)
+int test__backward_ring_buffer(struct test *test __maybe_unused, int subtest __maybe_unused)
 {
        int ret = TEST_SKIP, err, sample_count = 0, comm_count = 0;
        char pid[16], sbuf[STRERR_BUFSIZE];
index 9abe6c13090ff89ec87d5cee0c72e8467e838fa7..0d7c06584905fb4234abf4cacea86394aec09fa9 100644 (file)
@@ -40,7 +40,7 @@ static int test_bitmap(const char *str)
        return ret;
 }
 
-int test__bitmap_print(int subtest __maybe_unused)
+int test__bitmap_print(struct test *test __maybe_unused, int subtest __maybe_unused)
 {
        TEST_ASSERT_VAL("failed to convert map", test_bitmap("1"));
        TEST_ASSERT_VAL("failed to convert map", test_bitmap("1,5"));
index 39bbb97cd30aac7704d460e0093c1d82769facf5..97937e1bc53a0c358bf34a9cc50a67f150a1b905 100644 (file)
@@ -164,7 +164,7 @@ static long long bp_count(int fd)
        return count;
 }
 
-int test__bp_signal(int subtest __maybe_unused)
+int test__bp_signal(struct test *test __maybe_unused, int subtest __maybe_unused)
 {
        struct sigaction sa;
        long long count1, count2, count3;
index 3b1ac6f31b154412a71e56be084b0f033dff6b3a..61ecd8021f49248485040c9d2523207d351554cd 100644 (file)
@@ -57,7 +57,7 @@ static long long bp_count(int fd)
 #define EXECUTIONS 10000
 #define THRESHOLD  100
 
-int test__bp_signal_overflow(int subtest __maybe_unused)
+int test__bp_signal_overflow(struct test *test __maybe_unused, int subtest __maybe_unused)
 {
        struct perf_event_attr pe;
        struct sigaction sa;
index 5876da126b584febb15b128fb28baac1b30baac9..4422ab636d3034eb5e214fe6777ea940133e6027 100644 (file)
@@ -321,7 +321,7 @@ static int check_env(void)
        return 0;
 }
 
-int test__bpf(int i)
+int test__bpf(struct test *test __maybe_unused, int i)
 {
        int err;
 
@@ -351,7 +351,7 @@ const char *test__bpf_subtest_get_desc(int i __maybe_unused)
        return NULL;
 }
 
-int test__bpf(int i __maybe_unused)
+int test__bpf(struct test *test __maybe_unused, int i __maybe_unused)
 {
        pr_debug("Skip BPF test because BPF support is not compiled\n");
        return TEST_SKIP;
index 436e229939093030bb45416d8911b468c572e070..0186abbad8994a14f43655e8bd23b0d1b2e280f0 100644 (file)
@@ -179,7 +179,7 @@ static struct test generic_tests[] = {
        },
        {
                .desc = "Session topology",
-               .func = test_session_topology,
+               .func = test__session_topology,
        },
        {
                .desc = "BPF filter",
@@ -325,7 +325,7 @@ static int run_test(struct test *test, int subtest)
                        }
                }
 
-               err = test->func(subtest);
+               err = test->func(test, subtest);
                if (!dont_fork)
                        exit(err);
        }
index c5bb2203f5a90850564397998a8af4b8cb3bfbc1..c60ec916f0f29c17bc17232898a3545af165452c 100644 (file)
@@ -33,12 +33,12 @@ const char *test__clang_subtest_get_desc(int i)
 }
 
 #ifndef HAVE_LIBCLANGLLVM_SUPPORT
-int test__clang(int i __maybe_unused)
+int test__clang(struct test *test __maybe_unused, int i __maybe_unused)
 {
        return TEST_SKIP;
 }
 #else
-int test__clang(int i)
+int test__clang(struct test *test __maybe_unused, int i)
 {
        if (i < 0 || i >= (int)ARRAY_SIZE(clang_testcase_table))
                return TEST_FAIL;
index 94b7c7b02bdefbb33f2987677c11b3577ab062ec..761c5a448c5607299d1801bd097329f9b5d9d34d 100644 (file)
@@ -673,7 +673,7 @@ out_err:
        return err;
 }
 
-int test__code_reading(int subtest __maybe_unused)
+int test__code_reading(struct test *test __maybe_unused, int subtest __maybe_unused)
 {
        int ret;
 
index 4478773cdb9751b4f1f5a89f97c1808ad81d1bae..199702252270f1781529031211459bf2ec79272e 100644 (file)
@@ -72,7 +72,7 @@ static int process_event_cpus(struct perf_tool *tool __maybe_unused,
 }
 
 
-int test__cpu_map_synthesize(int subtest __maybe_unused)
+int test__cpu_map_synthesize(struct test *test __maybe_unused, int subtest __maybe_unused)
 {
        struct cpu_map *cpus;
 
@@ -106,7 +106,7 @@ static int cpu_map_print(const char *str)
        return !strcmp(buf, str);
 }
 
-int test__cpu_map_print(int subtest __maybe_unused)
+int test__cpu_map_print(struct test *test __maybe_unused, int subtest __maybe_unused)
 {
        TEST_ASSERT_VAL("failed to convert map", cpu_map_print("1"));
        TEST_ASSERT_VAL("failed to convert map", cpu_map_print("1,5"));
index 8f08df5861cb36c7b3415dd706e63cff8ad1aa46..30aead42d136137c451f4c4228b31e36bd7597bc 100644 (file)
@@ -112,7 +112,7 @@ static int dso__data_fd(struct dso *dso, struct machine *machine)
        return fd;
 }
 
-int test__dso_data(int subtest __maybe_unused)
+int test__dso_data(struct test *test __maybe_unused, int subtest __maybe_unused)
 {
        struct machine machine;
        struct dso *dso;
@@ -247,7 +247,7 @@ static int set_fd_limit(int n)
        return setrlimit(RLIMIT_NOFILE, &rlim);
 }
 
-int test__dso_data_cache(int subtest __maybe_unused)
+int test__dso_data_cache(struct test *test __maybe_unused, int subtest __maybe_unused)
 {
        struct machine machine;
        long nr_end, nr = open_files_cnt();
@@ -307,7 +307,7 @@ int test__dso_data_cache(int subtest __maybe_unused)
        return 0;
 }
 
-int test__dso_data_reopen(int subtest __maybe_unused)
+int test__dso_data_reopen(struct test *test __maybe_unused, int subtest __maybe_unused)
 {
        struct machine machine;
        long nr_end, nr = open_files_cnt();
index 3e56d08f799566f3ea69dbd00f018df03497b862..2a7b9b47bbcbfb1a4c5e5c82def3b401fbb75507 100644 (file)
@@ -154,7 +154,7 @@ static noinline int krava_1(struct thread *thread)
        return krava_2(thread);
 }
 
-int test__dwarf_unwind(int subtest __maybe_unused)
+int test__dwarf_unwind(struct test *test __maybe_unused, int subtest __maybe_unused)
 {
        struct machine *machine;
        struct thread *thread;
index 634f20c631d8f9981dc89499998e3315d7661243..b82b981c32594aa367c7f114a6bc27f77cebb9b0 100644 (file)
@@ -213,7 +213,7 @@ out_err:
  * and checks that enabled and running times
  * match.
  */
-int test__event_times(int subtest __maybe_unused)
+int test__event_times(struct test *test __maybe_unused, int subtest __maybe_unused)
 {
        int err, ret = 0;
 
index 63ecf21750eb0dca6e865cb90a57905df1fb566e..9484da2ec6b4215713059f81b66d02d3899fe9cb 100644 (file)
@@ -76,7 +76,7 @@ static int process_event_cpus(struct perf_tool *tool __maybe_unused,
        return 0;
 }
 
-int test__event_update(int subtest __maybe_unused)
+int test__event_update(struct test *test __maybe_unused, int subtest __maybe_unused)
 {
        struct perf_evlist *evlist;
        struct perf_evsel *evsel;
index d2bea6f780f8a1184c67c92d96727c7ddc715046..d32759b6e38a53f43f64ad74bf058f54e3f5bf7b 100644 (file)
@@ -97,7 +97,7 @@ out_delete_evlist:
 #define perf_evsel__name_array_test(names) \
        __perf_evsel__name_array_test(names, ARRAY_SIZE(names))
 
-int test__perf_evsel__roundtrip_name_test(int subtest __maybe_unused)
+int test__perf_evsel__roundtrip_name_test(struct test *test __maybe_unused, int subtest __maybe_unused)
 {
        int err = 0, ret = 0;
 
index 1984b3bbfe15d2bc6f407e1e272d3f1a95046916..5fc906d26c5ccde1d7e9100898d126300846f2a7 100644 (file)
@@ -32,7 +32,7 @@ static int perf_evsel__test_field(struct perf_evsel *evsel, const char *name,
        return ret;
 }
 
-int test__perf_evsel__tp_sched_test(int subtest __maybe_unused)
+int test__perf_evsel__tp_sched_test(struct test *test __maybe_unused, int subtest __maybe_unused)
 {
        struct perf_evsel *evsel = perf_evsel__newtp("sched", "sched_switch");
        int ret = 0;
index 6c6a3749aaf6bf5e7f54585e2872bcdcfc12c0a3..e93903295532a732eee2e6f4201421cef2eea14b 100644 (file)
@@ -13,7 +13,7 @@ static int test(struct parse_ctx *ctx, const char *e, double val2)
        return 0;
 }
 
-int test__expr(int subtest __maybe_unused)
+int test__expr(struct test *t __maybe_unused, int subtest __maybe_unused)
 {
        const char *p;
        const char **other;
index bc5982f42dc3a173d81e5100172578ac4bdb280b..7d3a9e2ff8977153db1c38bafbac082cd8a3269a 100644 (file)
@@ -26,7 +26,7 @@ static int fdarray__fprintf_prefix(struct fdarray *fda, const char *prefix, FILE
        return printed + fdarray__fprintf(fda, fp);
 }
 
-int test__fdarray__filter(int subtest __maybe_unused)
+int test__fdarray__filter(struct test *test __maybe_unused, int subtest __maybe_unused)
 {
        int nr_fds, expected_fd[2], fd, err = TEST_FAIL;
        struct fdarray *fda = fdarray__new(5, 5);
@@ -104,7 +104,7 @@ out:
        return err;
 }
 
-int test__fdarray__add(int subtest __maybe_unused)
+int test__fdarray__add(struct test *test __maybe_unused, int subtest __maybe_unused)
 {
        int err = TEST_FAIL;
        struct fdarray *fda = fdarray__new(2, 2);
index d549a9f2c41b30f4d35eae742dbdfcb584ee804d..8d19c0200cb74c6be1b08bcdbd5860d2727e93bc 100644 (file)
@@ -687,7 +687,7 @@ out:
        return err;
 }
 
-int test__hists_cumulate(int subtest __maybe_unused)
+int test__hists_cumulate(struct test *test __maybe_unused, int subtest __maybe_unused)
 {
        int err = TEST_FAIL;
        struct machines machines;
index df9c91f49af19927ad48bc9c103aaf8bd43e0c40..755ca551b810ca44434d4a56c1be92b86095d221 100644 (file)
@@ -101,7 +101,7 @@ out:
        return TEST_FAIL;
 }
 
-int test__hists_filter(int subtest __maybe_unused)
+int test__hists_filter(struct test *test __maybe_unused, int subtest __maybe_unused)
 {
        int err = TEST_FAIL;
        struct machines machines;
index a26cbb79e988832af5eeddd4b9970ba37326a248..073c9c2856bc4dae2a65c3f3f90cdd9021f9acb2 100644 (file)
@@ -264,7 +264,7 @@ static int validate_link(struct hists *leader, struct hists *other)
        return __validate_link(leader, 0) || __validate_link(other, 1);
 }
 
-int test__hists_link(int subtest __maybe_unused)
+int test__hists_link(struct test *test __maybe_unused, int subtest __maybe_unused)
 {
        int err = -1;
        struct hists *hists, *first_hists;
index 06e5080182d31e879b25d2cabfc43c7a9a552097..282d62eaebe2512282e222ebc78bd857192011f5 100644 (file)
@@ -573,7 +573,7 @@ out:
        return err;
 }
 
-int test__hists_output(int subtest __maybe_unused)
+int test__hists_output(struct test *test __maybe_unused, int subtest __maybe_unused)
 {
        int err = TEST_FAIL;
        struct machines machines;
index a5192f6a20d798990958adcfea8da970416183cd..38f765767587ae0e3c7a9a6df15ad1b892a36eb7 100644 (file)
@@ -4,7 +4,7 @@
 #include "debug.h"
 #include "print_binary.h"
 
-int test__is_printable_array(int subtest __maybe_unused)
+int test__is_printable_array(struct test *test __maybe_unused, int subtest __maybe_unused)
 {
        char buf1[] = { 'k', 'r', 4, 'v', 'a', 0 };
        char buf2[] = { 'k', 'r', 'a', 'v', 4, 0 };
index 614e45a3c6038099fd9fe6b838db0f1988d20855..739428603b71293ce3ba5d44304a5c6aa77868ef 100644 (file)
@@ -49,7 +49,7 @@ static int find_comm(struct perf_evlist *evlist, const char *comm)
  * when an event is disabled but a dummy software event is not disabled.  If the
  * test passes %0 is returned, otherwise %-1 is returned.
  */
-int test__keep_tracking(int subtest __maybe_unused)
+int test__keep_tracking(struct test *test __maybe_unused, int subtest __maybe_unused)
 {
        struct record_opts opts = {
                .mmap_pages          = UINT_MAX,
index 6cd9e5107f7784ab4c340f80a03bc786b7c264b4..8b9d4ba06c0e11177f2acec6bfe40b87a4f46727 100644 (file)
@@ -50,7 +50,7 @@ static int test_is_kernel_module(const char *path, int cpumode, bool expect)
 #define M(path, c, e) \
        TEST_ASSERT_VAL("failed", !test_is_kernel_module(path, c, e))
 
-int test__kmod_path__parse(int subtest __maybe_unused)
+int test__kmod_path__parse(struct test *t __maybe_unused, int subtest __maybe_unused)
 {
        /* path                alloc_name  alloc_ext   kmod  comp   name     ext */
        T("/xxxx/xxxx/x-x.ko", true      , true      , true, false, "[x_x]", NULL);
index 482b5365e68d85b3ea4915631f398873e575d72b..5187b50dbafe558b110ef80dfbd3f4ff0a2beaef 100644 (file)
@@ -132,7 +132,7 @@ out:
        return ret;
 }
 
-int test__llvm(int subtest)
+int test__llvm(struct test *test __maybe_unused, int subtest)
 {
        int ret;
        void *obj_buf = NULL;
index 15c770856aacc6363c5b2618e51bb1356debbde1..bc8a70ee46d8b6bbb734409c06205ab7247562c2 100644 (file)
@@ -22,7 +22,7 @@
  * Then it checks if the number of syscalls reported as perf events by
  * the kernel corresponds to the number of syscalls made.
  */
-int test__basic_mmap(int subtest __maybe_unused)
+int test__basic_mmap(struct test *test __maybe_unused, int subtest __maybe_unused)
 {
        int err = -1;
        union perf_event *event;
index 6ea4d8a5d26b15ff4b3e0a228c51850260263d13..f94a4196e7c9d9a38a97d4ca60c641f2074f4e1e 100644 (file)
@@ -221,7 +221,7 @@ static int mmap_events(synth_cb synth)
  *
  * by using all thread objects.
  */
-int test__mmap_thread_lookup(int subtest __maybe_unused)
+int test__mmap_thread_lookup(struct test *test __maybe_unused, int subtest __maybe_unused)
 {
        /* perf_event__synthesize_threads synthesize */
        TEST_ASSERT_VAL("failed with sythesizing all",
index 1a74dd9fd06792001f111d3ca4b42ce484319704..87265117fd7f51b2f59a0d490bf2345e293db5d7 100644 (file)
@@ -16,7 +16,7 @@
 #include "debug.h"
 #include "stat.h"
 
-int test__openat_syscall_event_on_all_cpus(int subtest __maybe_unused)
+int test__openat_syscall_event_on_all_cpus(struct test *test __maybe_unused, int subtest __maybe_unused)
 {
        int err = -1, fd, cpu;
        struct cpu_map *cpus;
index 9788fac910950d63244f83d417a1e421edd98ee4..b6ee1c41f45d674b8cc0341169bcce2b115fa368 100644 (file)
@@ -14,7 +14,7 @@
 #define AT_FDCWD       -100
 #endif
 
-int test__syscall_openat_tp_fields(int subtest __maybe_unused)
+int test__syscall_openat_tp_fields(struct test *test __maybe_unused, int subtest __maybe_unused)
 {
        struct record_opts opts = {
                .target = {
index e44506e21ee779e33f4d8ffa7e6e6b4ebe40cc36..85bb6729d303a828afdd7a7125fb9ccfd4f9dc8c 100644 (file)
@@ -10,7 +10,7 @@
 #include "debug.h"
 #include "tests.h"
 
-int test__openat_syscall_event(int subtest __maybe_unused)
+int test__openat_syscall_event(struct test *test __maybe_unused, int subtest __maybe_unused)
 {
        int err = -1, fd;
        struct perf_evsel *evsel;
index 812a053d1941f0ad49d818371fa5aacbca4a3013..0f0b025faa4b4748928f76dd956b51499c1e0027 100644 (file)
@@ -1810,7 +1810,7 @@ static int test_pmu_events(void)
        return ret;
 }
 
-int test__parse_events(int subtest __maybe_unused)
+int test__parse_events(struct test *test __maybe_unused, int subtest __maybe_unused)
 {
        int ret1, ret2 = 0;
 
index c6207db09f12850f02123525a07c0c025e08a55d..91867dcc39f0142544eaef16aea30dc4ca3cf7cb 100644 (file)
@@ -68,7 +68,7 @@ struct test_attr_event {
  *
  * Return: %0 on success, %-1 if the test fails.
  */
-int test__parse_no_sample_id_all(int subtest __maybe_unused)
+int test__parse_no_sample_id_all(struct test *test __maybe_unused, int subtest __maybe_unused)
 {
        int err;
 
index 665ecc19671c6cbc0357038819bda16a69cda1d0..bf2517d6de7079dacffb9d78e006952dd593823d 100644 (file)
@@ -27,7 +27,7 @@ static void the_hook(void *_hook_flags)
        *p = 0;
 }
 
-int test__perf_hooks(int subtest __maybe_unused)
+int test__perf_hooks(struct test *test __maybe_unused, int subtest __maybe_unused)
 {
        int hook_flags = 0;
 
index d37cd9588cc0357577a513bca0afe9e600b0c58f..19b650064b703b5baf5445f3eba33038bf71e651 100644 (file)
@@ -37,7 +37,7 @@ realloc:
        return cpu;
 }
 
-int test__PERF_RECORD(int subtest __maybe_unused)
+int test__PERF_RECORD(struct test *test __maybe_unused, int subtest __maybe_unused)
 {
        struct record_opts opts = {
                .target = {
index a6d7aef3003056446f0b4507409d6672a63c986a..9f7f589f9c548b770518c51a3d5b33a8c19d5f7c 100644 (file)
@@ -135,7 +135,7 @@ static struct list_head *test_terms_list(void)
        return &terms;
 }
 
-int test__pmu(int subtest __maybe_unused)
+int test__pmu(struct test *test __maybe_unused, int subtest __maybe_unused)
 {
        char *format = test_format_dir_get();
        LIST_HEAD(formats);
index fa79509da535403888c41cfa33a3ca3ff89033fd..598a7e058ad4f1e04afbe563b204d8cc795fd691 100644 (file)
@@ -9,7 +9,7 @@
 
 extern int verbose;
 
-int test__python_use(int subtest __maybe_unused)
+int test__python_use(struct test *test __maybe_unused, int subtest __maybe_unused)
 {
        char *cmd;
        int ret;
index bac5c3885b3be58180eb4fc258c72b9b0c8241be..6d028f42b3cf204e1588bca9e04897a3e9d206ba 100644 (file)
@@ -292,7 +292,7 @@ out_free:
  * checks sample format bits separately and together.  If the test passes %0 is
  * returned, otherwise %-1 is returned.
  */
-int test__sample_parsing(int subtest __maybe_unused)
+int test__sample_parsing(struct test *test __maybe_unused, int subtest __maybe_unused)
 {
        const u64 rf[] = {4, 5, 6, 7, 12, 13, 14, 15};
        u64 sample_type;
index d80171526f6febfef62b00519679053f56ed87b9..a9903d9b8bc2fb272e6cea6cafa438c52c5a3234 100644 (file)
@@ -71,7 +71,7 @@ static int search_cached_probe(const char *target,
        return ret;
 }
 
-int test__sdt_event(int subtests __maybe_unused)
+int test__sdt_event(struct test *test __maybe_unused, int subtests __maybe_unused)
 {
        int ret = TEST_FAIL;
        char __tempdir[] = "./test-buildid-XXXXXX";
@@ -109,7 +109,7 @@ error:
        return ret;
 }
 #else
-int test__sdt_event(int subtests __maybe_unused)
+int test__sdt_event(struct test *test __maybe_unused, int subtests __maybe_unused)
 {
        pr_debug("Skip SDT event test because SDT support is not compiled\n");
        return TEST_SKIP;
index 6a20ff2326bb1eb4127b8b6a76eda044d5ecb641..7f988a9390361fdef00a7eab206f3eba13cf7f83 100644 (file)
@@ -45,7 +45,7 @@ static int process_stat_config_event(struct perf_tool *tool __maybe_unused,
        return 0;
 }
 
-int test__synthesize_stat_config(int subtest __maybe_unused)
+int test__synthesize_stat_config(struct test *test __maybe_unused, int subtest __maybe_unused)
 {
        struct perf_stat_config stat_config = {
                .aggr_mode      = AGGR_CORE,
@@ -75,7 +75,7 @@ static int process_stat_event(struct perf_tool *tool __maybe_unused,
        return 0;
 }
 
-int test__synthesize_stat(int subtest __maybe_unused)
+int test__synthesize_stat(struct test *test __maybe_unused, int subtest __maybe_unused)
 {
        struct perf_counts_values count;
 
@@ -101,7 +101,7 @@ static int process_stat_round_event(struct perf_tool *tool __maybe_unused,
        return 0;
 }
 
-int test__synthesize_stat_round(int subtest __maybe_unused)
+int test__synthesize_stat_round(struct test *test __maybe_unused, int subtest __maybe_unused)
 {
        TEST_ASSERT_VAL("failed to synthesize stat_config",
                !perf_event__synthesize_stat_round(NULL, 0xdeadbeef, PERF_STAT_ROUND_TYPE__INTERVAL,
index 828494db4a190945dd3da7aa0d3ae3a987a52d36..d88511f6072c2429f6c9956b83e3be803e780148 100644 (file)
@@ -124,7 +124,7 @@ out_delete_evlist:
        return err;
 }
 
-int test__sw_clock_freq(int subtest __maybe_unused)
+int test__sw_clock_freq(struct test *test __maybe_unused, int subtest __maybe_unused)
 {
        int ret;
 
index 65474fd80da7216df44bc2e221660b89f4b3a02d..2acd78555192d1482fabf8bc78a6f26de91006bd 100644 (file)
@@ -306,7 +306,7 @@ out_free_nodes:
  * evsel->system_wide and evsel->tracking flags (respectively) with other events
  * sometimes enabled or disabled.
  */
-int test__switch_tracking(int subtest __maybe_unused)
+int test__switch_tracking(struct test *test __maybe_unused, int subtest __maybe_unused)
 {
        const char *sched_switch = "sched:sched_switch";
        struct switch_tracking switch_tracking = { .tids = NULL, };
index cf00ebad2ef5ccefabee6324e004fc9b4d2e601b..f0881d0dd9c9f60b542e5c727689bd156e245c86 100644 (file)
@@ -32,7 +32,7 @@ static void workload_exec_failed_signal(int signo __maybe_unused,
  * if the number of exit event reported by the kernel is 1 or not
  * in order to check the kernel returns correct number of event.
  */
-int test__task_exit(int subtest __maybe_unused)
+int test__task_exit(struct test *test __maybe_unused, int subtest __maybe_unused)
 {
        int err = -1;
        union perf_event *event;
index 577363809c9b1b54731f7e80b291278bf2764e78..bc207ac48fde00bd9d187e2b8f1f0643c65d008e 100644 (file)
@@ -28,7 +28,7 @@ enum {
 
 struct test {
        const char *desc;
-       int (*func)(int subtest);
+       int (*func)(struct test *test, int subtest);
        struct {
                bool skip_if_fail;
                int (*get_nr)(void);
@@ -38,67 +38,67 @@ struct test {
 };
 
 /* Tests */
-int test__vmlinux_matches_kallsyms(int subtest);
-int test__openat_syscall_event(int subtest);
-int test__openat_syscall_event_on_all_cpus(int subtest);
-int test__basic_mmap(int subtest);
-int test__PERF_RECORD(int subtest);
-int test__perf_evsel__roundtrip_name_test(int subtest);
-int test__perf_evsel__tp_sched_test(int subtest);
-int test__syscall_openat_tp_fields(int subtest);
-int test__pmu(int subtest);
-int test__attr(int subtest);
-int test__dso_data(int subtest);
-int test__dso_data_cache(int subtest);
-int test__dso_data_reopen(int subtest);
-int test__parse_events(int subtest);
-int test__hists_link(int subtest);
-int test__python_use(int subtest);
-int test__bp_signal(int subtest);
-int test__bp_signal_overflow(int subtest);
-int test__task_exit(int subtest);
-int test__sw_clock_freq(int subtest);
-int test__code_reading(int subtest);
-int test__sample_parsing(int subtest);
-int test__keep_tracking(int subtest);
-int test__parse_no_sample_id_all(int subtest);
-int test__dwarf_unwind(int subtest);
-int test__expr(int subtest);
-int test__hists_filter(int subtest);
-int test__mmap_thread_lookup(int subtest);
-int test__thread_mg_share(int subtest);
-int test__hists_output(int subtest);
-int test__hists_cumulate(int subtest);
-int test__switch_tracking(int subtest);
-int test__fdarray__filter(int subtest);
-int test__fdarray__add(int subtest);
-int test__kmod_path__parse(int subtest);
-int test__thread_map(int subtest);
-int test__llvm(int subtest);
+int test__vmlinux_matches_kallsyms(struct test *test, int subtest);
+int test__openat_syscall_event(struct test *test, int subtest);
+int test__openat_syscall_event_on_all_cpus(struct test *test, int subtest);
+int test__basic_mmap(struct test *test, int subtest);
+int test__PERF_RECORD(struct test *test, int subtest);
+int test__perf_evsel__roundtrip_name_test(struct test *test, int subtest);
+int test__perf_evsel__tp_sched_test(struct test *test, int subtest);
+int test__syscall_openat_tp_fields(struct test *test, int subtest);
+int test__pmu(struct test *test, int subtest);
+int test__attr(struct test *test, int subtest);
+int test__dso_data(struct test *test, int subtest);
+int test__dso_data_cache(struct test *test, int subtest);
+int test__dso_data_reopen(struct test *test, int subtest);
+int test__parse_events(struct test *test, int subtest);
+int test__hists_link(struct test *test, int subtest);
+int test__python_use(struct test *test, int subtest);
+int test__bp_signal(struct test *test, int subtest);
+int test__bp_signal_overflow(struct test *test, int subtest);
+int test__task_exit(struct test *test, int subtest);
+int test__sw_clock_freq(struct test *test, int subtest);
+int test__code_reading(struct test *test, int subtest);
+int test__sample_parsing(struct test *test, int subtest);
+int test__keep_tracking(struct test *test, int subtest);
+int test__parse_no_sample_id_all(struct test *test, int subtest);
+int test__dwarf_unwind(struct test *test, int subtest);
+int test__expr(struct test *test, int subtest);
+int test__hists_filter(struct test *test, int subtest);
+int test__mmap_thread_lookup(struct test *test, int subtest);
+int test__thread_mg_share(struct test *test, int subtest);
+int test__hists_output(struct test *test, int subtest);
+int test__hists_cumulate(struct test *test, int subtest);
+int test__switch_tracking(struct test *test, int subtest);
+int test__fdarray__filter(struct test *test, int subtest);
+int test__fdarray__add(struct test *test, int subtest);
+int test__kmod_path__parse(struct test *test, int subtest);
+int test__thread_map(struct test *test, int subtest);
+int test__llvm(struct test *test, int subtest);
 const char *test__llvm_subtest_get_desc(int subtest);
 int test__llvm_subtest_get_nr(void);
-int test__bpf(int subtest);
+int test__bpf(struct test *test, int subtest);
 const char *test__bpf_subtest_get_desc(int subtest);
 int test__bpf_subtest_get_nr(void);
-int test_session_topology(int subtest);
-int test__thread_map_synthesize(int subtest);
-int test__thread_map_remove(int subtest);
-int test__cpu_map_synthesize(int subtest);
-int test__synthesize_stat_config(int subtest);
-int test__synthesize_stat(int subtest);
-int test__synthesize_stat_round(int subtest);
-int test__event_update(int subtest);
-int test__event_times(int subtest);
-int test__backward_ring_buffer(int subtest);
-int test__cpu_map_print(int subtest);
-int test__sdt_event(int subtest);
-int test__is_printable_array(int subtest);
-int test__bitmap_print(int subtest);
-int test__perf_hooks(int subtest);
-int test__clang(int subtest);
+int test__session_topology(struct test *test, int subtest);
+int test__thread_map_synthesize(struct test *test, int subtest);
+int test__thread_map_remove(struct test *test, int subtest);
+int test__cpu_map_synthesize(struct test *test, int subtest);
+int test__synthesize_stat_config(struct test *test, int subtest);
+int test__synthesize_stat(struct test *test, int subtest);
+int test__synthesize_stat_round(struct test *test, int subtest);
+int test__event_update(struct test *test, int subtest);
+int test__event_times(struct test *test, int subtest);
+int test__backward_ring_buffer(struct test *test, int subtest);
+int test__cpu_map_print(struct test *test, int subtest);
+int test__sdt_event(struct test *test, int subtest);
+int test__is_printable_array(struct test *test, int subtest);
+int test__bitmap_print(struct test *test, int subtest);
+int test__perf_hooks(struct test *test, int subtest);
+int test__clang(struct test *test, int subtest);
 const char *test__clang_subtest_get_desc(int subtest);
 int test__clang_subtest_get_nr(void);
-int test__unit_number__scnprint(int subtest);
+int test__unit_number__scnprint(struct test *test, int subtest);
 
 bool test__bp_signal_is_supported(void);
 
index a63d6945807b3a0e7fe9247475068e258dbd9cdc..b3423c744f46251ca8966f3d3f32ba970b52773f 100644 (file)
@@ -9,7 +9,7 @@
 #define NAME   (const char *) "perf"
 #define NAMEUL (unsigned long) NAME
 
-int test__thread_map(int subtest __maybe_unused)
+int test__thread_map(struct test *test __maybe_unused, int subtest __maybe_unused)
 {
        struct thread_map *map;
 
@@ -76,7 +76,7 @@ static int process_event(struct perf_tool *tool __maybe_unused,
        return 0;
 }
 
-int test__thread_map_synthesize(int subtest __maybe_unused)
+int test__thread_map_synthesize(struct test *test __maybe_unused, int subtest __maybe_unused)
 {
        struct thread_map *threads;
 
@@ -95,7 +95,7 @@ int test__thread_map_synthesize(int subtest __maybe_unused)
        return 0;
 }
 
-int test__thread_map_remove(int subtest __maybe_unused)
+int test__thread_map_remove(struct test *test __maybe_unused, int subtest __maybe_unused)
 {
        struct thread_map *threads;
        char *str;
index 76686dd6f5ecfd235705bca7b39d7abdc237a150..b9c7f58db6c416f97e941a8ee26dc98bf9987670 100644 (file)
@@ -4,7 +4,7 @@
 #include "map.h"
 #include "debug.h"
 
-int test__thread_mg_share(int subtest __maybe_unused)
+int test__thread_mg_share(struct test *test __maybe_unused, int subtest __maybe_unused)
 {
        struct machines machines;
        struct machine *machine;
index 803f893550d64c03c6354acf88045821cc7fe171..19b0561fd6f65b13f9c941cdaa7c7cceaa8ba270 100644 (file)
@@ -86,7 +86,7 @@ static int check_cpu_topology(char *path, struct cpu_map *map)
        return 0;
 }
 
-int test_session_topology(int subtest __maybe_unused)
+int test__session_topology(struct test *test __maybe_unused, int subtest __maybe_unused)
 {
        char path[PATH_MAX];
        struct cpu_map *map;
index 44589de084b824319063df71ce0543f7f054088b..15cd1cf8c129d74d0499a06a874d82f4085b64af 100644 (file)
@@ -5,7 +5,7 @@
 #include "units.h"
 #include "debug.h"
 
-int test__unit_number__scnprint(int subtest __maybe_unused)
+int test__unit_number__scnprint(struct test *t __maybe_unused, int subtest __maybe_unused)
 {
        struct {
                u64              n;
index 8456175fc23458091aaf787a465d3a7123fd5f71..86cb8868f67f119f8f98f37074f71ec8ba4ec107 100644 (file)
@@ -11,7 +11,7 @@
 
 #define UM(x) kallsyms_map->unmap_ip(kallsyms_map, (x))
 
-int test__vmlinux_matches_kallsyms(int subtest __maybe_unused)
+int test__vmlinux_matches_kallsyms(struct test *test __maybe_unused, int subtest __maybe_unused)
 {
        int err = -1;
        struct rb_node *nd;