git: 8a50aa09019a - main - nv: Add <sys/_nv.h> header for nvlist_t declaration

From: John Baldwin <jhb_at_FreeBSD.org>
Date: Mon, 30 Dec 2024 18:52:41 UTC
The branch main has been updated by jhb:

URL: https://cgit.FreeBSD.org/src/commit/?id=8a50aa09019a4230374f48c2f7411342f26b7475

commit 8a50aa09019a4230374f48c2f7411342f26b7475
Author:     John Baldwin <jhb@FreeBSD.org>
AuthorDate: 2024-12-30 18:51:48 +0000
Commit:     John Baldwin <jhb@FreeBSD.org>
CommitDate: 2024-12-30 18:51:48 +0000

    nv: Add <sys/_nv.h> header for nvlist_t declaration
    
    This can be useful for headers that wish to use nvlist_t pointers in a
    structure or function argument without pulling in all of the headers
    from <sys/nv.h>.
    
    Reviewed by:    imp
    Sponsored by:   Chelsio Communications
    Differential Revision:  https://reviews.freebsd.org/D48229
---
 sys/sys/_nv.h        | 45 +++++++++++++++++++++++++++++++++++++++++++++
 sys/sys/cnv.h        |  8 +-------
 sys/sys/dnv.h        |  8 +-------
 sys/sys/nv.h         |  8 +-------
 tools/build/Makefile |  1 +
 5 files changed, 49 insertions(+), 21 deletions(-)

diff --git a/sys/sys/_nv.h b/sys/sys/_nv.h
new file mode 100644
index 000000000000..2baac37f7715
--- /dev/null
+++ b/sys/sys/_nv.h
@@ -0,0 +1,45 @@
+/*-
+ * SPDX-License-Identifier: BSD-2-Clause
+ *
+ * Copyright (c) 2009-2013 The FreeBSD Foundation
+ *
+ * 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.
+ */
+
+#ifndef	__NV_H_
+#define	__NV_H_
+
+#ifndef _KERNEL
+#include <sys/nv_namespace.h>
+#endif
+
+#ifndef	_NVLIST_T_DECLARED
+#define	_NVLIST_T_DECLARED
+struct nvlist;
+
+typedef struct nvlist nvlist_t;
+#endif
+
+#endif	/* !__NV_H_ */
diff --git a/sys/sys/cnv.h b/sys/sys/cnv.h
index 7741a64b9037..095533d08351 100644
--- a/sys/sys/cnv.h
+++ b/sys/sys/cnv.h
@@ -30,6 +30,7 @@
 #define	_CNV_H_
 
 #include <sys/cdefs.h>
+#include <sys/_nv.h>
 
 #ifndef _KERNEL
 #include <stdarg.h>
@@ -39,13 +40,6 @@
 #include <sys/nv_namespace.h>
 #endif
 
-#ifndef	_NVLIST_T_DECLARED
-#define	_NVLIST_T_DECLARED
-struct nvlist;
-
-typedef struct nvlist nvlist_t;
-#endif
-
 __BEGIN_DECLS
 
 /*
diff --git a/sys/sys/dnv.h b/sys/sys/dnv.h
index 93ba9429bfc6..8ef10a184ad6 100644
--- a/sys/sys/dnv.h
+++ b/sys/sys/dnv.h
@@ -32,6 +32,7 @@
 #define	_DNV_H_
 
 #include <sys/cdefs.h>
+#include <sys/_nv.h>
 
 #ifndef _KERNEL
 #include <stdarg.h>
@@ -41,13 +42,6 @@
 #include <sys/nv_namespace.h>
 #endif
 
-#ifndef	_NVLIST_T_DECLARED
-#define	_NVLIST_T_DECLARED
-struct nvlist;
-
-typedef struct nvlist nvlist_t;
-#endif
-
 __BEGIN_DECLS
 
 /*
diff --git a/sys/sys/nv.h b/sys/sys/nv.h
index 6219eac6a827..fe7e6ac10891 100644
--- a/sys/sys/nv.h
+++ b/sys/sys/nv.h
@@ -34,6 +34,7 @@
 #define	_NV_H_
 
 #include <sys/cdefs.h>
+#include <sys/_nv.h>
 
 #ifndef _KERNEL
 #include <stdarg.h>
@@ -43,13 +44,6 @@
 #include <sys/nv_namespace.h>
 #endif
 
-#ifndef	_NVLIST_T_DECLARED
-#define	_NVLIST_T_DECLARED
-struct nvlist;
-
-typedef struct nvlist nvlist_t;
-#endif
-
 #define	NV_NAME_MAX	2048
 
 #define	NV_TYPE_NONE			0
diff --git a/tools/build/Makefile b/tools/build/Makefile
index faf130f3d99c..f4bb383693a8 100644
--- a/tools/build/Makefile
+++ b/tools/build/Makefile
@@ -275,6 +275,7 @@ MSDOSFSINCS+=	${SRCTOP}/sys/fs/msdosfs/msdosfsmount.h
 DISKINCS+=	${SRCTOP}/sys/sys/disk/bsd.h
 
 # Needed to build config (since it uses libnv)
+SYSINCS+=	${SRCTOP}/sys/sys/_nv.h
 SYSINCS+=	${SRCTOP}/sys/sys/nv.h ${SRCTOP}/sys/sys/cnv.h \
 		${SRCTOP}/sys/sys/dnv.h ${SRCTOP}/sys/sys/nv_namespace.h