This source file includes following definitions.
- proc_net_register
- proc_net_unregister
- proc_scsi_register
- proc_scsi_unregister
1 #ifndef _LINUX_PROC_FS_H
2 #define _LINUX_PROC_FS_H
3
4 #include <linux/fs.h>
5 #include <linux/malloc.h>
6
7
8
9
10
11
12
13
14
15 enum root_directory_inos {
16 PROC_ROOT_INO = 1,
17 PROC_LOADAVG,
18 PROC_UPTIME,
19 PROC_MEMINFO,
20 PROC_KMSG,
21 PROC_VERSION,
22 PROC_CPUINFO,
23 PROC_PCI,
24 PROC_SELF,
25 PROC_NET,
26 PROC_SCSI,
27 PROC_MALLOC,
28 PROC_KCORE,
29 PROC_MODULES,
30 PROC_STAT,
31 PROC_DEVICES,
32 PROC_INTERRUPTS,
33 PROC_FILESYSTEMS,
34 PROC_KSYMS,
35 PROC_DMA,
36 PROC_IOPORTS,
37 #ifdef __SMP_PROF__
38 PROC_SMP_PROF,
39 #endif
40 PROC_PROFILE,
41 PROC_CMDLINE,
42 PROC_SYS,
43 PROC_MTAB,
44 PROC_MD,
45 PROC_RTC,
46 PROC_LOCKS
47 };
48
49 enum pid_directory_inos {
50 PROC_PID_INO = 2,
51 PROC_PID_STATUS,
52 PROC_PID_MEM,
53 PROC_PID_CWD,
54 PROC_PID_ROOT,
55 PROC_PID_EXE,
56 PROC_PID_FD,
57 PROC_PID_ENVIRON,
58 PROC_PID_CMDLINE,
59 PROC_PID_STAT,
60 PROC_PID_STATM,
61 PROC_PID_MAPS
62 };
63
64 enum pid_subdirectory_inos {
65 PROC_PID_FD_DIR = 1
66 };
67
68 enum net_directory_inos {
69 PROC_NET_UNIX = 128,
70 PROC_NET_ARP,
71 PROC_NET_ROUTE,
72 PROC_NET_DEV,
73 PROC_NET_RAW,
74 PROC_NET_TCP,
75 PROC_NET_UDP,
76 PROC_NET_SNMP,
77 PROC_NET_RARP,
78 PROC_NET_IGMP,
79 PROC_NET_IPMR_VIF,
80 PROC_NET_IPMR_MFC,
81 PROC_NET_IPFWFWD,
82 PROC_NET_IPFWIN,
83 PROC_NET_IPFWOUT,
84 PROC_NET_IPACCT,
85 PROC_NET_IPMSQHST,
86 PROC_NET_WAVELAN,
87 PROC_NET_IPX_INTERFACE,
88 PROC_NET_IPX_ROUTE,
89 PROC_NET_IPX,
90 PROC_NET_ATALK,
91 PROC_NET_AT_ROUTE,
92 PROC_NET_ATIF,
93 PROC_NET_AX25_ROUTE,
94 PROC_NET_AX25,
95 PROC_NET_AX25_CALLS,
96 PROC_NET_NR_NODES,
97 PROC_NET_NR_NEIGH,
98 PROC_NET_NR,
99 PROC_NET_SOCKSTAT,
100 PROC_NET_RTCACHE,
101 PROC_NET_AX25_BPQETHER,
102 PROC_NET_ALIAS_TYPES,
103 PROC_NET_ALIASES,
104 PROC_NET_IP_MASQ_APP,
105 PROC_NET_LAST
106 };
107
108 enum scsi_directory_inos {
109 PROC_SCSI_SCSI = 256,
110 PROC_SCSI_ADVANSYS,
111 PROC_SCSI_EATA,
112 PROC_SCSI_EATA_PIO,
113 PROC_SCSI_AHA152X,
114 PROC_SCSI_AHA1542,
115 PROC_SCSI_AHA1740,
116 PROC_SCSI_AIC7XXX,
117 PROC_SCSI_BUSLOGIC,
118 PROC_SCSI_U14_34F,
119 PROC_SCSI_FDOMAIN,
120 PROC_SCSI_GENERIC_NCR5380,
121 PROC_SCSI_IN2000,
122 PROC_SCSI_PAS16,
123 PROC_SCSI_QLOGIC,
124 PROC_SCSI_SEAGATE,
125 PROC_SCSI_T128,
126 PROC_SCSI_NCR53C7xx,
127 PROC_SCSI_ULTRASTOR,
128 PROC_SCSI_7000FASST,
129 PROC_SCSI_EATA2X,
130 PROC_SCSI_AM53C974,
131 PROC_SCSI_SSC,
132 PROC_SCSI_NCR53C406A,
133 PROC_SCSI_PPA,
134 PROC_SCSI_ESP,
135 PROC_SCSI_A3000,
136 PROC_SCSI_A2091,
137 PROC_SCSI_GVP11,
138 PROC_SCSI_ATARI,
139 PROC_SCSI_SCSI_DEBUG,
140 PROC_SCSI_NOT_PRESENT,
141 PROC_SCSI_FILE,
142 PROC_SCSI_LAST = (PROC_SCSI_FILE + 16)
143 };
144
145
146
147 #define PROC_DYNAMIC_FIRST 4096
148 #define PROC_NDYNAMIC 4096
149
150 #define PROC_SUPER_MAGIC 0x9fa0
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167 struct proc_dir_entry {
168 unsigned short low_ino;
169 unsigned short namelen;
170 const char *name;
171 mode_t mode;
172 nlink_t nlink;
173 uid_t uid;
174 gid_t gid;
175 unsigned long size;
176 struct inode_operations * ops;
177 int (*get_info)(char *, char **, off_t, int, int);
178 void (*fill_inode)(struct inode *);
179 struct proc_dir_entry *next, *parent, *subdir;
180 void *data;
181 };
182
183 extern int (* dispatch_scsi_info_ptr) (int ino, char *buffer, char **start,
184 off_t offset, int length, int inout);
185
186 extern struct proc_dir_entry proc_root;
187 extern struct proc_dir_entry proc_net;
188 extern struct proc_dir_entry proc_scsi;
189 extern struct proc_dir_entry proc_sys;
190 extern struct proc_dir_entry proc_pid;
191 extern struct proc_dir_entry proc_pid_fd;
192
193 extern struct inode_operations proc_scsi_inode_operations;
194
195 extern void proc_root_init(void);
196 extern void proc_base_init(void);
197 extern void proc_net_init(void);
198
199 extern int proc_register(struct proc_dir_entry *, struct proc_dir_entry *);
200 extern int proc_register_dynamic(struct proc_dir_entry *,
201 struct proc_dir_entry *);
202 extern int proc_unregister(struct proc_dir_entry *, int);
203
204 static inline int proc_net_register(struct proc_dir_entry * x)
205 {
206 return proc_register(&proc_net, x);
207 }
208
209 static inline int proc_net_unregister(int x)
210 {
211 return proc_unregister(&proc_net, x);
212 }
213
214 static inline int proc_scsi_register(struct proc_dir_entry *driver,
215 struct proc_dir_entry *x)
216 {
217 x->ops = &proc_scsi_inode_operations;
218 if(x->low_ino < PROC_SCSI_FILE){
219 return(proc_register(&proc_scsi, x));
220 }else{
221 return(proc_register(driver, x));
222 }
223 }
224
225 static inline int proc_scsi_unregister(struct proc_dir_entry *driver, int x)
226 {
227 extern void scsi_init_free(char *ptr, unsigned int size);
228
229 if(x <= PROC_SCSI_FILE)
230 return(proc_unregister(&proc_scsi, x));
231 else {
232 struct proc_dir_entry **p = &driver->subdir, *dp;
233 int ret;
234
235 while ((dp = *p) != NULL) {
236 if (dp->low_ino == x)
237 break;
238 p = &dp->next;
239 }
240 ret = proc_unregister(driver, x);
241 scsi_init_free((char *) dp, sizeof(struct proc_dir_entry) + 4);
242 return(ret);
243 }
244 }
245
246 extern struct super_block *proc_read_super(struct super_block *,void *,int);
247 extern int init_proc_fs(void);
248 extern struct inode * proc_get_inode(struct super_block *, int, struct proc_dir_entry *);
249 extern void proc_statfs(struct super_block *, struct statfs *, int);
250 extern void proc_read_inode(struct inode *);
251 extern void proc_write_inode(struct inode *);
252 extern int proc_match(int, const char *, struct proc_dir_entry *);
253
254
255
256
257
258
259
260
261 extern int proc_readdir(struct inode *, struct file *, void *, filldir_t);
262 extern int proc_lookup(struct inode *, const char *, int, struct inode **);
263
264 extern struct inode_operations proc_dir_inode_operations;
265 extern struct inode_operations proc_net_inode_operations;
266 extern struct inode_operations proc_netdir_inode_operations;
267 extern struct inode_operations proc_scsi_inode_operations;
268 extern struct inode_operations proc_mem_inode_operations;
269 extern struct inode_operations proc_sys_inode_operations;
270 extern struct inode_operations proc_array_inode_operations;
271 extern struct inode_operations proc_arraylong_inode_operations;
272 extern struct inode_operations proc_kcore_inode_operations;
273 extern struct inode_operations proc_profile_inode_operations;
274 extern struct inode_operations proc_kmsg_inode_operations;
275 extern struct inode_operations proc_link_inode_operations;
276 extern struct inode_operations proc_fd_inode_operations;
277
278 #endif