]>
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 | ||
34 | #define ZFS_MODULE_DESCRIPTION(s) | |
35 | #define ZFS_MODULE_AUTHOR(s) | |
36 | #define ZFS_MODULE_LICENSE(s) | |
37 | #define ZFS_MODULE_VERSION(s) | |
38 | ||
39 | #define EXPORT_SYMBOL(x) | |
40 | #define module_param(a, b, c) | |
41 | #define MODULE_PARM_DESC(a, b) | |
42 | ||
43 | #define ZMOD_RW CTLFLAG_RWTUN | |
44 | #define ZMOD_RD CTLFLAG_RDTUN | |
45 | ||
9f0a21e6 MM |
46 | #define ZFS_MODULE_PARAM(scope_prefix, name_prefix, name, type, perm, desc) \ |
47 | SYSCTL_DECL(_vfs_ ## scope_prefix); \ | |
7ada752a AZ |
48 | SYSCTL_##type(_vfs_ ## scope_prefix, OID_AUTO, name, perm, \ |
49 | &name_prefix ## name, 0, desc) | |
9f0a21e6 MM |
50 | |
51 | #define ZFS_MODULE_PARAM_ARGS SYSCTL_HANDLER_ARGS | |
52 | ||
53 | #define ZFS_MODULE_PARAM_CALL_IMPL(parent, name, perm, args, desc) \ | |
54 | SYSCTL_DECL(parent); \ | |
55 | SYSCTL_PROC(parent, OID_AUTO, name, perm | args, desc) | |
56 | ||
7ada752a AZ |
57 | #define ZFS_MODULE_PARAM_CALL( \ |
58 | scope_prefix, name_prefix, name, func, _, perm, desc) \ | |
59 | ZFS_MODULE_PARAM_CALL_IMPL(_vfs_ ## scope_prefix, name, perm, \ | |
60 | func ## _args(name_prefix ## name), desc) | |
9f0a21e6 | 61 | |
439dc034 RM |
62 | #define ZFS_MODULE_VIRTUAL_PARAM_CALL ZFS_MODULE_PARAM_CALL |
63 | ||
9f0a21e6 MM |
64 | #define param_set_arc_long_args(var) \ |
65 | CTLTYPE_ULONG, &var, 0, param_set_arc_long, "LU" | |
66 | ||
e945e8d7 AJ |
67 | #define param_set_arc_min_args(var) \ |
68 | CTLTYPE_ULONG, &var, 0, param_set_arc_min, "LU" | |
69 | ||
70 | #define param_set_arc_max_args(var) \ | |
71 | CTLTYPE_ULONG, &var, 0, param_set_arc_max, "LU" | |
72 | ||
9f0a21e6 MM |
73 | #define param_set_arc_int_args(var) \ |
74 | CTLTYPE_INT, &var, 0, param_set_arc_int, "I" | |
75 | ||
76 | #define param_set_deadman_failmode_args(var) \ | |
77 | CTLTYPE_STRING, NULL, 0, param_set_deadman_failmode, "A" | |
78 | ||
79 | #define param_set_deadman_synctime_args(var) \ | |
80 | CTLTYPE_ULONG, NULL, 0, param_set_deadman_synctime, "LU" | |
81 | ||
82 | #define param_set_deadman_ziotime_args(var) \ | |
83 | CTLTYPE_ULONG, NULL, 0, param_set_deadman_ziotime, "LU" | |
84 | ||
9192f27c RM |
85 | #define param_set_multihost_interval_args(var) \ |
86 | CTLTYPE_ULONG, &var, 0, param_set_multihost_interval, "LU" | |
87 | ||
9f0a21e6 MM |
88 | #define param_set_slop_shift_args(var) \ |
89 | CTLTYPE_INT, &var, 0, param_set_slop_shift, "I" | |
90 | ||
6fe3498c RM |
91 | #define param_set_min_auto_ashift_args(var) \ |
92 | CTLTYPE_U64, &var, 0, param_set_min_auto_ashift, "QU" | |
93 | ||
94 | #define param_set_max_auto_ashift_args(var) \ | |
95 | CTLTYPE_U64, &var, 0, param_set_max_auto_ashift, "QU" | |
96 | ||
439dc034 RM |
97 | #define fletcher_4_param_set_args(var) \ |
98 | CTLTYPE_STRING, NULL, 0, fletcher_4_param, "A" | |
99 | ||
9f0a21e6 | 100 | #include <sys/kernel.h> |
7ada752a | 101 | #define module_init(fn) \ |
9f0a21e6 MM |
102 | static void \ |
103 | wrap_ ## fn(void *dummy __unused) \ | |
7ada752a AZ |
104 | { \ |
105 | fn(); \ | |
106 | } \ | |
9f0a21e6 MM |
107 | SYSINIT(zfs_ ## fn, SI_SUB_LAST, SI_ORDER_FIRST, wrap_ ## fn, NULL) |
108 | ||
7ada752a | 109 | #define module_init_early(fn) \ |
e0716250 RM |
110 | static void \ |
111 | wrap_ ## fn(void *dummy __unused) \ | |
7ada752a AZ |
112 | { \ |
113 | fn(); \ | |
114 | } \ | |
e0716250 | 115 | SYSINIT(zfs_ ## fn, SI_SUB_INT_CONFIG_HOOKS, SI_ORDER_FIRST, wrap_ ## fn, NULL) |
9f0a21e6 | 116 | |
7ada752a | 117 | #define module_exit(fn) \ |
9f0a21e6 MM |
118 | static void \ |
119 | wrap_ ## fn(void *dummy __unused) \ | |
7ada752a AZ |
120 | { \ |
121 | fn(); \ | |
122 | } \ | |
9f0a21e6 | 123 | SYSUNINIT(zfs_ ## fn, SI_SUB_LAST, SI_ORDER_FIRST, wrap_ ## fn, NULL) |
9f0a21e6 MM |
124 | |
125 | #endif /* SPL_MOD_H */ |