selftests/bpf: Use syscall(SYS_gettid) instead of gettid() wrapper in bench
authorAlan Maguire <alan.maguire@oracle.com>
Fri, 22 Mar 2024 09:57:28 +0000 (09:57 +0000)
committerAndrii Nakryiko <andrii@kernel.org>
Fri, 22 Mar 2024 17:00:17 +0000 (10:00 -0700)
With glibc 2.28, selftests compilation fails for benchs/bench_trigger.c:

benchs/bench_trigger.c: In function ‘inc_counter’:
benchs/bench_trigger.c:25:23: error: implicit declaration of function ‘gettid’; did you mean ‘getgid’? [-Werror=implicit-function-declaration]
   25 |                 tid = gettid();
      |                       ^~~~~~
      |                       getgid
cc1: all warnings being treated as errors

It appears support for the gettid() wrapper is variable across glibc
versions, so may be safer to use syscall(SYS_gettid) instead.

Fixes: 520fad2e3206 ("selftests/bpf: scale benchmark counting by using per-CPU counters")
Signed-off-by: Alan Maguire <alan.maguire@oracle.com>
Signed-off-by: Andrii Nakryiko <andrii@kernel.org>
Link: https://lore.kernel.org/bpf/20240322095728.95671-1-alan.maguire@oracle.com
tools/testing/selftests/bpf/benchs/bench_trigger.c

index b7aea79495ba5100a25283831db829f2bbbb1c2c..9c50412f72e97f91c3f4fd5fdf3b3b35c53436fb 100644 (file)
@@ -22,7 +22,7 @@ static __always_inline void inc_counter(struct counter *counters)
        unsigned slot;
 
        if (unlikely(tid == 0))
-               tid = gettid();
+               tid = syscall(SYS_gettid);
 
        /* multiplicative hashing, it's fast */
        slot = 2654435769U * tid;