Blame view
include/linux/proc_fs.h
8.13 KB
1da177e4c Linux-2.6.12-rc2 |
1 2 |
#ifndef _LINUX_PROC_FS_H #define _LINUX_PROC_FS_H |
1da177e4c Linux-2.6.12-rc2 |
3 4 |
#include <linux/slab.h> #include <linux/fs.h> |
64a07bd82 [PATCH] protect r... |
5 |
#include <linux/spinlock.h> |
e18fa700c Move several *_SU... |
6 |
#include <linux/magic.h> |
1da177e4c Linux-2.6.12-rc2 |
7 |
#include <asm/atomic.h> |
457c4cbc5 [NET]: Make /proc... |
8 |
struct net; |
786d7e161 Fix rmmod/read/wr... |
9 |
struct completion; |
57d3c64fd proc_fs.h: move s... |
10 |
struct mm_struct; |
1da177e4c Linux-2.6.12-rc2 |
11 12 13 14 15 16 17 18 |
/* * The proc filesystem constants/structures */ /* * Offset of the first process in the /proc root directory.. */ #define FIRST_PROCESS_ENTRY 256 |
f248dcb34 maps4: move clear... |
19 20 |
/* Worst case buffer size needed for holding an integer. */ #define PROC_NUMBUF 13 |
1da177e4c Linux-2.6.12-rc2 |
21 22 23 24 25 26 27 28 |
/* * We always define these enumerators */ enum { PROC_ROOT_INO = 1, }; |
1da177e4c Linux-2.6.12-rc2 |
29 30 31 32 33 34 35 36 37 38 |
/* * 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). |
1da177e4c Linux-2.6.12-rc2 |
39 40 41 42 43 44 |
*/ typedef int (read_proc_t)(char *page, char **start, off_t off, int count, int *eof, void *data); typedef int (write_proc_t)(struct file *file, const char __user *buffer, unsigned long count, void *data); |
1da177e4c Linux-2.6.12-rc2 |
45 46 47 48 49 50 51 52 53 |
struct proc_dir_entry { unsigned int low_ino; unsigned short namelen; const char *name; mode_t mode; nlink_t nlink; uid_t uid; gid_t gid; |
22e6c1b39 [PATCH] Use loff_... |
54 |
loff_t size; |
c5ef1c42c [PATCH] mark stru... |
55 |
const struct inode_operations *proc_iops; |
786d7e161 Fix rmmod/read/wr... |
56 57 58 59 60 61 62 63 |
/* * NULL ->proc_fops means "PDE is going away RSN" or * "PDE is just created". In either case, e.g. ->read_proc won't be * called because it's too late or too early, respectively. * * If you're allocating ->proc_fops dynamically, save a pointer * somewhere. */ |
c5ef1c42c [PATCH] mark stru... |
64 |
const struct file_operations *proc_fops; |
1da177e4c Linux-2.6.12-rc2 |
65 66 67 68 69 |
struct proc_dir_entry *next, *parent, *subdir; void *data; read_proc_t *read_proc; write_proc_t *write_proc; atomic_t count; /* use count */ |
786d7e161 Fix rmmod/read/wr... |
70 71 72 |
int pde_users; /* number of callers into module in progress */ spinlock_t pde_unload_lock; /* proc_fops checks and pde_users bumps */ struct completion *pde_unload_completion; |
881adb853 proc: always do -... |
73 |
struct list_head pde_openers; /* who did ->open, but not ->release */ |
1da177e4c Linux-2.6.12-rc2 |
74 |
}; |
c30bb2a25 kcore: add kclist... |
75 76 77 78 |
enum kcore_type { KCORE_TEXT, KCORE_VMALLOC, KCORE_RAM, |
26562c59f kcore: register v... |
79 |
KCORE_VMEMMAP, |
c30bb2a25 kcore: add kclist... |
80 81 |
KCORE_OTHER, }; |
1da177e4c Linux-2.6.12-rc2 |
82 |
struct kcore_list { |
2ef43ec77 kcore: use usual ... |
83 |
struct list_head list; |
1da177e4c Linux-2.6.12-rc2 |
84 85 |
unsigned long addr; size_t size; |
c30bb2a25 kcore: add kclist... |
86 |
int type; |
1da177e4c Linux-2.6.12-rc2 |
87 |
}; |
666bfddbe [PATCH] kdump: Ac... |
88 89 90 |
struct vmcore { struct list_head list; unsigned long long paddr; |
80e8ff634 [PATCH] kdump pro... |
91 |
unsigned long long size; |
666bfddbe [PATCH] kdump: Ac... |
92 93 |
loff_t offset; }; |
1da177e4c Linux-2.6.12-rc2 |
94 |
#ifdef CONFIG_PROC_FS |
1da177e4c Linux-2.6.12-rc2 |
95 |
extern void proc_root_init(void); |
1da177e4c Linux-2.6.12-rc2 |
96 |
|
48e6484d4 [PATCH] proc: Rew... |
97 |
void proc_flush_task(struct task_struct *task); |
7695650a9 Fix race between ... |
98 |
|
1da177e4c Linux-2.6.12-rc2 |
99 100 |
extern struct proc_dir_entry *create_proc_entry(const char *name, mode_t mode, struct proc_dir_entry *parent); |
59b743514 proc: introduce p... |
101 |
struct proc_dir_entry *proc_create_data(const char *name, mode_t mode, |
2d3a4e366 proc: fix ->open'... |
102 |
struct proc_dir_entry *parent, |
59b743514 proc: introduce p... |
103 104 |
const struct file_operations *proc_fops, void *data); |
1da177e4c Linux-2.6.12-rc2 |
105 |
extern void remove_proc_entry(const char *name, struct proc_dir_entry *parent); |
07543f5c7 pid namespaces: m... |
106 |
struct pid_namespace; |
1da177e4c Linux-2.6.12-rc2 |
107 |
|
6f4e64335 pid namespaces: i... |
108 109 |
extern int pid_ns_prepare_proc(struct pid_namespace *ns); extern void pid_ns_release_proc(struct pid_namespace *ns); |
1da177e4c Linux-2.6.12-rc2 |
110 111 112 113 114 115 116 117 118 119 120 |
/* * proc_tty.c */ struct tty_driver; extern void proc_tty_init(void); extern void proc_tty_register_driver(struct tty_driver *driver); extern void proc_tty_unregister_driver(struct tty_driver *driver); /* * proc_devtree.c */ |
183d02025 [PATCH] ppc64: SM... |
121 |
#ifdef CONFIG_PROC_DEVICETREE |
1da177e4c Linux-2.6.12-rc2 |
122 |
struct device_node; |
183d02025 [PATCH] ppc64: SM... |
123 |
struct property; |
1da177e4c Linux-2.6.12-rc2 |
124 |
extern void proc_device_tree_init(void); |
1da177e4c Linux-2.6.12-rc2 |
125 |
extern void proc_device_tree_add_node(struct device_node *, struct proc_dir_entry *); |
183d02025 [PATCH] ppc64: SM... |
126 |
extern void proc_device_tree_add_prop(struct proc_dir_entry *pde, struct property *prop); |
898b5395e [PATCH] powerpc: ... |
127 128 129 130 131 |
extern void proc_device_tree_remove_prop(struct proc_dir_entry *pde, struct property *prop); extern void proc_device_tree_update_prop(struct proc_dir_entry *pde, struct property *newprop, struct property *oldprop); |
1da177e4c Linux-2.6.12-rc2 |
132 133 134 135 136 137 138 |
#endif /* CONFIG_PROC_DEVICETREE */ 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_mode(const char *name, mode_t mode, struct proc_dir_entry *parent); |
59b743514 proc: introduce p... |
139 140 141 142 143 |
static inline struct proc_dir_entry *proc_create(const char *name, mode_t mode, struct proc_dir_entry *parent, const struct file_operations *proc_fops) { return proc_create_data(name, mode, parent, proc_fops, NULL); } |
1da177e4c Linux-2.6.12-rc2 |
144 145 146 147 148 149 150 151 152 153 154 155 |
static inline struct proc_dir_entry *create_proc_read_entry(const char *name, mode_t mode, struct proc_dir_entry *base, read_proc_t *read_proc, void * data) { struct proc_dir_entry *res=create_proc_entry(name,mode,base); if (res) { res->read_proc=read_proc; res->data=data; } return res; } |
457c4cbc5 [NET]: Make /proc... |
156 157 158 |
extern struct proc_dir_entry *proc_net_fops_create(struct net *net, const char *name, mode_t mode, const struct file_operations *fops); extern void proc_net_remove(struct net *net, const char *name); |
e5d69b9f4 [ATM]: Oops readi... |
159 160 |
extern struct proc_dir_entry *proc_net_mkdir(struct net *net, const char *name, struct proc_dir_entry *parent); |
1da177e4c Linux-2.6.12-rc2 |
161 |
|
925d1c401 procfs task exe s... |
162 163 164 165 166 |
/* While the {get|set|dup}_mm_exe_file functions are for mm_structs, they are * only needed to implement /proc/<pid>|self/exe so we define them here. */ extern void set_mm_exe_file(struct mm_struct *mm, struct file *new_exe_file); extern struct file *get_mm_exe_file(struct mm_struct *mm); extern void dup_mm_exe_file(struct mm_struct *oldmm, struct mm_struct *newmm); |
1da177e4c Linux-2.6.12-rc2 |
167 |
#else |
457c4cbc5 [NET]: Make /proc... |
168 |
#define proc_net_fops_create(net, name, mode, fops) ({ (void)(mode), NULL; }) |
457c4cbc5 [NET]: Make /proc... |
169 |
static inline void proc_net_remove(struct net *net, const char *name) {} |
1da177e4c Linux-2.6.12-rc2 |
170 |
|
60347f671 pid namespaces: p... |
171 172 173 |
static inline void proc_flush_task(struct task_struct *task) { } |
1da177e4c Linux-2.6.12-rc2 |
174 175 176 |
static inline struct proc_dir_entry *create_proc_entry(const char *name, mode_t mode, struct proc_dir_entry *parent) { return NULL; } |
2d3a4e366 proc: fix ->open'... |
177 178 179 180 181 182 |
static inline struct proc_dir_entry *proc_create(const char *name, mode_t mode, struct proc_dir_entry *parent, const struct file_operations *proc_fops) { return NULL; } |
59b743514 proc: introduce p... |
183 184 185 186 187 188 |
static inline struct proc_dir_entry *proc_create_data(const char *name, mode_t mode, struct proc_dir_entry *parent, const struct file_operations *proc_fops, void *data) { return NULL; } |
1da177e4c Linux-2.6.12-rc2 |
189 190 191 192 193 194 195 196 197 198 |
#define remove_proc_entry(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;} static inline struct proc_dir_entry *proc_mkdir(const char *name, struct proc_dir_entry *parent) {return NULL;} static inline struct proc_dir_entry *create_proc_read_entry(const char *name, mode_t mode, struct proc_dir_entry *base, read_proc_t *read_proc, void * data) { return NULL; } |
1da177e4c Linux-2.6.12-rc2 |
199 200 201 202 |
struct tty_driver; static inline void proc_tty_register_driver(struct tty_driver *driver) {}; static inline void proc_tty_unregister_driver(struct tty_driver *driver) {}; |
6f4e64335 pid namespaces: i... |
203 204 205 206 207 208 209 210 |
static inline int pid_ns_prepare_proc(struct pid_namespace *ns) { return 0; } static inline void pid_ns_release_proc(struct pid_namespace *ns) { } |
925d1c401 procfs task exe s... |
211 212 213 214 215 216 217 218 219 220 221 222 |
static inline void set_mm_exe_file(struct mm_struct *mm, struct file *new_exe_file) {} static inline struct file *get_mm_exe_file(struct mm_struct *mm) { return NULL; } static inline void dup_mm_exe_file(struct mm_struct *oldmm, struct mm_struct *newmm) {} |
1da177e4c Linux-2.6.12-rc2 |
223 224 225 |
#endif /* CONFIG_PROC_FS */ #if !defined(CONFIG_PROC_KCORE) |
c30bb2a25 kcore: add kclist... |
226 227 |
static inline void kclist_add(struct kcore_list *new, void *addr, size_t size, int type) |
1da177e4c Linux-2.6.12-rc2 |
228 229 230 |
{ } #else |
c30bb2a25 kcore: add kclist... |
231 |
extern void kclist_add(struct kcore_list *, void *, size_t, int type); |
1da177e4c Linux-2.6.12-rc2 |
232 |
#endif |
20cdc894c [PATCH] proc: mod... |
233 |
union proc_op { |
3dcd25f37 d_path: Make proc... |
234 |
int (*proc_get_link)(struct inode *, struct path *); |
20cdc894c [PATCH] proc: mod... |
235 |
int (*proc_read)(struct task_struct *task, char *page); |
be614086a proc: implement p... |
236 237 238 |
int (*proc_show)(struct seq_file *m, struct pid_namespace *ns, struct pid *pid, struct task_struct *task); |
20cdc894c [PATCH] proc: mod... |
239 |
}; |
9043476f7 [PATCH] sanitize ... |
240 241 |
struct ctl_table_header; struct ctl_table; |
1da177e4c Linux-2.6.12-rc2 |
242 |
struct proc_inode { |
13b41b094 [PATCH] proc: Use... |
243 |
struct pid *pid; |
aed7a6c47 [PATCH] proc: Rep... |
244 |
int fd; |
20cdc894c [PATCH] proc: mod... |
245 |
union proc_op op; |
1da177e4c Linux-2.6.12-rc2 |
246 |
struct proc_dir_entry *pde; |
9043476f7 [PATCH] sanitize ... |
247 248 |
struct ctl_table_header *sysctl; struct ctl_table *sysctl_entry; |
1da177e4c Linux-2.6.12-rc2 |
249 250 251 252 253 254 255 256 257 258 259 260 |
struct inode vfs_inode; }; static inline struct proc_inode *PROC_I(const struct inode *inode) { return container_of(inode, struct proc_inode, vfs_inode); } static inline struct proc_dir_entry *PDE(const struct inode *inode) { return PROC_I(inode)->pde; } |
457c4cbc5 [NET]: Make /proc... |
261 262 263 264 |
static inline struct net *PDE_NET(struct proc_dir_entry *pde) { return pde->parent->data; } |
99f895518 [PATCH] proc: don... |
265 |
struct proc_maps_private { |
13b41b094 [PATCH] proc: Use... |
266 |
struct pid *pid; |
99f895518 [PATCH] proc: don... |
267 |
struct task_struct *task; |
dbf8685c8 [PATCH] NOMMU: Im... |
268 |
#ifdef CONFIG_MMU |
99f895518 [PATCH] proc: don... |
269 |
struct vm_area_struct *tail_vma; |
dbf8685c8 [PATCH] NOMMU: Im... |
270 |
#endif |
99f895518 [PATCH] proc: don... |
271 |
}; |
1da177e4c Linux-2.6.12-rc2 |
272 |
#endif /* _LINUX_PROC_FS_H */ |