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
59
60 #define VM_SWAPCTL 1
61 #define VM_KSWAPD 2
62 #define VM_FREEPG 3
63 #define VM_BDFLUSH 4
64 #define VM_MAXID 5
65
66
67
68
69
70
71
72
73
74
75
76 #ifdef __KERNEL__
77
78 extern asmlinkage int sys_sysctl(struct __sysctl_args *);
79 extern void init_sysctl(void);
80
81 typedef struct ctl_table ctl_table;
82
83 typedef int ctl_handler (ctl_table *table, int *name, int nlen,
84 void *oldval, size_t *oldlenp,
85 void *newval, size_t newlen,
86 void **context);
87
88 typedef int proc_handler (ctl_table *ctl, int write, struct file * filp,
89 void *buffer, size_t *lenp);
90
91 extern int proc_dostring(ctl_table *, int, struct file *,
92 void *, size_t *);
93 extern int proc_dointvec(ctl_table *, int, struct file *,
94 void *, size_t *);
95 extern int proc_dointvec_minmax(ctl_table *, int, struct file *,
96 void *, size_t *);
97
98 extern int do_sysctl (int *name, int nlen,
99 void *oldval, size_t *oldlenp,
100 void *newval, size_t newlen);
101
102 extern int do_sysctl_strategy (ctl_table *table,
103 int *name, int nlen,
104 void *oldval, size_t *oldlenp,
105 void *newval, size_t newlen, void ** context);
106
107 extern ctl_handler sysctl_string;
108 extern ctl_handler sysctl_intvec;
109
110 extern int do_string (
111 void *oldval, size_t *oldlenp, void *newval, size_t newlen,
112 int rdwr, char *data, size_t max);
113 extern int do_int (
114 void *oldval, size_t *oldlenp, void *newval, size_t newlen,
115 int rdwr, int *data);
116 extern int do_struct (
117 void *oldval, size_t *oldlenp, void *newval, size_t newlen,
118 int rdwr, void *data, size_t len);
119
120
121
122
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 struct ctl_table
160 {
161 int ctl_name;
162 const char *procname;
163 void *data;
164 int maxlen;
165 mode_t mode;
166 ctl_table *child;
167 proc_handler *proc_handler;
168 ctl_handler *strategy;
169 struct proc_dir_entry *de;
170 void *extra1;
171 void *extra2;
172 };
173
174
175
176 struct ctl_table_header
177 {
178 ctl_table *ctl_table;
179 DLNODE(struct ctl_table_header) ctl_entry;
180 };
181
182 struct ctl_table_header * register_sysctl_table(ctl_table * table,
183 int insert_at_head);
184 void unregister_sysctl_table(struct ctl_table_header * table);
185
186 #else
187
188 #endif
189
190 #endif