Expand description
Wrappers de la famille signal.
Cf. docs/specs/layer-0/family-signal.md et ADR-020-strategie-signaux.
Périmètre :
- Sous-section 1 (signalfd + masques) :
signalfd_create,signalfd_create_blocking,SignalFd::read,SignalFd::update_mask,block_signals,unblock_signals,set_signal_mask,current_signal_mask,wait_for_signal. - Sous-section 2 (envoi) :
kill,tgkill,rt_sigqueueinfo. - Sous-section 3 (sigaction restreint FAUTES) : sous-module
synchronous_handleravecsynchronous_handler::install_fatal_handleretsynchronous_handler::restore_handler(handler inerte ; le noyau force l’action par défaut sur les 4 fautes, ADR-020). - Sous-section 4 (sigaction async NON-faute, ADR-066) : sous-module
async_handleravecasync_handler::install/async_handler::restore(handler réellement installé — le noyau appelle le handler C à la délivrance d’un signal gérable ; trampolinert_sigreturnfourni sur x86_64), etrt_sigpending(ensemble des signaux pendants).
Modules§
- async_
handler - Wrappers
rt_sigactionpour les signaux non-faute — handler réellement installé (cf. ADR-064 : délivrance async réelle ; ADR-066 : descellement additif couche 0). - synchronous_
handler - Wrappers
sigactionrestreints aux 4 signaux synchrones fatals (cf. ADR-020).
Structs§
- Signal
Fd - FD
signalfd(cf.signalfd4(2)). Drop ferme le FD via [OwnedFd].
Functions§
- block_
signals - Bloque les signaux du
maskdans le mask courant du thread (union). Retourne l’ancien mask (avant modification). - current_
signal_ mask - Lit le mask de signaux courant sans modification.
- kill
- Envoie
signalau processuspid. - kill_
process_ group - Envoie
signalà tout un groupe de processus (kill(2)avec unpidnégatif) — descellement additif ADR-085 pour la face libckillpg(le type positif-seul [Pid] interdit d’exprimer lepidnégatif « groupe » viakill).group = Nonecible le groupe de l’appelant (sentinelle kernel0typée enOption, ADR-021 conv. 1) ;Some(g)cible le groupeg(le kernel reçoit-g).signal = None= test d’existence. - rt_
sigpending - Lit l’ensemble des signaux pendants (
rt_sigpending(2)). - rt_
sigqueueinfo - Envoie
signalau processuspidavec un payloadsiginfo_t(pattern SI_QUEUE —sigqueue(3)côté userspace). - set_
signal_ mask - Remplace totalement le mask de signaux du thread par
mask. Retourne l’ancien mask. - sigaltstack
- Installe (
new) et/ou interroge (old) la pile de signal alternative du thread (sigaltstack(2)) — descellement additif ADR-085 pour la face libc.new = Nonene change rien ;old = Nonene rapporte rien. Requis parstd(traitement d’unSIGSEGVde débordement de pile sur pile dédiée). - signalfd_
create - Crée un
signalfdpour les signaux dumask. - signalfd_
create_ blocking - Helper canonique : bloque les signaux du
maskdans le thread appelant puis crée unsignalfdpour ces mêmes signaux. - tgkill
- Envoie
signalau threadtiddu processtgid. - unblock_
signals - Déblocque les signaux du
maskdans le mask courant du thread (différence). Retourne l’ancien mask. - wait_
for_ signal - Attend l’arrivée d’un signal du
mask, avec timeout optionnel.