9.91 sigsuspend

int sigsuspend(const sigset_t *mask);

This syscall temporarily replaces the signal mask of the calling with the given mask and then suspends the process until delivery of a signal whose action is to invoke a signal handler or to terminate a process. This syscall will return after the handling of the awaited signal.

This syscall always returns -1, with the errno:

EINTR

The syscall was interrupted by a signal, this is basically a success return, since this is what we wanted!