Linux |
CentOS 5.3 |
|
proc_dir_entry(9) |
proc_dir_entry, proc_register, proc_register_dynamic, proc_unregister − ajouter des entrées dans le système de fichiers /proc. |
#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); |
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. |
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. |
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. |
Keith Owens <kaos@ocs.com.au> |
Thierry Vignaud <tvignaud@mandrakesoft.com>, 1999 |
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) |