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