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