14 static sig_atomic_t stop
;
16 static void sighandler (int signr
)
22 static unsigned long hog (unsigned long niters
)
25 while (!stop
&& --niters
)
35 unsigned long v
[HIST
];
39 it
.it_interval
.tv_sec
= 0;
40 it
.it_interval
.tv_usec
= 1;
41 it
.it_value
.tv_sec
= 0;
42 it
.it_value
.tv_usec
= 1;
44 if (signal (SIGALRM
, &sighandler
)) {
45 err (EXIT_FAILURE
, "failed to set signal handler");
48 if (setitimer (ITIMER_REAL
, &it
, NULL
)) {
49 err (EXIT_FAILURE
, "failed to set interval timer");
52 for (i
= 0; i
< HIST
; ++i
) {
53 v
[i
] = ULONG_MAX
- hog (ULONG_MAX
);
56 for (i
= 0; i
< HIST
; ++i
) {
57 printf ("%d = %ld\n", i
, v
[i
]);
63 if (sigemptyset (&set
)) {
64 err (EXIT_FAILURE
, "failed to empty sigset");
67 if (sigaddset (&set
, SIGALRM
)) {
68 err (EXIT_FAILURE
, "failed to add to sigset");
75 if (sigwait (&set
, &signr
)) {
76 err (EXIT_FAILURE
, "failed to wait for a signal");