]>
Commit | Line | Data |
---|---|---|
9f0a21e6 MM |
1 | /* |
2 | * Copyright (c) 2020 iXsystems, Inc. | |
3 | * All rights reserved. | |
4 | * | |
5 | * Redistribution and use in source and binary forms, with or without | |
6 | * modification, are permitted provided that the following conditions | |
7 | * are met: | |
8 | * 1. Redistributions of source code must retain the above copyright | |
9 | * notice, this list of conditions and the following disclaimer. | |
10 | * 2. Redistributions in binary form must reproduce the above copyright | |
11 | * notice, this list of conditions and the following disclaimer in the | |
12 | * documentation and/or other materials provided with the distribution. | |
13 | * | |
14 | * THIS SOFTWARE IS PROVIDED BY THE AUTHORS AND CONTRIBUTORS ``AS IS'' AND | |
15 | * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | |
16 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE | |
17 | * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE | |
18 | * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL | |
19 | * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS | |
20 | * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | |
21 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT | |
22 | * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY | |
23 | * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF | |
24 | * SUCH DAMAGE. | |
25 | * | |
26 | * $FreeBSD$ | |
27 | */ | |
28 | ||
29 | #ifndef _SPL_MOD_H | |
30 | #define _SPL_MOD_H | |
31 | ||
32 | #include <sys/sysctl.h> | |
33 | ||
9f0a21e6 MM |
34 | #define ZMOD_RW CTLFLAG_RWTUN |
35 | #define ZMOD_RD CTLFLAG_RDTUN | |
36 | ||
9f0a21e6 MM |
37 | #define ZFS_MODULE_PARAM(scope_prefix, name_prefix, name, type, perm, desc) \ |
38 | SYSCTL_DECL(_vfs_ ## scope_prefix); \ | |
7ada752a AZ |
39 | SYSCTL_##type(_vfs_ ## scope_prefix, OID_AUTO, name, perm, \ |
40 | &name_prefix ## name, 0, desc) | |
9f0a21e6 MM |
41 | |
42 | #define ZFS_MODULE_PARAM_ARGS SYSCTL_HANDLER_ARGS | |
43 | ||
44 | #define ZFS_MODULE_PARAM_CALL_IMPL(parent, name, perm, args, desc) \ | |
45 | SYSCTL_DECL(parent); \ | |
4723eba8 | 46 | SYSCTL_PROC(parent, OID_AUTO, name, CTLFLAG_MPSAFE | perm | args, desc) |
9f0a21e6 | 47 | |
7ada752a AZ |
48 | #define ZFS_MODULE_PARAM_CALL( \ |
49 | scope_prefix, name_prefix, name, func, _, perm, desc) \ | |
50 | ZFS_MODULE_PARAM_CALL_IMPL(_vfs_ ## scope_prefix, name, perm, \ | |
51 | func ## _args(name_prefix ## name), desc) | |
9f0a21e6 | 52 | |
439dc034 RM |
53 | #define ZFS_MODULE_VIRTUAL_PARAM_CALL ZFS_MODULE_PARAM_CALL |
54 | ||
ab8d9c17 RY |
55 | #define param_set_arc_u64_args(var) \ |
56 | CTLTYPE_U64, &var, 0, param_set_arc_u64, "QU" | |
9f0a21e6 | 57 | |
7bb707ff RM |
58 | #define param_set_arc_int_args(var) \ |
59 | CTLTYPE_INT, &var, 0, param_set_arc_int, "I" | |
60 | ||
e945e8d7 | 61 | #define param_set_arc_min_args(var) \ |
ab8d9c17 | 62 | CTLTYPE_U64, NULL, 0, param_set_arc_min, "QU" |
e945e8d7 AJ |
63 | |
64 | #define param_set_arc_max_args(var) \ | |
ab8d9c17 | 65 | CTLTYPE_U64, NULL, 0, param_set_arc_max, "QU" |
e945e8d7 | 66 | |
7bb707ff RM |
67 | #define param_set_arc_free_target_args(var) \ |
68 | CTLTYPE_UINT, NULL, 0, param_set_arc_free_target, "IU" | |
69 | ||
70 | #define param_set_arc_no_grow_shift_args(var) \ | |
71 | CTLTYPE_INT, NULL, 0, param_set_arc_no_grow_shift, "I" | |
9f0a21e6 MM |
72 | |
73 | #define param_set_deadman_failmode_args(var) \ | |
74 | CTLTYPE_STRING, NULL, 0, param_set_deadman_failmode, "A" | |
75 | ||
95f71c01 EN |
76 | #define param_set_active_allocator_args(var) \ |
77 | CTLTYPE_STRING, NULL, 0, param_set_active_allocator, "A" | |
78 | ||
9f0a21e6 | 79 | #define param_set_deadman_synctime_args(var) \ |
ab8d9c17 | 80 | CTLTYPE_U64, NULL, 0, param_set_deadman_synctime, "QU" |
9f0a21e6 MM |
81 | |
82 | #define param_set_deadman_ziotime_args(var) \ | |
ab8d9c17 | 83 | CTLTYPE_U64, NULL, 0, param_set_deadman_ziotime, "QU" |
9f0a21e6 | 84 | |
9192f27c | 85 | #define param_set_multihost_interval_args(var) \ |
ab8d9c17 | 86 | CTLTYPE_U64, NULL, 0, param_set_multihost_interval, "QU" |
9192f27c | 87 | |
9f0a21e6 | 88 | #define param_set_slop_shift_args(var) \ |
7bb707ff | 89 | CTLTYPE_INT, NULL, 0, param_set_slop_shift, "I" |
9f0a21e6 | 90 | |
6fe3498c | 91 | #define param_set_min_auto_ashift_args(var) \ |
ab8d9c17 | 92 | CTLTYPE_UINT, NULL, 0, param_set_min_auto_ashift, "IU" |
6fe3498c RM |
93 | |
94 | #define param_set_max_auto_ashift_args(var) \ | |
ab8d9c17 | 95 | CTLTYPE_UINT, NULL, 0, param_set_max_auto_ashift, "IU" |
6fe3498c | 96 | |
6930ecbb RN |
97 | #define spa_taskq_read_param_set_args(var) \ |
98 | CTLTYPE_STRING, NULL, 0, spa_taskq_read_param, "A" | |
99 | ||
100 | #define spa_taskq_write_param_set_args(var) \ | |
101 | CTLTYPE_STRING, NULL, 0, spa_taskq_write_param, "A" | |
102 | ||
439dc034 RM |
103 | #define fletcher_4_param_set_args(var) \ |
104 | CTLTYPE_STRING, NULL, 0, fletcher_4_param, "A" | |
105 | ||
75e8b5ad TR |
106 | #define blake3_param_set_args(var) \ |
107 | CTLTYPE_STRING, NULL, 0, blake3_param, "A" | |
108 | ||
589143c2 TR |
109 | #define sha256_param_set_args(var) \ |
110 | CTLTYPE_STRING, NULL, 0, sha256_param, "A" | |
111 | ||
112 | #define sha512_param_set_args(var) \ | |
113 | CTLTYPE_STRING, NULL, 0, sha512_param, "A" | |
114 | ||
9f0a21e6 | 115 | #include <sys/kernel.h> |
7ada752a | 116 | #define module_init(fn) \ |
9f0a21e6 MM |
117 | static void \ |
118 | wrap_ ## fn(void *dummy __unused) \ | |
7ada752a AZ |
119 | { \ |
120 | fn(); \ | |
121 | } \ | |
9f0a21e6 MM |
122 | SYSINIT(zfs_ ## fn, SI_SUB_LAST, SI_ORDER_FIRST, wrap_ ## fn, NULL) |
123 | ||
7ada752a | 124 | #define module_init_early(fn) \ |
e0716250 RM |
125 | static void \ |
126 | wrap_ ## fn(void *dummy __unused) \ | |
7ada752a AZ |
127 | { \ |
128 | fn(); \ | |
129 | } \ | |
e0716250 | 130 | SYSINIT(zfs_ ## fn, SI_SUB_INT_CONFIG_HOOKS, SI_ORDER_FIRST, wrap_ ## fn, NULL) |
9f0a21e6 | 131 | |
7ada752a | 132 | #define module_exit(fn) \ |
9f0a21e6 MM |
133 | static void \ |
134 | wrap_ ## fn(void *dummy __unused) \ | |
7ada752a AZ |
135 | { \ |
136 | fn(); \ | |
137 | } \ | |
9f0a21e6 | 138 | SYSUNINIT(zfs_ ## fn, SI_SUB_LAST, SI_ORDER_FIRST, wrap_ ## fn, NULL) |
9f0a21e6 MM |
139 | |
140 | #endif /* SPL_MOD_H */ |