1/* SPDX-License-Identifier: GPL-2.0 */ 2#include <math.h> 3#include <signal.h> 4#include <stdlib.h> 5#include <unistd.h> 6#include <linux/compiler.h> 7#include <sys/wait.h> 8#include "../tests.h" 9 10static volatile sig_atomic_t done; 11 12static void sighandler(int sig __maybe_unused) 13{ 14 done = 1; 15} 16 17static int __sqrtloop(int sec) 18{ 19 signal(SIGALRM, sighandler); 20 alarm(sec); 21 22 while (!done) 23 (void)sqrt(rand()); 24 return 0; 25} 26 27static int sqrtloop(int argc, const char **argv) 28{ 29 int sec = 1; 30 31 if (argc > 0) 32 sec = atoi(argv[0]); 33 34 switch (fork()) { 35 case 0: 36 return __sqrtloop(sec); 37 case -1: 38 return -1; 39 default: 40 wait(NULL); 41 } 42 return 0; 43} 44 45DEFINE_WORKLOAD(sqrtloop); 46