zion - 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.
Résumé
#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 8
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
.ne 3 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 renvoyée
proc_register retourne toujours 0.
proc_register_dynamic .ne 2 retourne 0 si tout se passe normalement ou -EAGAIN s'il est impossible d'allouer dynamiquement un numéro d'inode.
proc_unregister .ne 2 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). [Note du traducteur] 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
Bugs
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.
Poster un commentaire