at master 749 B view raw
1/* SPDX-License-Identifier: GPL-2.0 */ 2#include <signal.h> 3#include <stdlib.h> 4#include <linux/compiler.h> 5#include <unistd.h> 6#include "../tests.h" 7 8/* We want to check these symbols in perf script */ 9noinline void leaf(volatile int b); 10noinline void parent(volatile int b); 11 12static volatile int a; 13static volatile sig_atomic_t done; 14 15static void sighandler(int sig __maybe_unused) 16{ 17 done = 1; 18} 19 20noinline void leaf(volatile int b) 21{ 22 while (!done) 23 a += b; 24} 25 26noinline void parent(volatile int b) 27{ 28 leaf(b); 29} 30 31static int leafloop(int argc, const char **argv) 32{ 33 int sec = 1; 34 35 if (argc > 0) 36 sec = atoi(argv[0]); 37 38 signal(SIGINT, sighandler); 39 signal(SIGALRM, sighandler); 40 alarm(sec); 41 42 parent(sec); 43 return 0; 44} 45 46DEFINE_WORKLOAD(leafloop);