The current signal mask of the calling thread shall be replaced with the set of signals pointed to by sigmask, the calling thread will then be suspended until delivery of a signal whose action is either to execute a signal-catching function or to terminate the process. Any other signals that may have been pending on the process shall not become pending on the thread. sigsuspend shall never return if the action is to terminate the process. sigsuspend( ) shall return after the signal-catching function returns, with the signal mask restored to the set that existed prior to the sigsuspend() call, if the action is to execute a signal-catching function. The system shall enforce, without an error being indicated, not being able to block signals that cannot be ignored. sigsuspend() suspends thread execution indefinitely, and therefore there is no successful completion return value. The value of -1 shall be returned and errno set to indicate the error in case of unsuccessful completion. If a signal is caught by the calling process and control is returned from the signal-catching function, the sigsuspend( ) function shall fail if and set errno to EINTR.