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