13 void /*__attribute__((constructor))*/
18 memset(&sa, 0, sizeof sa);
20 sigemptyset(&sa.sa_mask);
21 sigaddset(&sa.sa_mask, SIGUSR1);
23 sa.sa_flags = SA_RESTART;
24 sigaction(SIGUSR1, &sa, nil);
28 _procsleep(_Procrend *r)
35 * Block USR1, set the handler to interrupt system calls,
36 * unlock the vouslock so our waker can wake us,
42 sigprocmask(SIG_SETMASK, nil, &mask);
43 sigaddset(&mask, SIGUSR1);
44 sigprocmask(SIG_SETMASK, &mask, nil);
47 sigdelset(&mask, SIGUSR1);
51 * We're awake. Make USR1 not interrupt system calls.
54 assert(r->asleep == 0);
59 _procwakeup(_Procrend *r)
63 kill(r->pid, SIGUSR1);