int
main(void)
{
+ static timer_t timerid[N];
pthread_t t[N];
unsigned int i;
.sigev_notify = SIGEV_SIGNAL,
.sigev_signo = sigs[i]
};
- timer_t timerid;
- if (timer_create(CLOCK_MONOTONIC, &sev, &timerid))
+ if (timer_create(CLOCK_MONOTONIC, &sev, &timerid[i]))
perror_msg_and_skip("timer_create");
- if (timer_settime(timerid, 0, &its[i], NULL))
+ if (timer_settime(timerid[i], 0, &its[i], NULL))
perror_msg_and_fail("timer_settime");
errno = pthread_create(&t[i], NULL, thread, (void *) &args[i]);
retval.pid, child[i], retval.pid);
}
+ /* sleep a bit more to late the tracer catch up */
+ if (timer_settime(timerid[0], 0, &its[0], NULL))
+ perror_msg_and_fail("timer_settime");
+ int signo;
+ errno = sigwait(&args[0].set, &signo);
+ if (errno)
+ perror_msg_and_fail("sigwait");
+
pid_t pid = getpid();
assert(chdir(text_parent) == -1);