mirror of
https://git.proxmox.com/git/mirror_zfs.git
synced 2026-05-26 04:07:45 +03:00
libspl: implement ZFS_MODULE_PARAM for userspace
For each tunable declaration, we create a zfs_tunable_t with its details, and then a pointer to it in the 'zfs_tunables' ELF section, that we can access later with a little support from the linker. Sponsored-by: https://despairlabs.com/sponsor/ Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov> Reviewed-by: Alexander Motin <mav@FreeBSD.org> Signed-off-by: Rob Norris <robn@despairlabs.com> Closes #17537
This commit is contained in:
committed by
Brian Behlendorf
parent
3a494c6d2a
commit
967ce75669
@@ -24,12 +24,29 @@
|
||||
* Copyright 2011 Nexenta Systems, Inc. All rights reserved.
|
||||
* Copyright (c) 2012, 2018 by Delphix. All rights reserved.
|
||||
* Copyright (c) 2012, Joyent, Inc. All rights reserved.
|
||||
* Copyright (c) 2025, Rob Norris <robn@despairlabs.com>
|
||||
*/
|
||||
|
||||
#ifndef _SYS_MOD_H
|
||||
#define _SYS_MOD_H
|
||||
|
||||
#define ZFS_MODULE_PARAM(scope, prefix, name, type, perm, desc)
|
||||
#include <sys/tunables.h>
|
||||
|
||||
#define ZFS_MODULE_PARAM(scope, prefix, name, type, perm, desc) \
|
||||
static const zfs_tunable_t _zfs_tunable_##prefix##name = { \
|
||||
.zt_name = #prefix#name, \
|
||||
.zt_varp = &prefix##name, \
|
||||
.zt_varsz = sizeof (prefix##name), \
|
||||
.zt_type = ZFS_TUNABLE_TYPE_##type, \
|
||||
.zt_perm = ZFS_TUNABLE_PERM_##perm, \
|
||||
.zt_desc = desc \
|
||||
}; \
|
||||
static const zfs_tunable_t * \
|
||||
__zfs_tunable_##prefix##name \
|
||||
__attribute__((__section__("zfs_tunables"))) \
|
||||
__attribute__((__used__)) \
|
||||
= &_zfs_tunable_##prefix##name;
|
||||
|
||||
#define ZFS_MODULE_PARAM_ARGS void
|
||||
#define ZFS_MODULE_PARAM_CALL(scope_prefix, name_prefix, name, setfunc, \
|
||||
getfunc, perm, desc)
|
||||
|
||||
Reference in New Issue
Block a user