Linux

CentOS 4.8

proc_dir_entry(9)


proc_dir_entry

NOM

proc_dir_entry, proc_register, proc_register_dynamic, proc_unregister − ajouter des entrées dans le système de fichiers /proc.

SYNOPSIS

#include <linux/proc_fs.h>

int proc_register(struct proc_dir_entry * parent, struct proc_dir_entry * child);

int proc_unregister(struct proc_dir_entry * parent, int inode);

int proc_register_dynamic(struct proc_dir_entry * parent, struct proc_dir_entry * child);

DESCRIPTION

Les fonctions proc_register ajoutent une entrée de fichier ou de répertoire au système de fichier virtuel /proc. Chaque entrée est associée à une routine chargée de gérer les entrées-sorties sur cette inode. La structure proc_dir_entry est définie comme :

struct proc_dir_entry {
        unsigned short low_ino;
        unsigned short namelen;
        const char *name;
        mode_t mode;
        nlink_t nlink;
        uid_t uid;
        gid_t gid;
        unsigned long size;
        struct inode_operations * ops;
        int (*get_info)(char *buffer, char **start,
                off_t offset, int length, int unused);
        void (*fill_inode)(struct inode *);
        struct proc_dir_entry *next, *parent, *subdir;
        void *data;
};

low_ino

Le numéro d’inode de cette entrée de répertoire. Pour proc_register , ce nombre doit être unique dans le système de fichiers /proc. Des valeurs sont définies dans <linux/proc_fs.h>. Pour proc_register_dynamic , le numéro d’inode est dynamiquement choisi.

namelen

La longueur du nom, sans compter le caractère nul terminal.

name

Le nom de l’inode.

mode

Le type et les droits (permissions) sur l’inode. Voir <linux/stat.h>.

nlink

Le nombre de liens au noeud. S’initialise à 2 si le mode inclut S_IFDIR, sinon 1 .

uid

L’UID (User ID) du propriétaire de l’inode, normalement 0.

gid

Le GD (Group ID) du propriétaire de l’inode, normalement 0.

size

Taille de l’inode telle qu’elle apparaîtra dans les listings retournés par stat. stat. à moins que vous n’ayez réellement besoin d’une taille, ce champ doit être à zéro.

ops

Définit les opérations réalisables sur l’inode. Pour un répertoire, utiliser &proc_dir_inode_operations à moins qu’un comportement spécial doive être défini. Pour un inode leaf, mettez normalement NULL.

get_info

Si définie, cette procédure sera appelée à chaque fois que l’inode sera lue. Normalement initialisée à NULL pour un répertoire. NOTE : Si vous retournez de grandes quantités de données, la procédure doit retourner les données par morceaux et se préparer au prochain appel en positionnant la variable offset Voir ip_masq_procinfo pour un tel exemple.

fill_inode

Remplit dynamiquement les caractéristiques de l’inode lors des opérations sur le répertoire. Devrait être à NULL. Voir proc_pid_fill_inode pour un exemple.

next, parent, subdir

Mis à jour par les routines de /proc. à initialiser à NULL.

data

Pointeur utilisé par les routines de /proc pour passer des données locales. Vous pouvez en faire ce que vous voulez quand vous appellez proc_register, normalement NULL. Ce pointeur est copié dans le champ u.ip_generic de l’inode par proc_get_inode et est donc disponible pour toutes les routines de /proc à qui l’on passe une inode.

proc_register ajoute l’inode child en tant que sous-inode de parent.

proc_register_dynamic assigne dynamiquement un numéro d’inode puis ajoute l’inode child comme sous-inode de parent.

proc_unregister examine la liste des sous-inodes de parent pour rechercher le numéro d’inode inode particulier et détruire l’entrée correspondante.

VALEUR RENVOYEÃ

proc_register retourne toujours 0.

proc_register_dynamic retourne 0 si tout se passe normalement ou -EAGAIN s’il est impossible d’allouer dynamiquement un numéro d’inode.

proc_unregister retourne 0 si tout se passe normalement ou -EINVAL si l’inode n’est pas trouvée.

VOIR AUSSI

proc_net_register(9), proc_net_unregister(9), proc_scsi_register(9), proc_scsi_unregister(9), stat(2). [Notedutraducteur] Jeter un coup d’oeil à proc"(5) "n’est pas une mauvaise idée.

AUTEUR

Keith Owens <kaos@ocs.com.au>

TRADUCTEUR

Thierry Vignaud <tvignaud@mandrakesoft.com>, 1999

BOGUES

L’unicité des numéros d’inode dans /proc est supposée, mais rien n’est fait pour l’assurer réellement... Il est possible que deux inodes aient le même numéro.


proc_dir_entry(9)