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
112 .procname = "afs_blocksUsed",
113 .data = &afs_blocksUsed,
114 .maxlen = sizeof(afs_int32),
116 .proc_handler = &proc_dointvec
120 .procname = "afs_blocksUsed_0",
121 .data = &afs_blocksUsed_0,
122 .maxlen = sizeof(afs_int32),
124 .proc_handler = &proc_dointvec
128 .procname = "afs_blocksUsed_1",
129 .data = &afs_blocksUsed_1,
130 .maxlen = sizeof(afs_int32),
132 .proc_handler = &proc_dointvec
136 .procname = "afs_blocksUsed_2",
137 .data = &afs_blocksUsed_2,
138 .maxlen = sizeof(afs_int32),
140 .proc_handler = &proc_dointvec
144 .procname = "afs_pct1",
146 .maxlen = sizeof(afs_int32),
148 .proc_handler = &proc_dointvec
152 .procname = "afs_pct2",
154 .maxlen = sizeof(afs_int32),
156 .proc_handler = &proc_dointvec
160 .procname = "afs_cacheBlocks",
161 .data = &afs_cacheBlocks,
162 .maxlen = sizeof(afs_int32),
164 .proc_handler = &proc_dointvec
168 .procname = "md5inum",
169 .data = &afs_new_inum,
170 .maxlen = sizeof(afs_int32),
172 .proc_handler = &proc_dointvec
177 static ctl_table fs_sysctl_table[] = {
179 #if defined(SYSCTL_TABLE_CHECKING)
180 .ctl_name = CTL_UNNUMBERED,
186 .child = afs_sysctl_table
194 #if defined(REGISTER_SYSCTL_TABLE_NOFLAG)
195 afs_sysctl = register_sysctl_table(fs_sysctl_table);
197 afs_sysctl = register_sysctl_table(fs_sysctl_table, 0);
209 unregister_sysctl_table(afs_sysctl);
214 #endif /* CONFIG_SYSCTL */