[LTP] [PATCH 2/2] perf_event_open02: make test more reliable on -rt kernels
Cyril Hrubis
chrubis@suse.cz
Wed Oct 16 13:44:24 CEST 2019
Hi!
> Signed-off-by: Jan Stancek <jstancek@redhat.com>
> ---
> .../kernel/syscalls/perf_event_open/perf_event_open02.c | 15 +++++++++++++++
> 1 file changed, 15 insertions(+)
>
> diff --git a/testcases/kernel/syscalls/perf_event_open/perf_event_open02.c b/testcases/kernel/syscalls/perf_event_open/perf_event_open02.c
> index 1cfe29bb3d8a..6fc6f4afa119 100644
> --- a/testcases/kernel/syscalls/perf_event_open/perf_event_open02.c
> +++ b/testcases/kernel/syscalls/perf_event_open/perf_event_open02.c
> @@ -52,6 +52,7 @@ Usage is: ./performance_counter02 [-v]
> The -v flag makes it print out the values of each counter.
> */
>
> +#define _GNU_SOURCE
> #include <stdio.h>
> #include <stddef.h>
> #include <stdlib.h>
> @@ -222,6 +223,20 @@ static void setup(void)
> int i;
> struct perf_event_attr tsk_event, hw_event;
>
> +#ifdef HAVE_SCHED_GETCPU
> + cpu_set_t mask;
Don't we have to allocate the mask dynamically so that we do not fail on
systems with more than CPU_SETSIZE (1024) CPUs?
We already have fallback macros for older libc in include/lapi/cpuset.h
so that we can use CPU_ALLOC() unconditionally.
> + int cpu = sched_getcpu();
> +
> + if (cpu == -1)
> + tst_brkm(TBROK | TERRNO, NULL, "sched_getcpu() failed");
> +
> + CPU_ZERO(&mask);
> + CPU_SET(cpu, &mask);
> +
> + if (sched_setaffinity(0, sizeof(cpu_set_t), &mask) == -1)
> + tst_brkm(TBROK | TERRNO, NULL, "sched_setaffinity() failed");
> +#endif
> +
> /*
> * According to perf_event_open's manpage, the official way of
> * knowing if perf_event_open() support is enabled is checking for
> --
> 1.8.3.1
>
>
> --
> Mailing list info: https://lists.linux.it/listinfo/ltp
--
Cyril Hrubis
chrubis@suse.cz
More information about the ltp
mailing list