Service de noyau proch_reg
Objectif
Enregistre un gestionnaire d'appel.
Syntaxe
#include <sys/proc.h> int proch_reg(struct prochr *)void (*proch_handler)(struct prochr *, int, long)
unsigned int int prochr_maskParamètres
| Article | Descriptif |
|---|---|
| Int masque prochr_de_processus | Indique l'ensemble des événements de noyau pour lesquels un appel est demandé. Contrairement à l'interface old_style, l'appel est appelé uniquement pour les événements spécifiés. Ce masque est formé par l'ensemble de ces valeurs définies:
|
| Gestionnaire de processus | Indique la fonction d'appel à appeler lorsque des événements de noyau spécifiés se produisent. |
Descriptif
Si le mêmestruct prochr * est enregistré plus d'une fois, seules les informations spécifiées en dernier lieu sont conservées dans le noyau.
Lestruct
prochr * n'est pas copié vers un nouvel emplacement en mémoire. Par conséquent, si la structure est modifiée, les résultats sont imprévisibles. Cette structure n'a pas besoin d'être réservée.
La principale considération de l'interface new-style est d'améliorer l'évolutivité. Un verrou n'est acquis que lorsque des appels sont effectués. Un masque récapitulatif de tous les types d'événements d'appel actuellement enregistrés est conservé. Ce masque récapitulatif est mis à jour à chaque foisproch_reg ouproch_unreg est appelé, même lors de l'enregistrement d'unstruct prochr
* . En outre, le verrou est un verrou complexe, donc une fois que les appels ont été enregistrés, il n'y a pas de conflit de verrouillage pour les appeler car le verrou est en lecture seule.
Lorsqu'un appel à une fonction de gestionnaire enregistré est effectué, les paramètres transmis sont les suivants:
- Un pointeur vers la structure prochr enregistrée
- Une valeur de demande d'accroche pour indiquer la raison de l'accroche
- Un ID de thread ou de processus
Valeurs renvoyées
En cas de réussite, leproch_reg Le service noyau renvoie une valeur de 0. La seule erreur (non nulle) consiste à essayer de s'enregistrer avec un pointeur NULL.
Environnement d'exécution
Leproch_reg le service du noyau peut être appelé depuis le environnement de processus seulement.