projects/linux·blob master · refs

45 lines · 802 B

1/* SPDX-License-Identifier: GPL-2.0 */
2#include <pthread.h>
3#include <stdlib.h>
4#include <signal.h>
5#include <unistd.h>
6#include <linux/compiler.h>
7#include "../tests.h"
8
9static volatile sig_atomic_t done;
10
11static void sighandler(int sig __maybe_unused)
12{
13 done = 1;
14}
15
16static int noploop(int argc, const char **argv)
17{
18 double sec = 1.0;
19
20 pthread_setname_np(pthread_self(), "perf-noploop");
21 if (argc > 0)
22 sec = atof(argv[0]);
23
24 if (!(sec > 0.0)) {
25 fprintf(stderr, "Error: seconds (%f) must be > 0\n", sec);
26 return 1;
27 }
28
29 signal(SIGINT, sighandler);
30 signal(SIGALRM, sighandler);
31
32 if (sec < 1.0) {
33 useconds_t usecs = (useconds_t)(sec * 1000000.0);
34
35 ualarm(usecs > 0 ? usecs : 1, 0);
36 } else
37 alarm((unsigned int)sec);
38
39 while (!done)
40 continue;
41
42 return 0;
43}
44
45DEFINE_WORKLOAD(noploop);