diff options
Diffstat (limited to 'include/linux/proc_fs.h')
| -rw-r--r-- | include/linux/proc_fs.h | 138 | 
1 files changed, 32 insertions, 106 deletions
diff --git a/include/linux/proc_fs.h b/include/linux/proc_fs.h index 2112926de85..608e60a74c3 100644 --- a/include/linux/proc_fs.h +++ b/include/linux/proc_fs.h @@ -1,148 +1,74 @@ -#ifndef _LINUX_PROC_FS_H -#define _LINUX_PROC_FS_H - -#include <linux/slab.h> -#include <linux/fs.h> -#include <linux/spinlock.h> -#include <linux/magic.h> -#include <linux/atomic.h> -#include <linux/proc_ns.h> - -struct net; -struct completion; -struct mm_struct; -  /*   * The proc filesystem constants/structures   */ +#ifndef _LINUX_PROC_FS_H +#define _LINUX_PROC_FS_H -/* - * Offset of the first process in the /proc root directory.. - */ -#define FIRST_PROCESS_ENTRY 256 - -/* Worst case buffer size needed for holding an integer. */ -#define PROC_NUMBUF 13 - -/* - * This is not completely implemented yet. The idea is to - * create an in-memory tree (like the actual /proc filesystem - * tree) of these proc_dir_entries, so that we can dynamically - * add new files to /proc. - * - * The "next" pointer creates a linked list of one /proc directory, - * while parent/subdir create the directory structure (every - * /proc file has a parent, but "subdir" is NULL for all - * non-directory entries). - */ +#include <linux/types.h> +#include <linux/fs.h> -struct proc_dir_entry { -	unsigned int low_ino; -	umode_t mode; -	nlink_t nlink; -	kuid_t uid; -	kgid_t gid; -	loff_t size; -	const struct inode_operations *proc_iops; -	const struct file_operations *proc_fops; -	struct proc_dir_entry *next, *parent, *subdir; -	void *data; -	atomic_t count;		/* use count */ -	atomic_t in_use;	/* number of callers into module in progress; */ -			/* negative -> it's going away RSN */ -	struct completion *pde_unload_completion; -	struct list_head pde_openers;	/* who did ->open, but not ->release */ -	spinlock_t pde_unload_lock; /* proc_fops checks and pde_users bumps */ -	u8 namelen; -	char name[]; -}; +struct proc_dir_entry;  #ifdef CONFIG_PROC_FS  extern void proc_root_init(void); - -void proc_flush_task(struct task_struct *task); - -struct proc_dir_entry *proc_create_data(const char *name, umode_t mode, -				struct proc_dir_entry *parent, -				const struct file_operations *proc_fops, -				void *data); -extern void proc_remove(struct proc_dir_entry *); -extern void remove_proc_entry(const char *name, struct proc_dir_entry *parent); -extern int remove_proc_subtree(const char *name, struct proc_dir_entry *parent); +extern void proc_flush_task(struct task_struct *);  extern struct proc_dir_entry *proc_symlink(const char *,  		struct proc_dir_entry *, const char *); -extern struct proc_dir_entry *proc_mkdir(const char *,struct proc_dir_entry *); +extern struct proc_dir_entry *proc_mkdir(const char *, struct proc_dir_entry *);  extern struct proc_dir_entry *proc_mkdir_data(const char *, umode_t,  					      struct proc_dir_entry *, void *); -extern struct proc_dir_entry *proc_mkdir_mode(const char *name, umode_t mode, -			struct proc_dir_entry *parent); +extern struct proc_dir_entry *proc_mkdir_mode(const char *, umode_t, +					      struct proc_dir_entry *); +  +extern struct proc_dir_entry *proc_create_data(const char *, umode_t, +					       struct proc_dir_entry *, +					       const struct file_operations *, +					       void *); -static inline struct proc_dir_entry *proc_create(const char *name, umode_t mode, -	struct proc_dir_entry *parent, const struct file_operations *proc_fops) +static inline struct proc_dir_entry *proc_create( +	const char *name, umode_t mode, struct proc_dir_entry *parent, +	const struct file_operations *proc_fops)  {  	return proc_create_data(name, mode, parent, proc_fops, NULL);  } -  +  extern void proc_set_size(struct proc_dir_entry *, loff_t);  extern void proc_set_user(struct proc_dir_entry *, kuid_t, kgid_t);  extern void *PDE_DATA(const struct inode *);  extern void *proc_get_parent_data(const struct inode *); -#else - -static inline void proc_flush_task(struct task_struct *task) -{ -} +extern void proc_remove(struct proc_dir_entry *); +extern void remove_proc_entry(const char *, struct proc_dir_entry *); +extern int remove_proc_subtree(const char *, struct proc_dir_entry *); -#define proc_create(name, mode, parent, fops)  ({ (void)(mode), NULL; }) +#else /* CONFIG_PROC_FS */ -static inline struct proc_dir_entry *proc_create_data(const char *name, -	umode_t mode, struct proc_dir_entry *parent, -	const struct file_operations *proc_fops, void *data) +static inline void proc_flush_task(struct task_struct *task)  { -	return NULL;  } -static inline void proc_remove(struct proc_dir_entry *de) {} -#define remove_proc_entry(name, parent) do {} while (0) -#define remove_proc_subtree(name, parent) do {} while (0)  static inline struct proc_dir_entry *proc_symlink(const char *name, -		struct proc_dir_entry *parent,const char *dest) {return NULL;} +		struct proc_dir_entry *parent,const char *dest) { return NULL;}  static inline struct proc_dir_entry *proc_mkdir(const char *name,  	struct proc_dir_entry *parent) {return NULL;}  static inline struct proc_dir_entry *proc_mkdir_data(const char *name,  	umode_t mode, struct proc_dir_entry *parent, void *data) { return NULL; }  static inline struct proc_dir_entry *proc_mkdir_mode(const char *name,  	umode_t mode, struct proc_dir_entry *parent) { return NULL; } +#define proc_create(name, mode, parent, proc_fops) ({NULL;}) +#define proc_create_data(name, mode, parent, proc_fops, data) ({NULL;}) +  static inline void proc_set_size(struct proc_dir_entry *de, loff_t size) {}  static inline void proc_set_user(struct proc_dir_entry *de, kuid_t uid, kgid_t gid) {}  static inline void *PDE_DATA(const struct inode *inode) {BUG(); return NULL;} +static inline void *proc_get_parent_data(const struct inode *inode) { BUG(); return NULL; } -#endif /* CONFIG_PROC_FS */ - - -union proc_op { -	int (*proc_get_link)(struct dentry *, struct path *); -	int (*proc_read)(struct task_struct *task, char *page); -	int (*proc_show)(struct seq_file *m, -		struct pid_namespace *ns, struct pid *pid, -		struct task_struct *task); -}; - -struct ctl_table_header; -struct ctl_table; +static inline void proc_remove(struct proc_dir_entry *de) {} +#define remove_proc_entry(name, parent) do {} while (0) +static inline int remove_proc_subtree(const char *name, struct proc_dir_entry *parent) { return 0; } -struct proc_inode { -	struct pid *pid; -	int fd; -	union proc_op op; -	struct proc_dir_entry *pde; -	struct ctl_table_header *sysctl; -	struct ctl_table *sysctl_entry; -	struct proc_ns ns; -	struct inode vfs_inode; -}; +#endif /* CONFIG_PROC_FS */  static inline struct proc_dir_entry *proc_net_mkdir(  	struct net *net, const char *name, struct proc_dir_entry *parent)  |