proc_dir_entry, proc_register, proc_register_dynamic,
       proc_unregister - register entries in the /proc
       filesystem.


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

       The proc_register functions add file or directory  entries
       to  the  /proc  file  system.   They  associate processing
       routines with each node of the /proc tree.  The  structure
       proc_dir_entry is defined as

       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 The  inode  number  of  this directory entry.  For
               proc_register this  number should be unique within
               the   /proc  filesystem,  values  are  defined  in
               <linux/proc_fs.h>.  For proc_register_dynamic  the
               inode number is dynamically assigned.

       namelen The  length  of  the  name, excluding the trailing
               null.

       name    The name of this node.


               <linux/stat.h>.

       nlink   Number  of  links to the node.  Initialise to 2 if
               mode includes S_IFDIR, 1 otherwise.

       uid     The uid that owns the node, normally 0.

       gid     The gid that owns the node. normally 0.

       size    Sets the size of the node, the value  will  appear
               as  the  inode size in listings and be returned by
               stat.  Unless you really need a size, set this  to
               zero.

       ops     Defines the set of inode operations to perform for
               your  /proc  node.   For  a  directory  node,  use
               &proc_dir_inode_operations unless you have special
               requirements.  For a leaf node, set to NULL unless
               you have special requirements.

       get_info
               If  defined,  this proc is called when the node is
               read.  Should be NULL for directory nodes.   NOTE:
               If  you  need to return large amounts of data, the
               proc must return the data in chunks and reposition
               itself   on   the  next  call,  using  the  offset
               variable.  See ip_masq_procinfo for  example  code
               with large output.

       fill_inode
               Dynamically  fill  in  the  inode  characteristics
               during   directory   operations.    Not   normally
               required and set to NULL.  See proc_pid_fill_inode
               for example code.

       next, parent, subdir
               Maintained by /proc routines.   Initial  value  is
               irrelevant, set to NULL.

       data    An  opaque  pointer  which  can  be  used  by proc
               handlers  to  pass  local  data  around.   Set  to
               whatever  you  like  when  calling  proc_register,
               normally NULL.  This pointer is  copied  into  the
               inode u.ip_generic field (by proc_get_inode) so it
               is available to any proc routines that are  passed
               an inode.

       proc_register adds the child as a node under the parent.

       proc_register_dynamic  dynamically assigns an inode number
       then adds the child as a node under the parent.



RETURN VALUE

       proc_register always returns 0.

       proc_register_dynamic returns 0 for success or -EAGAIN  if
       there are no free dynamic inode numbers.

       proc_unregister  returns  0  for success or -EINVAL if the
       node was not found.


SEE ALSO

       proc_net_register(9), proc_net_unregister(9),
       proc_scsi_register(9), proc_scsi_unregister(9), stat(2).


AUTHOR

       Keith Owens <kaos@ocs.com.au>


BUGS

       The  uniqueness  of  /proc  inode  numbers is assumed, not
       enforced.  It is possible to add two nodes with  the  same
       inode number.
































Man(1) output converted with man2html