diff options
Diffstat (limited to 'plpnfsd/builtins.h')
-rw-r--r-- | plpnfsd/builtins.h | 25 |
1 files changed, 23 insertions, 2 deletions
diff --git a/plpnfsd/builtins.h b/plpnfsd/builtins.h index 64b2823..644f18b 100644 --- a/plpnfsd/builtins.h +++ b/plpnfsd/builtins.h @@ -5,7 +5,21 @@ #ifndef _BUILTINS_H_ #define _BUILTINS_H_ +struct builtin_node_t; + +typedef struct builtin_child_t { + struct builtin_child_t *next; + struct builtin_node_t *node; +} builtin_child; + +/** + * Support for procfs-like builtin virtual files/directories + */ typedef struct builtin_node_t { + struct builtin_node_t *next; + struct builtin_node_t *parent; + builtin_child *childs; + char *private_data; char *name; unsigned long flags; long attr; @@ -14,20 +28,27 @@ typedef struct builtin_node_t { long (*read)(struct builtin_node_t *node, char *buf, unsigned long offset, long len); long (*write)(struct builtin_node_t *node, char *buf, unsigned long offset, long len); long (*sattr)(struct builtin_node_t *node, unsigned long sa, unsigned long da); + long (*getlinks)(struct builtin_node_t *node); + long (*getdents)(struct builtin_node_t *node, dentry **entries); } builtin_node; #define BF_EXISTS_ALWAYS 1 #define BF_NOCACHE 2 +#define BF_ISPROCESS 4 /** * Register a builtin handler for an entry in /proc */ -extern int register_builtin(builtin_node *); +builtin_node *register_builtin(char *parent, builtin_node *node); /** * Deregister a previously registered handler. */ -extern int unregister_builtin(char *); +extern int unregister_builtin(builtin_node *); + +extern char *builtin_path(builtin_node *node); +extern long generic_getlinks(builtin_node *node); +extern long generic_getdents(builtin_node *node, dentry **entries); #endif /* _BUILTINS_H_ */ |