aboutsummaryrefslogtreecommitdiff
path: root/sys/sys
diff options
context:
space:
mode:
authorReid Linnemann <rlinnemann@netgate.com>2022-05-17 19:49:41 +0000
committerKristof Provost <kp@FreeBSD.org>2022-07-21 16:35:23 +0000
commit000321bab7bea3530408b960095a6ea241451175 (patch)
treee58b866e4b3c546207767249f1d43a4234f472a0 /sys/sys
parentfb8ef16bab0d23e185deed5a6b2e44e72ad53d43 (diff)
downloadsrc-000321bab7bea3530408b960095a6ea241451175.tar.gz
src-000321bab7bea3530408b960095a6ea241451175.zip
namespace nv names, version libnv and libnvpair library symbols
libnv and libnvpair have aliased symbols, and as a result a single process which dlopens a shared object that is dynamically linked to libnv and another to libnvpair will wind up with a single set of resolved symbols for those in conflict. A source file also cannot include both libnv and libnvpair headers because of aliased identifiers. To resolve the situation, libnv types and functions are namespaced via nv_namespace.h, and libnv symbols are versioned. The msgio functions are not namespaced or exported as they are not part of the external API. Reviewed by: kevans Sponsored by: Rubicon Communications, LLC ("Netgate") Differential Revision: https://reviews.freebsd.org/D35261
Diffstat (limited to 'sys/sys')
-rw-r--r--sys/sys/cnv.h1
-rw-r--r--sys/sys/dnv.h1
-rw-r--r--sys/sys/nv.h1
-rw-r--r--sys/sys/nv_namespace.h286
4 files changed, 289 insertions, 0 deletions
diff --git a/sys/sys/cnv.h b/sys/sys/cnv.h
index babc913c5637..17e6184f87d2 100644
--- a/sys/sys/cnv.h
+++ b/sys/sys/cnv.h
@@ -38,6 +38,7 @@
#include <stdbool.h>
#include <stdint.h>
#include <stdio.h>
+#include <sys/nv_namespace.h>
#endif
#ifndef _NVLIST_T_DECLARED
diff --git a/sys/sys/dnv.h b/sys/sys/dnv.h
index 9ddd8720c923..96c9b75843f1 100644
--- a/sys/sys/dnv.h
+++ b/sys/sys/dnv.h
@@ -40,6 +40,7 @@
#include <stdbool.h>
#include <stddef.h>
#include <stdint.h>
+#include <sys/nv_namespace.h>
#endif
#ifndef _NVLIST_T_DECLARED
diff --git a/sys/sys/nv.h b/sys/sys/nv.h
index 80fb877721f0..0c382002b77b 100644
--- a/sys/sys/nv.h
+++ b/sys/sys/nv.h
@@ -42,6 +42,7 @@
#include <stdbool.h>
#include <stdint.h>
#include <stdio.h>
+#include <sys/nv_namespace.h>
#endif
#ifndef _NVLIST_T_DECLARED
diff --git a/sys/sys/nv_namespace.h b/sys/sys/nv_namespace.h
new file mode 100644
index 000000000000..e18629dc0f05
--- /dev/null
+++ b/sys/sys/nv_namespace.h
@@ -0,0 +1,286 @@
+/*-
+ * SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+ * All rights reserved.
+ *
+ * Copyright (c) 2022 Rubicon Communications, LLC (Netgate)
+ * All rights reserved.
+ *
+ * This software was developed by Pawel Jakub Dawidek under sponsorship from
+ * the FreeBSD Foundation.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHORS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+
+#ifndef _NV_NAMESPACE_H_
+#define _NV_NAMESPACE_H_
+
+#define cnvlist_free_binary FreeBSD_cnvlist_free_binary
+#define cnvlist_free_bool FreeBSD_cnvlist_free_bool
+#define cnvlist_free_bool_array FreeBSD_cnvlist_free_bool_array
+#define cnvlist_free_descriptor FreeBSD_cnvlist_free_descriptor
+#define cnvlist_free_descriptor_array FreeBSD_cnvlist_free_descriptor_array
+#define cnvlist_free_number FreeBSD_cnvlist_free_number
+#define cnvlist_free_number_array FreeBSD_cnvlist_free_number_array
+#define cnvlist_free_nvlist FreeBSD_cnvlist_free_nvlist
+#define cnvlist_free_nvlist_array FreeBSD_cnvlist_free_nvlist_array
+#define cnvlist_free_string FreeBSD_cnvlist_free_string
+#define cnvlist_free_string_array FreeBSD_cnvlist_free_string_array
+#define cnvlist_get_binary FreeBSD_cnvlist_get_binary
+#define cnvlist_get_bool FreeBSD_cnvlist_get_bool
+#define cnvlist_get_bool_array FreeBSD_cnvlist_get_bool_array
+#define cnvlist_get_descriptor FreeBSD_cnvlist_get_descriptor
+#define cnvlist_get_descriptor_array FreeBSD_cnvlist_get_descriptor_array
+#define cnvlist_get_number FreeBSD_cnvlist_get_number
+#define cnvlist_get_number_array FreeBSD_cnvlist_get_number_array
+#define cnvlist_get_nvlist FreeBSD_cnvlist_get_nvlist
+#define cnvlist_get_nvlist_array FreeBSD_cnvlist_get_nvlist_array
+#define cnvlist_get_string FreeBSD_cnvlist_get_string
+#define cnvlist_get_string_array FreeBSD_cnvlist_get_string_array
+#define cnvlist_name FreeBSD_cnvlist_name
+#define cnvlist_take_binary FreeBSD_cnvlist_take_binary
+#define cnvlist_take_bool FreeBSD_cnvlist_take_bool
+#define cnvlist_take_bool_array FreeBSD_cnvlist_take_bool_array
+#define cnvlist_take_descriptor FreeBSD_cnvlist_take_descriptor
+#define cnvlist_take_descriptor_array FreeBSD_cnvlist_take_descriptor_array
+#define cnvlist_take_number FreeBSD_cnvlist_take_number
+#define cnvlist_take_number_array FreeBSD_cnvlist_take_number_array
+#define cnvlist_take_nvlist FreeBSD_cnvlist_take_nvlist
+#define cnvlist_take_nvlist_array FreeBSD_cnvlist_take_nvlist_array
+#define cnvlist_take_string FreeBSD_cnvlist_take_string
+#define cnvlist_take_string_array FreeBSD_cnvlist_take_string_array
+#define cnvlist_type FreeBSD_cnvlist_type
+#define dnvlist_get_binary FreeBSD_dnvlist_get_binary
+#define dnvlist_get_bool FreeBSD_dnvlist_get_bool
+#define dnvlist_get_descriptor FreeBSD_dnvlist_get_descriptor
+#define dnvlist_get_number FreeBSD_dnvlist_get_number
+#define dnvlist_get_nvlist FreeBSD_dnvlist_get_nvlist
+#define dnvlist_get_string FreeBSD_dnvlist_get_string
+#define dnvlist_take_binary FreeBSD_dnvlist_take_binary
+#define dnvlist_take_bool FreeBSD_dnvlist_take_bool
+#define dnvlist_take_descriptor FreeBSD_dnvlist_take_descriptor
+#define dnvlist_take_number FreeBSD_dnvlist_take_number
+#define dnvlist_take_nvlist FreeBSD_dnvlist_take_nvlist
+#define dnvlist_take_string FreeBSD_dnvlist_take_string
+#define nvlist FreeBSD_nvlist
+#define nvlist_add_binary FreeBSD_nvlist_add_binary
+#define nvlist_add_bool FreeBSD_nvlist_add_bool
+#define nvlist_add_bool_array FreeBSD_nvlist_add_bool_array
+#define nvlist_add_descriptor FreeBSD_nvlist_add_descriptor
+#define nvlist_add_descriptor_array FreeBSD_nvlist_add_descriptor_array
+#define nvlist_add_null FreeBSD_nvlist_add_null
+#define nvlist_add_number FreeBSD_nvlist_add_number
+#define nvlist_add_number_array FreeBSD_nvlist_add_number_array
+#define nvlist_add_nvlist FreeBSD_nvlist_add_nvlist
+#define nvlist_add_nvlist_array FreeBSD_nvlist_add_nvlist_array
+#define nvlist_add_nvpair FreeBSD_nvlist_add_nvpair
+#define nvlist_add_string FreeBSD_nvlist_add_string
+#define nvlist_add_string_array FreeBSD_nvlist_add_string_array
+#define nvlist_add_stringf FreeBSD_nvlist_add_stringf
+#define nvlist_add_stringv FreeBSD_nvlist_add_stringv
+#define nvlist_append_bool_array FreeBSD_nvlist_append_bool_array
+#define nvlist_append_descriptor_array FreeBSD_nvlist_append_descriptor_array
+#define nvlist_append_number_array FreeBSD_nvlist_append_number_array
+#define nvlist_append_nvlist_array FreeBSD_nvlist_append_nvlist_array
+#define nvlist_append_string_array FreeBSD_nvlist_append_string_array
+#define nvlist_clone FreeBSD_nvlist_clone
+#define nvlist_create FreeBSD_nvlist_create
+#define nvlist_descriptors FreeBSD_nvlist_descriptors
+#define nvlist_destroy FreeBSD_nvlist_destroy
+#define nvlist_dump FreeBSD_nvlist_dump
+#define nvlist_empty FreeBSD_nvlist_empty
+#define nvlist_error FreeBSD_nvlist_error
+#define nvlist_exists FreeBSD_nvlist_exists
+#define nvlist_exists_binary FreeBSD_nvlist_exists_binary
+#define nvlist_exists_bool FreeBSD_nvlist_exists_bool
+#define nvlist_exists_bool_array FreeBSD_nvlist_exists_bool_array
+#define nvlist_exists_descriptor FreeBSD_nvlist_exists_descriptor
+#define nvlist_exists_descriptor_array FreeBSD_nvlist_exists_descriptor_array
+#define nvlist_exists_null FreeBSD_nvlist_exists_null
+#define nvlist_exists_number FreeBSD_nvlist_exists_number
+#define nvlist_exists_number_array FreeBSD_nvlist_exists_number_array
+#define nvlist_exists_nvlist FreeBSD_nvlist_exists_nvlist
+#define nvlist_exists_nvlist_array FreeBSD_nvlist_exists_nvlist_array
+#define nvlist_exists_string FreeBSD_nvlist_exists_string
+#define nvlist_exists_string_array FreeBSD_nvlist_exists_string_array
+#define nvlist_exists_type FreeBSD_nvlist_exists_type
+#define nvlist_fdump FreeBSD_nvlist_fdump
+#define nvlist_first_nvpair FreeBSD_nvlist_first_nvpair
+#define nvlist_flags FreeBSD_nvlist_flags
+#define nvlist_free FreeBSD_nvlist_free
+#define nvlist_free_binary FreeBSD_nvlist_free_binary
+#define nvlist_free_binary_array FreeBSD_nvlist_free_binary_array
+#define nvlist_free_bool FreeBSD_nvlist_free_bool
+#define nvlist_free_bool_array FreeBSD_nvlist_free_bool_array
+#define nvlist_free_descriptor FreeBSD_nvlist_free_descriptor
+#define nvlist_free_descriptor_array FreeBSD_nvlist_free_descriptor_array
+#define nvlist_free_null FreeBSD_nvlist_free_null
+#define nvlist_free_number FreeBSD_nvlist_free_number
+#define nvlist_free_number_array FreeBSD_nvlist_free_number_array
+#define nvlist_free_nvlist FreeBSD_nvlist_free_nvlist
+#define nvlist_free_nvlist_array FreeBSD_nvlist_free_nvlist_array
+#define nvlist_free_nvpair FreeBSD_nvlist_free_nvpair
+#define nvlist_free_string FreeBSD_nvlist_free_string
+#define nvlist_free_string_array FreeBSD_nvlist_free_string_array
+#define nvlist_free_type FreeBSD_nvlist_free_type
+#define nvlist_get_array_next FreeBSD_nvlist_get_array_next
+#define nvlist_get_array_next_nvpair FreeBSD_nvlist_get_array_next_nvpair
+#define nvlist_get_binary FreeBSD_nvlist_get_binary
+#define nvlist_get_bool FreeBSD_nvlist_get_bool
+#define nvlist_get_bool_array FreeBSD_nvlist_get_bool_array
+#define nvlist_get_descriptor FreeBSD_nvlist_get_descriptor
+#define nvlist_get_descriptor_array FreeBSD_nvlist_get_descriptor_array
+#define nvlist_get_number FreeBSD_nvlist_get_number
+#define nvlist_get_number_array FreeBSD_nvlist_get_number_array
+#define nvlist_get_nvlist FreeBSD_nvlist_get_nvlist
+#define nvlist_get_nvlist_array FreeBSD_nvlist_get_nvlist_array
+#define nvlist_get_nvpair FreeBSD_nvlist_get_nvpair
+#define nvlist_get_nvpair_parent FreeBSD_nvlist_get_nvpair_parent
+#define nvlist_get_pararr FreeBSD_nvlist_get_pararr
+#define nvlist_get_parent FreeBSD_nvlist_get_parent
+#define nvlist_get_string FreeBSD_nvlist_get_string
+#define nvlist_get_string_array FreeBSD_nvlist_get_string_array
+#define nvlist_in_array FreeBSD_nvlist_in_array
+#define nvlist_move_binary FreeBSD_nvlist_move_binary
+#define nvlist_move_bool_array FreeBSD_nvlist_move_bool_array
+#define nvlist_move_descriptor FreeBSD_nvlist_move_descriptor
+#define nvlist_move_descriptor_array FreeBSD_nvlist_move_descriptor_array
+#define nvlist_move_number_array FreeBSD_nvlist_move_number_array
+#define nvlist_move_nvlist FreeBSD_nvlist_move_nvlist
+#define nvlist_move_nvlist_array FreeBSD_nvlist_move_nvlist_array
+#define nvlist_move_nvpair FreeBSD_nvlist_move_nvpair
+#define nvlist_move_string FreeBSD_nvlist_move_string
+#define nvlist_move_string_array FreeBSD_nvlist_move_string_array
+#define nvlist_ndescriptors FreeBSD_nvlist_ndescriptors
+#define nvlist_next FreeBSD_nvlist_next
+#define nvlist_next_nvpair FreeBSD_nvlist_next_nvpair
+#define nvlist_pack FreeBSD_nvlist_pack
+#define nvlist_prev_nvpair FreeBSD_nvlist_prev_nvpair
+#define nvlist_recv FreeBSD_nvlist_recv
+#define nvlist_remove_nvpair FreeBSD_nvlist_remove_nvpair
+#define nvlist_report_missing FreeBSD_nvlist_report_missing
+#define nvlist_send FreeBSD_nvlist_send
+#define nvlist_set_array_next FreeBSD_nvlist_set_array_next
+#define nvlist_set_error FreeBSD_nvlist_set_error
+#define nvlist_set_flags FreeBSD_nvlist_set_flags
+#define nvlist_set_parent FreeBSD_nvlist_set_parent
+#define nvlist_size FreeBSD_nvlist_size
+#define nvlist_t FreeBSD_nvlist_t
+#define nvlist_take_binary FreeBSD_nvlist_take_binary
+#define nvlist_take_bool FreeBSD_nvlist_take_bool
+#define nvlist_take_bool_array FreeBSD_nvlist_take_bool_array
+#define nvlist_take_descriptor FreeBSD_nvlist_take_descriptor
+#define nvlist_take_descriptor_array FreeBSD_nvlist_take_descriptor_array
+#define nvlist_take_number FreeBSD_nvlist_take_number
+#define nvlist_take_number_array FreeBSD_nvlist_take_number_array
+#define nvlist_take_nvlist FreeBSD_nvlist_take_nvlist
+#define nvlist_take_nvlist_array FreeBSD_nvlist_take_nvlist_array
+#define nvlist_take_nvpair FreeBSD_nvlist_take_nvpair
+#define nvlist_take_string FreeBSD_nvlist_take_string
+#define nvlist_take_string_array FreeBSD_nvlist_take_string_array
+#define nvlist_unpack FreeBSD_nvlist_unpack
+#define nvlist_unpack_header FreeBSD_nvlist_unpack_header
+#define nvlist_xfer FreeBSD_nvlist_xfer
+#define nvpair_append_bool_array FreeBSD_nvpair_append_bool_array
+#define nvpair_append_descriptor_array FreeBSD_nvpair_append_descriptor_array
+#define nvpair_append_number_array FreeBSD_nvpair_append_number_array
+#define nvpair_append_nvlist_array FreeBSD_nvpair_append_nvlist_array
+#define nvpair_append_string_array FreeBSD_nvpair_append_string_array
+#define nvpair_assert FreeBSD_nvpair_assert
+#define nvpair_clone FreeBSD_nvpair_clone
+#define nvpair_create_binary FreeBSD_nvpair_create_binary
+#define nvpair_create_bool FreeBSD_nvpair_create_bool
+#define nvpair_create_bool_array FreeBSD_nvpair_create_bool_array
+#define nvpair_create_descriptor FreeBSD_nvpair_create_descriptor
+#define nvpair_create_descriptor_array FreeBSD_nvpair_create_descriptor_array
+#define nvpair_create_null FreeBSD_nvpair_create_null
+#define nvpair_create_number FreeBSD_nvpair_create_number
+#define nvpair_create_number_array FreeBSD_nvpair_create_number_array
+#define nvpair_create_nvlist FreeBSD_nvpair_create_nvlist
+#define nvpair_create_nvlist_array FreeBSD_nvpair_create_nvlist_array
+#define nvpair_create_string FreeBSD_nvpair_create_string
+#define nvpair_create_string_array FreeBSD_nvpair_create_string_array
+#define nvpair_create_stringf FreeBSD_nvpair_create_stringf
+#define nvpair_create_stringv FreeBSD_nvpair_create_stringv
+#define nvpair_free FreeBSD_nvpair_free
+#define nvpair_free_structure FreeBSD_nvpair_free_structure
+#define nvpair_get_binary FreeBSD_nvpair_get_binary
+#define nvpair_get_bool FreeBSD_nvpair_get_bool
+#define nvpair_get_bool_array FreeBSD_nvpair_get_bool_array
+#define nvpair_get_descriptor FreeBSD_nvpair_get_descriptor
+#define nvpair_get_descriptor_array FreeBSD_nvpair_get_descriptor_array
+#define nvpair_get_number FreeBSD_nvpair_get_number
+#define nvpair_get_number_array FreeBSD_nvpair_get_number_array
+#define nvpair_get_nvlist FreeBSD_nvpair_get_nvlist
+#define nvpair_get_nvlist_array FreeBSD_nvpair_get_nvlist_array
+#define nvpair_get_string FreeBSD_nvpair_get_string
+#define nvpair_get_string_array FreeBSD_nvpair_get_string_array
+#define nvpair_header_size FreeBSD_nvpair_header_size
+#define nvpair_init_datasize FreeBSD_nvpair_init_datasize
+#define nvpair_insert FreeBSD_nvpair_insert
+#define nvpair_move_binary FreeBSD_nvpair_move_binary
+#define nvpair_move_bool_array FreeBSD_nvpair_move_bool_array
+#define nvpair_move_descriptor FreeBSD_nvpair_move_descriptor
+#define nvpair_move_descriptor_array FreeBSD_nvpair_move_descriptor_array
+#define nvpair_move_number_array FreeBSD_nvpair_move_number_array
+#define nvpair_move_nvlist FreeBSD_nvpair_move_nvlist
+#define nvpair_move_nvlist_array FreeBSD_nvpair_move_nvlist_array
+#define nvpair_move_string FreeBSD_nvpair_move_string
+#define nvpair_move_string_array FreeBSD_nvpair_move_string_array
+#define nvpair_name FreeBSD_nvpair_name
+#define nvpair_next FreeBSD_nvpair_next
+#define nvpair_nvlist FreeBSD_nvpair_nvlist
+#define nvpair_pack_binary FreeBSD_nvpair_pack_binary
+#define nvpair_pack_bool FreeBSD_nvpair_pack_bool
+#define nvpair_pack_bool_array FreeBSD_nvpair_pack_bool_array
+#define nvpair_pack_descriptor FreeBSD_nvpair_pack_descriptor
+#define nvpair_pack_descriptor_array FreeBSD_nvpair_pack_descriptor_array
+#define nvpair_pack_header FreeBSD_nvpair_pack_header
+#define nvpair_pack_null FreeBSD_nvpair_pack_null
+#define nvpair_pack_number FreeBSD_nvpair_pack_number
+#define nvpair_pack_number_array FreeBSD_nvpair_pack_number_array
+#define nvpair_pack_nvlist_array_next FreeBSD_nvpair_pack_nvlist_array_next
+#define nvpair_pack_nvlist_up FreeBSD_nvpair_pack_nvlist_up
+#define nvpair_pack_string FreeBSD_nvpair_pack_string
+#define nvpair_pack_string_array FreeBSD_nvpair_pack_string_array
+#define nvpair_prev FreeBSD_nvpair_prev
+#define nvpair_remove FreeBSD_nvpair_remove
+#define nvpair_size FreeBSD_nvpair_size
+#define nvpair_type FreeBSD_nvpair_type
+#define nvpair_type_string FreeBSD_nvpair_type_string
+#define nvpair_unpack FreeBSD_nvpair_unpack
+#define nvpair_unpack_binary FreeBSD_nvpair_unpack_binary
+#define nvpair_unpack_bool FreeBSD_nvpair_unpack_bool
+#define nvpair_unpack_bool_array FreeBSD_nvpair_unpack_bool_array
+#define nvpair_unpack_descriptor FreeBSD_nvpair_unpack_descriptor
+#define nvpair_unpack_descriptor_array FreeBSD_nvpair_unpack_descriptor_array
+#define nvpair_unpack_header FreeBSD_nvpair_unpack_header
+#define nvpair_unpack_null FreeBSD_nvpair_unpack_null
+#define nvpair_unpack_number FreeBSD_nvpair_unpack_number
+#define nvpair_unpack_number_array FreeBSD_nvpair_unpack_number_array
+#define nvpair_unpack_nvlist FreeBSD_nvpair_unpack_nvlist
+#define nvpair_unpack_nvlist_array FreeBSD_nvpair_unpack_nvlist_array
+#define nvpair_unpack_string FreeBSD_nvpair_unpack_string
+#define nvpair_unpack_string_array FreeBSD_nvpair_unpack_string_array
+
+#endif