It's possible to take a signal after pselect/ppoll have set their return
value, but before we actually return to userland. This results in
taking a signal without reflecting it in the return value, which weakens
the guarantees provided by these functions.
Switch both to restore the signal mask before we return. If a signal
was received after the wait was over, then we'll just have the signal
queued up for the next time it comes unblocked. The modified signal
mask is retained if we were interrupted so that ast() actually handles
the signal, at which point the signal mask is restored.
Sponsored by: Klara, Inc.
Sponsored by: NetApp, Inc.