eaee80a38322532e8c797b3356058e9c9c277852
[openafs.git] / src / afs / LINUX / osi_sysctl.c
1 /*
2  * osi_sysctl.c: Linux sysctl interface to OpenAFS
3  *
4  * $Id$
5  *
6  * Written Jan 30, 2002 by Kris Van Hees (Sine Nomine Associates)
7  */
8
9 #include <afsconfig.h>
10 #include "afs/param.h"
11
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 */
15
16 #include <linux/sysctl.h>
17 #include <linux/config.h>
18
19 /* From afs_analyze.c */
20 extern afs_int32 hm_retry_RO;
21 extern afs_int32 hm_retry_RW;
22 extern afs_int32 hm_retry_int;
23 extern afs_int32 afs_blocksUsed_0;
24 extern afs_int32 afs_blocksUsed_1;
25 extern afs_int32 afs_blocksUsed_2;
26 extern afs_int32 afs_pct1;
27 extern afs_int32 afs_pct2;
28
29 #ifdef CONFIG_SYSCTL
30 static struct ctl_table_header *afs_sysctl = NULL;
31
32 static ctl_table afs_sysctl_table[] = {
33     {1, "hm_retry_RO",
34      &hm_retry_RO, sizeof(afs_int32), 0644, NULL,
35      &proc_dointvec}
36     ,
37     {2, "hm_retry_RW",
38      &hm_retry_RW, sizeof(afs_int32), 0644, NULL,
39      &proc_dointvec}
40     ,
41     {3, "hm_retry_int",
42      &hm_retry_int, sizeof(afs_int32), 0644, NULL,
43      &proc_dointvec}
44     ,
45     {4, "GCPAGs",
46      &afs_gcpags, sizeof(afs_int32), 0644, NULL,
47      &proc_dointvec}
48     ,
49     {5, "rx_deadtime",
50      &afs_rx_deadtime, sizeof(afs_int32), 0644, NULL,
51      &proc_dointvec}
52     ,
53     {6, "bkVolPref",
54      &afs_bkvolpref, sizeof(afs_int32), 0644, NULL,
55      &proc_dointvec}
56     ,
57     {7, "afs_blocksUsed",
58      &afs_blocksUsed, sizeof(afs_int32), 0444, NULL,
59      &proc_dointvec}
60     ,
61     {8, "afs_blocksUsed_0",
62      &afs_blocksUsed_0, sizeof(afs_int32), 0644, NULL,
63      &proc_dointvec}
64     ,
65     {9, "afs_blocksUsed_1",
66      &afs_blocksUsed_1, sizeof(afs_int32), 0644, NULL,
67      &proc_dointvec}
68     ,
69     {10, "afs_blocksUsed_2",
70      &afs_blocksUsed_2, sizeof(afs_int32), 0644, NULL,
71      &proc_dointvec}
72     ,
73     {11, "afs_pct1",
74      &afs_pct1, sizeof(afs_int32), 0644, NULL,
75      &proc_dointvec}
76     ,
77     {12, "afs_pct2",
78      &afs_pct2, sizeof(afs_int32), 0644, NULL,
79      &proc_dointvec}
80     ,
81     {13, "afs_cacheBlocks",
82      &afs_cacheBlocks, sizeof(afs_int32), 0644, NULL,
83      &proc_dointvec}
84     ,
85     {0}
86 };
87
88 static ctl_table fs_sysctl_table[] = {
89     {1, "afs", NULL, 0, 0555, afs_sysctl_table},
90     {0}
91 };
92
93 int
94 osi_sysctl_init()
95 {
96     afs_sysctl = register_sysctl_table(fs_sysctl_table, 0);
97     if (!afs_sysctl)
98         return -1;
99
100     return 0;
101 }
102
103 void
104 osi_sysctl_clean()
105 {
106     if (afs_sysctl) {
107         unregister_sysctl_table(afs_sysctl);
108         afs_sysctl = NULL;
109     }
110 }
111
112 #endif /* CONFIG_SYSCTL */