1
2
3
4
5
6
7 #include <linux/lists.h>
8
9 #ifndef _LINUX_SYSCTL_H
10 #define _LINUX_SYSCTL_H
11
12 #define CTL_MAXNAME 10
13
14 struct __sysctl_args {
15 int *name;
16 int nlen;
17 void *oldval;
18 size_t *oldlenp;
19 void *newval;
20 size_t newlen;
21 unsigned long __unused[4];
22 };
23
24
25
26
27
28
29 #ifdef __KERNEL__
30 #define CTL_ANY -1
31 #define CTL_NONE 0
32 #endif
33
34 #define CTL_KERN 1
35 #define CTL_VM 2
36 #define CTL_NET 3
37 #define CTL_PROC 4
38 #define CTL_FS 5
39 #define CTL_DEBUG 6
40 #define CTL_DEV 7
41 #define CTL_MAXID 8
42
43
44 #define KERN_OSTYPE 1
45 #define KERN_OSRELEASE 2
46 #define KERN_OSREV 3
47 #define KERN_VERSION 4
48 #define KERN_SECUREMASK 5
49 #define KERN_PROF 6
50 #define KERN_NODENAME 7
51 #define KERN_DOMAINNAME 8
52 #define KERN_NRINODE 9
53 #define KERN_MAXINODE 10
54 #define KERN_NRFILE 11
55 #define KERN_MAXFILE 12
56 #define KERN_MAXID 13
57 #define KERN_SECURELVL 14
58 #define KERN_PANIC 15
59 #define KERN_REALROOTDEV 16
60 #define KERN_NFSRNAME 17
61 #define KERN_NFSRADDRS 18
62
63
64 #define VM_SWAPCTL 1
65 #define VM_KSWAPD 2
66 #define VM_FREEPG 3
67 #define VM_BDFLUSH 4
68 #define VM_MAXID 5
69
70
71
72
73
74
75
76
77
78
79
80 #ifdef __KERNEL__
81
82 extern asmlinkage int sys_sysctl(struct __sysctl_args *);
83 extern void init_sysctl(void);
84
85 typedef struct ctl_table ctl_table;
86
87 typedef int ctl_handler (ctl_table *table, int *name, int nlen,
88 void *oldval, size_t *oldlenp,
89 void *newval, size_t newlen,
90 void **context);
91
92 typedef int proc_handler (ctl_table *ctl, int write, struct file * filp,
93 void *buffer, size_t *lenp);
94
95 extern int proc_dostring(ctl_table *, int, struct file *,
96 void *, size_t *);
97 extern int proc_dointvec(ctl_table *, int, struct file *,
98 void *, size_t *);
99 extern int proc_dointvec_minmax(ctl_table *, int, struct file *,
100 void *, size_t *);
101
102 extern int do_sysctl (int *name, int nlen,
103 void *oldval, size_t *oldlenp,
104 void *newval, size_t newlen);
105
106 extern int do_sysctl_strategy (ctl_table *table,
107 int *name, int nlen,
108 void *oldval, size_t *oldlenp,
109 void *newval, size_t newlen, void ** context);
110
111 extern ctl_handler sysctl_string;
112 extern ctl_handler sysctl_intvec;
113
114 extern int do_string (
115 void *oldval, size_t *oldlenp, void *newval, size_t newlen,
116 int rdwr, char *data, size_t max);
117 extern int do_int (
118 void *oldval, size_t *oldlenp, void *newval, size_t newlen,
119 int rdwr, int *data);
120 extern int do_struct (
121 void *oldval, size_t *oldlenp, void *newval, size_t newlen,
122 int rdwr, void *data, size_t len);
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163 struct ctl_table
164 {
165 int ctl_name;
166 const char *procname;
167 void *data;
168 int maxlen;
169 mode_t mode;
170 ctl_table *child;
171 proc_handler *proc_handler;
172 ctl_handler *strategy;
173 struct proc_dir_entry *de;
174 void *extra1;
175 void *extra2;
176 };
177
178
179
180 struct ctl_table_header
181 {
182 ctl_table *ctl_table;
183 DLNODE(struct ctl_table_header) ctl_entry;
184 };
185
186 struct ctl_table_header * register_sysctl_table(ctl_table * table,
187 int insert_at_head);
188 void unregister_sysctl_table(struct ctl_table_header * table);
189
190 #else
191
192 #endif
193
194 #endif