46 lines · c
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