Service de noyau proch_reg

Objectif

Enregistre un gestionnaire d'appel.

Syntaxe

#include <sys/proc.h>
int proch_reg(struct prochr *)
Note: La structure prochr contient les éléments suivants qui doivent être définis avant d'appelerproch_reg :
void (*proch_handler)(struct prochr *, int, long)
unsigned int  int prochr_mask

Paramètres

Tableau 1. Paramè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: 
PROCHR_INITIALIZE
Processus créé.
PROCHR_TERMINATE
Processus terminé
PROCHR_EXEC
Le processus a émis l'appel système exec
PROCHR_THREADINIT
Unité d'exécution créée
PROCHR_THREADTERM
Unité d'exécution terminée
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.