Bloc de contrôle de notification de configuration cfgncb
Objectif
Contient l'adresse d'une routine de notification appelée à chaque fois que la sous-routine Sysconfig est appelée avec la commande SYS_SETPARMS .
Syntaxe
int func (cmd, cur, new)
int cmd;
struct var *cur;
struct var *new;Paramètres
| Article | Descriptif |
|---|---|
| CMD | Indique le type d'opération en cours. Les valeurs possibles sont CFGV_PREPARE et CFGV_COMMIT, comme défini dans le fichier /usr/include/sys/sysconfig.h . |
| cur | Pointe vers une structure Var représentant les valeurs en cours des variables configurables par le système. |
| nouveau | Pointe vers une structure Var représentant les valeurs nouvelles ou proposées des variables configurables par le système. |
The Cur and Nouveau Var structures are both in the system address space.
Descriptif
Le bloc de contrôle de notification de configuration contient l'adresse d'une routine de notification. Cette structure est destinée à être utilisée comme élément de liste dans une liste de blocs de contrôle similaires gérés par le noyau.
Chaque bloc de contrôle possède la définition suivante:
struct cfgncb {
struct cfgncb *cbnext; /* next block on chain */
struct cfgncb *cbprev; /* prev control block on chain */
int (*func)(); /* notification function */
};
Le service de noyau Cfgndel ou Cfgnadd peut être utilisé pour ajouter ou supprimer un bloc de contrôle Cfgncb de la liste Cfgncb . Pour utiliser l'un de ces services de noyau, la routine d'appel doit définir le bloc de contrôle Cfgncb . Cette définition peut être effectuée à l'aide du fichier /usr/include/sys/sysconfig.h .
Chaque fois qu'un SYS_SETPARMS Sysconfig , commande est émis, la sous-routine Sysconfig itère via la liste de noyau de blocs Cfgncb , en appelant chaque routine de notification avec une commande CFGV_PREPARE . Cet appel représente le premier passage de ce qui est pour la routine de notification un processus à deux passes.
Dans une commande CFGV_PREPARE , la routine de notification cfgncb.func doit déterminer si des valeurs d'intérêt ont été modifiées. Toutes les valeurs modifiées doivent être vérifiées pour en vérifier la validité. Si les valeurs sont valides, un code retour 0 doit être renvoyé. Sinon, une valeur de retour indiquant le décalage d'octet de la première zone de l'erreur dans la structure Nouveau Var doit être renvoyée.
Si toutes les routines de notification enregistrées créent un code retour de 0, aucune erreur de valeur n'a été détectée lors de la vérification de validité. Dans ce cas, la sous-routine sysconfig émet son deuxième appel de passe à la routine cfgncb.func et envoie les mêmes paramètres, bien que le paramètre cmd contienne la valeur CFGV_COMMIT. Cela indique que les nouvelles valeurs entrent en vigueur à la première occasion.
Un exemple de traitement de routine de notification peut être le suivant. Supposons que l'utilisateur souhaite augmenter la taille du cache de mémoire tampon d'E-S de bloc. Dans une commande CFGV_PREPARE , la routine de notification d'E-S par bloc vériderait que la nouvelle taille proposée pour le cache est légale. Dans une commande VALIDATION CFGV_ , la routine de notification rendrait ensuite les mémoires tampon supplémentaires à la disposition de l'utilisateur en chaînon plus de mémoires tampon sur la liste de mémoires tampon existante.