Service de noyau devswchg

Objectif

Modification d'un point d'entrée de commutateur d'unité dans la table de commutation d'unité.

Syntaxe

#include <sys/types.h>
#include <sys/errno.h>
#include <sys/device.h>
int devswchg ( devno,  type,  newfunc,  oldfunc);
dev_t devno;
int type;
int (*newfunc) ();
int (**oldfunc)();

Paramètres

Article Descriptif
Devno Indique le Numéros d'unités principaux et mineurs de l'unité à modifier.
type Indique le point d'entrée du commutateur d'unité à modifier. Le paramètre Type peut avoir l'une des valeurs suivantes:
BLOC DE DONNÉES
Modifiez le fichier Point d'entrée Ddstrategy.
DSW_CONFIG
Modifiez le fichier Point d'entrée Ddconfig .
DSW_CREAD
Modifiez le fichier Point d'entrée Ddread.
DSW_CWRITE
Modifiez le fichier Point d'entrée Ddwrite.
CLICHÉ
Modifiez le fichier Point d'entrée Dévidage.
DSW_IOCTL
Modifie le point d'entrée ddioctl.
DSW_MPX
Modifiez le fichier Point d'entrée Jjmpx.
DSW_SELECT
Modifiez le fichier Point d'entrée Ddselect.
DSW_TCPATH
Modifiez le fichier Point d'entrée Ddrevoke.
DSW_BLOCK_COND
Modifie de manière conditionnelle le point d'entrée ddstrategy.
DSW_CONFIG_COND
Modifie de manière conditionnelle le point d'entrée ddconfig.
DSW_CREAD_COND
Modifie de manière conditionnelle le point d'entrée ddread.
DSW_CWRITE_COND
Modifie de manière conditionnelle le point d'entrée ddwrite.
DSW_DUMP_COND
Modifie de manière conditionnelle le point d'entrée dddump.
DSW_IOCTL_COND
Modifie de manière conditionnelle le point d'entrée ddioctl.
DSW_MPX_COND
Modifie de manière conditionnelle le point d'entrée ddmpx.
DSW_SELECT_COND
Modifie de manière conditionnelle le point d'entrée ddselect.
DSW_TCPATH_COND
Modifie de manière conditionnelle le point d'entrée ddrevoke.
Newfunc Indique la nouvelle valeur du point d'entrée de commutateur d'unité.
Oldfunc Indique que l'ancienne valeur du point d'entrée du commutateur d'unité doit être renvoyée. Lorsqu'un point d'entrée de commutateur d'unité est modifié de manière conditionnelle, utilisez ce paramètre pour indiquer la fonction qui est comparée au point d'entrée de commutateur d'unité en cours.

Descriptif

Le service de noyau Devswchg modifie la valeur d'un point d'entrée de commutateur d'unité (pointeur de fonction) une fois qu'une entrée de table de commutation d'unité a été ajoutée par le service de noyau Devswadd . Le point d'entrée du commutateur d'unité indiqué par le paramètre Type est défini sur la valeur du paramètre Newfunc . Sa valeur précédente est renvoyée dans la mémoire traitée par le paramètre Oldfunc . Une seule entrée de commutateur d'unité peut être modifiée par appel.

Le service de noyau devswchg prend également en charge une mise à jour conditionnelle d'un point d'entrée de commutateur de périphérique (pointeur de fonction) après l'ajout d'une entrée de table de commutateurs de périphérique par le service de noyau devswadd . La mise à jour conditionnelle signifie que le point d'entrée de commutateur d'unité spécifié par le paramètre type est défini sur la valeur du paramètre newfunc lorsque le point d'entrée de commutateur d'unité en cours correspond à la valeur de pointeur de fonction spécifiée dans la mémoire traitée par le paramètre oldfunc . Lorsque les pointeurs de fonction ne correspondent pas, le point d'entrée du commutateur d'unité n'est pas mis à jour et la valeur du point d'entrée du commutateur d'unité en cours est renvoyée dans la mémoire adressée par le paramètre oldfunc . Une seule entrée de table de commutateurs d'unité peut être modifiée de manière conditionnelle par appel.

Si le service de noyau devswchg échoue en raison d'erreurs autres qu'un échec de mise à jour conditionnelle, la valeur référencée par le paramètre oldfunc n'est pas définie.

Environnement d'exécution

Le service de noyau Devswchg peut être appelé à partir de l'environnement Processus uniquement.

Valeurs renvoyées

Article Descriptif
0 % Indique une opération réussie.
EINVAL Indique que le paramètre Type n'était pas valide ou que le paramètre oldfunc n'a pas été spécifié pour une mise à jour conditionnelle.
ENODEV Indique que l'entrée de commutateur d'unité spécifiée par le paramètre Devno n'est pas définie.
EPERM Indique que le point d'entrée du commutateur d'unité en cours ne correspond pas au pointeur de fonction spécifié dans la mémoire traitée par le paramètre oldfunc .