2 * osi_sysctl.c: Linux sysctl interface to OpenAFS
6 * Written Jan 30, 2002 by Kris Van Hees (Sine Nomine Associates)
10 #include "afs/param.h"
12 #include "afs/sysincludes.h" /* Standard vendor system headers */
13 #include "afsincludes.h" /* Afs-based standard headers */
14 #include "afs/afs_stats.h" /* afs statistics */
16 #include <linux/sysctl.h>
17 #ifdef CONFIG_H_EXISTS
18 #include <linux/config.h>
22 extern afs_int32 afs_new_inum;
24 /* From afs_analyze.c */
25 extern afs_int32 hm_retry_RO;
26 extern afs_int32 hm_retry_RW;
27 extern afs_int32 hm_retry_int;
28 extern afs_int32 afs_blocksUsed_0;
29 extern afs_int32 afs_blocksUsed_1;
30 extern afs_int32 afs_blocksUsed_2;
31 extern afs_int32 afs_pct1;
32 extern afs_int32 afs_pct2;
35 static struct ctl_table_header *afs_sysctl = NULL;
37 static ctl_table afs_sysctl_table[] = {
39 #if defined(SYSCTL_TABLE_CHECKING)
40 .ctl_name = CTL_UNNUMBERED,
44 .procname = "hm_retry_RO",
46 .maxlen = sizeof(afs_int32),
48 .proc_handler = &proc_dointvec
51 #if defined(SYSCTL_TABLE_CHECKING)
52 .ctl_name = CTL_UNNUMBERED,
56 .procname = "hm_retry_RW",
58 .maxlen = sizeof(afs_int32),
60 .proc_handler = &proc_dointvec
63 #if defined(SYSCTL_TABLE_CHECKING)
64 .ctl_name = CTL_UNNUMBERED,
68 .procname = "hm_retry_int",
69 .data = &hm_retry_int,
70 .maxlen = sizeof(afs_int32),
72 .proc_handler = &proc_dointvec
75 #if defined(SYSCTL_TABLE_CHECKING)
76 .ctl_name = CTL_UNNUMBERED,
82 .maxlen = sizeof(afs_int32),
84 .proc_handler = &proc_dointvec
87 #if defined(SYSCTL_TABLE_CHECKING)
88 .ctl_name = CTL_UNNUMBERED,
92 .procname = "rx_deadtime",
93 .data = &afs_rx_deadtime,
94 .maxlen = sizeof(afs_int32),
96 .proc_handler = &proc_dointvec
99 #if defined(SYSCTL_TABLE_CHECKING)
100 .ctl_name = CTL_UNNUMBERED,
104 .procname = "bkVolPref",
105 .data = &afs_bkvolpref,
106 .maxlen = sizeof(afs_int32),
108 .proc_handler = &proc_dointvec
111 #if defined(SYSCTL_TABLE_CHECKING)
112 .ctl_name = CTL_UNNUMBERED,
116 .procname = "afs_blocksUsed",
117 .data = &afs_blocksUsed,
118 .maxlen = sizeof(afs_int32),
120 .proc_handler = &proc_dointvec
123 #if defined(SYSCTL_TABLE_CHECKING)
124 .ctl_name = CTL_UNNUMBERED,
128 .procname = "afs_blocksUsed_0",
129 .data = &afs_blocksUsed_0,
130 .maxlen = sizeof(afs_int32),
132 .proc_handler = &proc_dointvec
135 #if defined(SYSCTL_TABLE_CHECKING)
136 .ctl_name = CTL_UNNUMBERED,
140 .procname = "afs_blocksUsed_1",
141 .data = &afs_blocksUsed_1,
142 .maxlen = sizeof(afs_int32),
144 .proc_handler = &proc_dointvec
147 #if defined(SYSCTL_TABLE_CHECKING)
148 .ctl_name = CTL_UNNUMBERED,
152 .procname = "afs_blocksUsed_2",
153 .data = &afs_blocksUsed_2,
154 .maxlen = sizeof(afs_int32),
156 .proc_handler = &proc_dointvec
159 #if defined(SYSCTL_TABLE_CHECKING)
160 .ctl_name = CTL_UNNUMBERED,
164 .procname = "afs_pct1",
166 .maxlen = sizeof(afs_int32),
168 .proc_handler = &proc_dointvec
171 #if defined(SYSCTL_TABLE_CHECKING)
172 .ctl_name = CTL_UNNUMBERED,
176 .procname = "afs_pct2",
178 .maxlen = sizeof(afs_int32),
180 .proc_handler = &proc_dointvec
183 #if defined(SYSCTL_TABLE_CHECKING)
184 .ctl_name = CTL_UNNUMBERED,
188 .procname = "afs_cacheBlocks",
189 .data = &afs_cacheBlocks,
190 .maxlen = sizeof(afs_int32),
192 .proc_handler = &proc_dointvec
195 #if defined(SYSCTL_TABLE_CHECKING)
196 .ctl_name = CTL_UNNUMBERED,
200 .procname = "md5inum",
201 .data = &afs_new_inum,
202 .maxlen = sizeof(afs_int32),
204 .proc_handler = &proc_dointvec
209 static ctl_table fs_sysctl_table[] = {
211 #if defined(SYSCTL_TABLE_CHECKING)
212 .ctl_name = CTL_UNNUMBERED,
218 .child = afs_sysctl_table
226 #if defined(REGISTER_SYSCTL_TABLE_NOFLAG)
227 afs_sysctl = register_sysctl_table(fs_sysctl_table);
229 afs_sysctl = register_sysctl_table(fs_sysctl_table, 0);
241 unregister_sysctl_table(afs_sysctl);
246 #endif /* CONFIG_SYSCTL */