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 :

  1. struct proc_dir_entry  
  2. {  
  3.   unsigned short low_ino;  
  4.   unsigned short namelen;  
  5.   const char *name;  
  6.   mode_t mode;  
  7.   nlink_t nlink;  
  8.   uid_t uid;  
  9.   gid_t gid;  
  10.   unsigned long size;  
  11.   struct inode_operations * ops;  
  12.   int (*get_info)(char *buffer, char **start,  
  13.     off_t offset, int length, int unused); 
  14.   void (*fill_inode)(struct inode *);  
  15.   struct proc_dir_entry *next, *parent, *subdir;  
  16.   void *data;  
  17. };

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
Utilisateur
Mot de passe
 
Informaticien.be - © 2002-2024 AkretioSPRL  - Generated via Kelare
The Akretio Network: Akretio - Freedelity - KelCommerce - Votre publicité sur informaticien.be ?