Point d'entrée vnop_readdir
Objectif
La les entrées de répertoire au format standard.
Syntaxe
Paramètres
| Article | Descriptif |
|---|---|
| PV | Pointe vers le noeud virtuel (V-noeud) du répertoire. |
| Uiop | Pointe vers la structure Uio qui décrit la zone de données dans laquelle placer le bloc de structures . Le décalage du répertoire de départ se trouve dans leuiop->uio_offsetEt la taille de la zone tampon se trouve dans leuiop->uio_resid:NONE. |
| Crp | Pointe vers la structure Cred . Cette structure contient des données que le système de fichiers peut utiliser pour valider les droits d'accès. |
Descriptif
Le point d'entrée Vnop_readdir est utilisé pour accéder aux entrées de répertoire de manière standard. Ces répertoires doivent être renvoyés sous la forme d'un tableau de structures . Le fichier /usr/include/sys/dir.h contient la définition d'une structure ??? .
Le point d'entrée Vnop_readdir est le suivant:
- Copie un bloc d'entrées de répertoire dans la mémoire tampon spécifiée par le paramètre Uiop .
- Définit leuiop->uio_residPour indiquer le nombre d'octets lus.
Le caractère de fin de fichier doit être indiqué en ne lisant aucun octet (non pas en lecture partielle). Cela fournit des répertoires avec la possibilité d'avoir des informations cachées dans chaque bloc.
L'implémentation spécifique à Système de fichiers virtuelest également responsable de la définition deuio_offsetSur le décalage du bloc entier suivant à lire.
- Si l'appel est destiné à un système de fichiers JFS2 , un traitement supplémentaire est nécessaire pour éviter que des entrées en double soient renvoyées dans la zone de données utilisateur. L'appelant peut vérifier le type VFS à partir du répertoirevnode.
- L'appelant doit allouer un tableau à deux éléments de typestructIovec pour passer avec la structure Uio . Le premier élément est initialisé pour pointer vers la zone de données utilisateur pour recevoir les structures . Si le pointeur de fichier du répertoire a une valeur non NULLf_vinfoZone, la secondeiovecEst initialisé pour pointer vers lef_vinfoEt la longueur est définie sur 0 ; le nombre d'éléments dans la structure Uio est défini sur 2. Si la commandef_vinfoEst NULL, le nombre d'éléments dans la structure Uio est défini sur 1 et le second.iovecReste non initialisé.
- Si l'appelant n'a pas accès au pointeur de fichier de répertoire, une structure peut être allouée à la place de laf_vinfo:NONE. L'appelant ne doit pas modifier la structure attribuée entre les appels au point d'entrée Vnop_readdir .
Environnement d'exécution
Le point d'entrée Vnop_readdir peut être appelé à partir de Environnement de processus uniquement.
Valeurs renvoyées
| Article | Descriptif |
|---|---|
| 0 % | Indique le succès. |
Des valeurs de retour différentes de zéro sont renvoyées par le fichier /usr/include/sys/errno.h pour indiquer un échec.