Syscall BSD#111
svc · unix #111
sigsuspend
Remplace atomiquement le masque de signaux et attend qu'un handler revienne.
Prototype
int sigsuspend(sigset_t mask);Retour: int
Arguments
| Name | Type | Dir | Description |
|---|---|---|---|
| mask | sigset_t | - |
Historique des versions
| XNU tag | macOS | # |
|---|---|---|
| xnu-1456.1.26 | macOS 10.6 Snow Leopard | 111 |
| xnu-1486.2.11 | — | 111 |
| xnu-1504.15.3 | — | 111 |
| xnu-1504.3.12 | — | 111 |
| xnu-1504.7.4 | — | 111 |
| xnu-1504.9.17 | — | 111 |
| xnu-1504.9.26 | — | 111 |
| xnu-1504.9.37 | — | 111 |
Notes
Sert à éliminer la fenêtre de course où on débloquerait un signal puis appellerait pause(). Retourne -1 avec errno EINTR une fois qu'un handler s'est exécuté ; le masque d'origine est restauré automatiquement. Se marie naturellement avec un handler posé par sigaction qui positionne un flag relu après retour.
Détection
La probe DTrace syscall::sigsuspend:entry expose le pointeur du masque temporaire. À combiner avec proc:::signal-handle pour tracer le cycle débloquer-livrer-revenir.
API associées
sigactionsigprocmasksigpending__sigwaitkill