| // SPDX-License-Identifier: GPL-2.0 |
| #include <linux/compiler.h> |
| #include <sys/syscall.h> |
| #include <unistd.h> |
| #include "../tests.h" |
| |
| /* |
| * Mark as noinline to establish the call chain, and avoid the static |
| * annotation to prevent LTO from renaming the functions. |
| */ |
| noinline void callchain_do_syscall(void); |
| noinline void callchain_foo(void); |
| noinline int callchain(int argc, const char **argv); |
| |
| noinline void callchain_do_syscall(void) |
| { |
| syscall(SYS_gettid); |
| } |
| |
| noinline void callchain_foo(void) |
| { |
| callchain_do_syscall(); |
| } |
| |
| noinline int callchain(int argc __maybe_unused, |
| const char **argv __maybe_unused) |
| { |
| callchain_foo(); |
| |
| return 0; |
| } |
| |
| DEFINE_WORKLOAD(callchain); |