Service de noyau sig_chk
Objectif
Fournit un processus de noyau qui permet d'interroger la réception des signaux.
Syntaxe
#include <sys/types.h>
#include <sys/errno.h>
#include <sys/signal.h> int sig_chk ()Descriptif
Attention: Une panne système se produit si le service Sig_chk n'est pas appelé par un processus de noyau.
Le service de noyau Sig_chk peut être appelé par un Unité d'exécution de noyau en mode noyau pour déterminer si des signaux non masqués ont été reçus. Les signaux ne préempte pas les unités d'exécution car la sérialisation des zones de données critiques est perdue. Au lieu de cela, les unités d'exécution doivent interroger les signaux, soit périodiquement, soit après un long sommeil interrompu par un signal.
Le service Sig_chk recherche tous les signaux en attente qui ont une action Prise de signal ou Valeur par défaut spécifiée. Si un service est trouvé, le service renvoie le numéro de signal comme valeur de retour. Il supprime également le signal du masque de signal en attente. Si aucun signal n'est trouvé, ce service renvoie une valeur de 0. Le service Sig_chk ne renvoie pas les signaux bloqués ou ignorés. Il est de la responsabilité du processus du noyau de gérer le signal de manière appropriée.
Pour les unités d'exécution noyau uniquement, le service de noyau Sig_chk efface le signal renvoyé de la liste des signaux en attente. Pour les autres unités d'exécution de noyau, le signal n'est pas effacni, mais est laissé en attente. Il sera livré à l'unité d'exécution du noyau dès qu'il sera renvoyé au mode utilisateur.
Présentation des unités d'exécution du noyau dans Concepts de programmation de prise en charge des extensions et des périphériques du noyau fournit plus d'informations sur la gestion des signaux d'unité d'exécution uniquement du noyau.
Environnement d'exécution
Le service de noyau Sig_chk peut être appelé à partir de Environnement de processus uniquement.
Valeurs renvoyées
Une fois l'exécution terminée, le service Sig_chk renvoie la valeur 0 si aucun signal non masqué en attente n'est trouvé. Sinon, elle renvoie une valeur de signal non nulle indiquant le numéro du signal de priorité le plus élevé en attente. Les valeurs de signal sont définies dans le fichier /usr/include/sys/signal.h .