From d02ea5170a42bb62663e07bdc0ec2054fb0d6e27 Mon Sep 17 00:00:00 2001 From: Rob Norris Date: Fri, 24 Oct 2025 22:32:31 +1100 Subject: [PATCH] libspl: init/fini Sponsored-by: https://despairlabs.com/sponsor/ Reviewed-by: Brian Behlendorf Signed-off-by: Rob Norris Closes #17861 --- lib/libspl/Makefile.am | 1 + lib/libspl/include/Makefile.am | 1 + lib/libspl/include/libspl.h | 40 ++++++++++++++++++++++++++++++++++ lib/libspl/libspl.c | 36 ++++++++++++++++++++++++++++++ lib/libzpool/kernel.c | 4 ++++ 5 files changed, 82 insertions(+) create mode 100644 lib/libspl/include/libspl.h create mode 100644 lib/libspl/libspl.c diff --git a/lib/libspl/Makefile.am b/lib/libspl/Makefile.am index a6afd1793..3d46829ed 100644 --- a/lib/libspl/Makefile.am +++ b/lib/libspl/Makefile.am @@ -21,6 +21,7 @@ libspl_la_SOURCES = \ %D%/getexecname.c \ %D%/kmem.c \ %D%/kstat.c \ + %D%/libspl.c \ %D%/list.c \ %D%/mkdirp.c \ %D%/mutex.c \ diff --git a/lib/libspl/include/Makefile.am b/lib/libspl/include/Makefile.am index 486cce3f1..41139d33e 100644 --- a/lib/libspl/include/Makefile.am +++ b/lib/libspl/include/Makefile.am @@ -4,6 +4,7 @@ libspl_HEADERS = \ %D%/atomic.h \ %D%/libgen.h \ %D%/libshare.h \ + %D%/libspl.h \ %D%/statcommon.h \ %D%/stdlib.h \ %D%/string.h \ diff --git a/lib/libspl/include/libspl.h b/lib/libspl/include/libspl.h new file mode 100644 index 000000000..68756bb95 --- /dev/null +++ b/lib/libspl/include/libspl.h @@ -0,0 +1,40 @@ +// SPDX-License-Identifier: CDDL-1.0 +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or https://opensource.org/licenses/CDDL-1.0. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ +/* + * Copyright (c) 2025, Rob Norris + */ + +#ifndef _LIBSPL_H +#define _LIBSPL_H extern __attribute__((visibility("default"))) + +#ifdef __cplusplus +extern "C" { +#endif + +_LIBSPL_H void libspl_init(void); +_LIBSPL_H void libspl_fini(void); + +#ifdef __cplusplus +}; +#endif + +#endif /* _LIBSPL_H */ diff --git a/lib/libspl/libspl.c b/lib/libspl/libspl.c new file mode 100644 index 000000000..7c24f5cc0 --- /dev/null +++ b/lib/libspl/libspl.c @@ -0,0 +1,36 @@ +// SPDX-License-Identifier: CDDL-1.0 +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or https://opensource.org/licenses/CDDL-1.0. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ +/* + * Copyright (c) 2025, Rob Norris + */ + +#include + +void +libspl_init(void) +{ +} + +void +libspl_fini(void) +{ +} diff --git a/lib/libzpool/kernel.c b/lib/libzpool/kernel.c index d7ff74cba..24d6fada3 100644 --- a/lib/libzpool/kernel.c +++ b/lib/libzpool/kernel.c @@ -505,6 +505,8 @@ kernel_init(int mode) { extern uint_t rrw_tsd_key; + libspl_init(); + umem_nofail_callback(umem_out_of_memory); physmem = sysconf(_SC_PHYS_PAGES); @@ -543,6 +545,8 @@ kernel_fini(void) system_taskq_fini(); random_fini(); + + libspl_fini(); } int