Module Name: src
Committed By: christos
Date: Sat Sep 8 14:02:15 UTC 2018
Modified Files:
src/sys/external/bsd/libnv/dist: cnv.9 cnv.h cnvlist.c common_impl.h
dnv.9 dnv.h dnvlist.c msgio.c msgio.h nv.9 nv.h nv_impl.h nvlist.c
nvlist_impl.h nvpair.c nvpair_impl.h
Added Files:
src/sys/external/bsd/libnv/dist: nv_compat.h nv_kern_netbsd.c
Log Message:
Add NetBSD stuff.
To generate a diff of this commit:
cvs rdiff -u -r1.1.1.1 -r1.2 src/sys/external/bsd/libnv/dist/cnv.9 \
src/sys/external/bsd/libnv/dist/cnv.h \
src/sys/external/bsd/libnv/dist/cnvlist.c \
src/sys/external/bsd/libnv/dist/common_impl.h \
src/sys/external/bsd/libnv/dist/dnv.9 \
src/sys/external/bsd/libnv/dist/dnv.h \
src/sys/external/bsd/libnv/dist/dnvlist.c \
src/sys/external/bsd/libnv/dist/msgio.c \
src/sys/external/bsd/libnv/dist/msgio.h \
src/sys/external/bsd/libnv/dist/nv.9 src/sys/external/bsd/libnv/dist/nv.h \
src/sys/external/bsd/libnv/dist/nv_impl.h \
src/sys/external/bsd/libnv/dist/nvlist.c \
src/sys/external/bsd/libnv/dist/nvlist_impl.h \
src/sys/external/bsd/libnv/dist/nvpair.c \
src/sys/external/bsd/libnv/dist/nvpair_impl.h
cvs rdiff -u -r0 -r1.1 src/sys/external/bsd/libnv/dist/nv_compat.h \
src/sys/external/bsd/libnv/dist/nv_kern_netbsd.c
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/sys/external/bsd/libnv/dist/cnv.9
diff -u src/sys/external/bsd/libnv/dist/cnv.9:1.1.1.1 src/sys/external/bsd/libnv/dist/cnv.9:1.2
--- src/sys/external/bsd/libnv/dist/cnv.9:1.1.1.1 Sat Sep 8 09:27:48 2018
+++ src/sys/external/bsd/libnv/dist/cnv.9 Sat Sep 8 10:02:15 2018
@@ -1,3 +1,4 @@
+.\" $NetBSD: cnv.9,v 1.2 2018/09/08 14:02:15 christos Exp $
.\"
.\" Copyright (c) 2016 Adam Starak <[email protected]>
.\" All rights reserved.
Index: src/sys/external/bsd/libnv/dist/cnv.h
diff -u src/sys/external/bsd/libnv/dist/cnv.h:1.1.1.1 src/sys/external/bsd/libnv/dist/cnv.h:1.2
--- src/sys/external/bsd/libnv/dist/cnv.h:1.1.1.1 Sat Sep 8 09:27:48 2018
+++ src/sys/external/bsd/libnv/dist/cnv.h Sat Sep 8 10:02:15 2018
@@ -1,3 +1,5 @@
+/* $NetBSD: cnv.h,v 1.2 2018/09/08 14:02:15 christos Exp $ */
+
/*-
* SPDX-License-Identifier: BSD-2-Clause-FreeBSD
*
@@ -33,7 +35,7 @@
#include <sys/cdefs.h>
-#ifndef _KERNEL
+#if !defined(_KERNEL) && !defined(_STANDALONE)
#include <stdarg.h>
#include <stdbool.h>
#include <stdint.h>
@@ -70,7 +72,7 @@ const bool *cnvlist_get_bool_array(cons
const uint64_t *cnvlist_get_number_array(const void *cookie, size_t *nitemsp);
const char * const *cnvlist_get_string_array(const void *cookie, size_t *nitemsp);
const nvlist_t * const *cnvlist_get_nvlist_array(const void *cookie, size_t *nitemsp);
-#ifndef _KERNEL
+#if !defined(_KERNEL) && !defined(_STANDALONE)
int cnvlist_get_descriptor(const void *cookie);
const int *cnvlist_get_descriptor_array(const void *cookie, size_t *nitemsp);
#endif
@@ -91,7 +93,7 @@ bool *cnvlist_take_bool_array(void *c
uint64_t *cnvlist_take_number_array(void *cookie, size_t *nitemsp);
char **cnvlist_take_string_array(void *cookie, size_t *nitemsp);
nvlist_t **cnvlist_take_nvlist_array(void *cookie, size_t *nitemsp);
-#ifndef _KERNEL
+#if !defined(_KERNEL) && !defined(_STANDALONE)
int cnvlist_take_descriptor(void *cookie);
int *cnvlist_take_descriptor_array(void *cookie, size_t *nitemsp);
#endif
@@ -110,7 +112,7 @@ void cnvlist_free_bool_array(void *cooki
void cnvlist_free_number_array(void *cookie);
void cnvlist_free_string_array(void *cookie);
void cnvlist_free_nvlist_array(void *cookie);
-#ifndef _KERNEL
+#if !defined(_KERNEL) && !defined(_STANDALONE)
void cnvlist_free_descriptor(void *cookie);
void cnvlist_free_descriptor_array(void *cookie);
#endif
Index: src/sys/external/bsd/libnv/dist/cnvlist.c
diff -u src/sys/external/bsd/libnv/dist/cnvlist.c:1.1.1.1 src/sys/external/bsd/libnv/dist/cnvlist.c:1.2
--- src/sys/external/bsd/libnv/dist/cnvlist.c:1.1.1.1 Sat Sep 8 09:27:47 2018
+++ src/sys/external/bsd/libnv/dist/cnvlist.c Sat Sep 8 10:02:15 2018
@@ -1,3 +1,5 @@
+/* $NetBSD: cnvlist.c,v 1.2 2018/09/08 14:02:15 christos Exp $ */
+
/*-
* SPDX-License-Identifier: BSD-2-Clause-FreeBSD
*
@@ -29,9 +31,13 @@
*/
#include <sys/cdefs.h>
+#ifdef __FreeBSD__
__FBSDID("$FreeBSD: head/sys/contrib/libnv/cnvlist.c 335343 2018-06-18 21:26:58Z oshogbo $");
+#else
+__RCSID("$NetBSD: cnvlist.c,v 1.2 2018/09/08 14:02:15 christos Exp $");
+#endif
-#ifdef _KERNEL
+#if defined(_KERNEL) || defined(_STANDALONE)
#include <sys/types.h>
#include <sys/param.h>
@@ -39,7 +45,9 @@ __FBSDID("$FreeBSD: head/sys/contrib/lib
#include <sys/systm.h>
#include <sys/malloc.h>
+#ifdef __FreeBSD__
#include <machine/stdarg.h>
+#endif
#else
#include <stdarg.h>
@@ -48,8 +56,13 @@ __FBSDID("$FreeBSD: head/sys/contrib/lib
#include <stdlib.h>
#endif
-#include <sys/cnv.h>
+#ifdef __FreeBSD__
#include <sys/nv.h>
+#include <sys/cnv.h>
+#else
+#include "nv.h"
+#include "cnv.h"
+#endif
#include "nv_impl.h"
#include "nvlist_impl.h"
@@ -85,7 +98,7 @@ CNVLIST_GET(bool, bool, BOOL)
CNVLIST_GET(uint64_t, number, NUMBER)
CNVLIST_GET(const char *, string, STRING)
CNVLIST_GET(const nvlist_t *, nvlist, NVLIST)
-#ifndef _KERNEL
+#if !defined(_KERNEL) && !defined(_STANDALONE)
CNVLIST_GET(int, descriptor, DESCRIPTOR)
#endif
@@ -107,7 +120,7 @@ CNVLIST_GET_ARRAY(const bool *, bool_arr
CNVLIST_GET_ARRAY(const uint64_t *, number_array, NUMBER_ARRAY)
CNVLIST_GET_ARRAY(const char * const *, string_array, STRING_ARRAY)
CNVLIST_GET_ARRAY(const nvlist_t * const *, nvlist_array, NVLIST_ARRAY)
-#ifndef _KERNEL
+#if !defined(_KERNEL) && !defined(_STANDALONE)
CNVLIST_GET_ARRAY(const int *, descriptor_array, DESCRIPTOR_ARRAY)
#endif
@@ -144,7 +157,7 @@ CNVLIST_TAKE(bool, bool, BOOL)
CNVLIST_TAKE(uint64_t, number, NUMBER)
CNVLIST_TAKE(char *, string, STRING)
CNVLIST_TAKE(nvlist_t *, nvlist, NVLIST)
-#ifndef _KERNEL
+#if !defined(_KERNEL) && !defined(_STANDALONE)
CNVLIST_TAKE(int, descriptor, DESCRIPTOR)
#endif
@@ -172,7 +185,7 @@ CNVLIST_TAKE_ARRAY(bool *, bool_array, B
CNVLIST_TAKE_ARRAY(uint64_t *, number_array, NUMBER_ARRAY)
CNVLIST_TAKE_ARRAY(char **, string_array, STRING_ARRAY)
CNVLIST_TAKE_ARRAY(nvlist_t **, nvlist_array, NVLIST_ARRAY)
-#ifndef _KERNEL
+#if !defined(_KERNEL) && !defined(_STANDALONE)
CNVLIST_TAKE_ARRAY(int *, descriptor_array, DESCRIPTOR_ARRAY);
#endif
@@ -211,7 +224,7 @@ CNVLIST_FREE(bool_array)
CNVLIST_FREE(number_array)
CNVLIST_FREE(string_array)
CNVLIST_FREE(nvlist_array)
-#ifndef _KERNEL
+#if !defined(_KERNEL) && !defined(_STANDALONE)
CNVLIST_FREE(descriptor)
CNVLIST_FREE(descriptor_array)
#endif
Index: src/sys/external/bsd/libnv/dist/common_impl.h
diff -u src/sys/external/bsd/libnv/dist/common_impl.h:1.1.1.1 src/sys/external/bsd/libnv/dist/common_impl.h:1.2
--- src/sys/external/bsd/libnv/dist/common_impl.h:1.1.1.1 Sat Sep 8 09:27:48 2018
+++ src/sys/external/bsd/libnv/dist/common_impl.h Sat Sep 8 10:02:15 2018
@@ -1,3 +1,5 @@
+/* $NetBSD: common_impl.h,v 1.2 2018/09/08 14:02:15 christos Exp $ */
+
/*-
* SPDX-License-Identifier: BSD-2-Clause-FreeBSD
*
Index: src/sys/external/bsd/libnv/dist/dnv.9
diff -u src/sys/external/bsd/libnv/dist/dnv.9:1.1.1.1 src/sys/external/bsd/libnv/dist/dnv.9:1.2
--- src/sys/external/bsd/libnv/dist/dnv.9:1.1.1.1 Sat Sep 8 09:27:48 2018
+++ src/sys/external/bsd/libnv/dist/dnv.9 Sat Sep 8 10:02:15 2018
@@ -1,3 +1,4 @@
+.\" $NetBSD: dnv.9,v 1.2 2018/09/08 14:02:15 christos Exp $
.\"
.\" Copyright (c) 2016 Adam Starak <[email protected]>
.\" All rights reserved.
Index: src/sys/external/bsd/libnv/dist/dnv.h
diff -u src/sys/external/bsd/libnv/dist/dnv.h:1.1.1.1 src/sys/external/bsd/libnv/dist/dnv.h:1.2
--- src/sys/external/bsd/libnv/dist/dnv.h:1.1.1.1 Sat Sep 8 09:27:48 2018
+++ src/sys/external/bsd/libnv/dist/dnv.h Sat Sep 8 10:02:15 2018
@@ -1,3 +1,5 @@
+/* $NetBSD: dnv.h,v 1.2 2018/09/08 14:02:15 christos Exp $ */
+
/*-
* SPDX-License-Identifier: BSD-2-Clause-FreeBSD
*
@@ -36,7 +38,7 @@
#include <sys/cdefs.h>
-#ifndef _KERNEL
+#if !defined(_KERNEL) && !defined(_STANDALONE)
#include <stdarg.h>
#include <stdbool.h>
#include <stddef.h>
Index: src/sys/external/bsd/libnv/dist/dnvlist.c
diff -u src/sys/external/bsd/libnv/dist/dnvlist.c:1.1.1.1 src/sys/external/bsd/libnv/dist/dnvlist.c:1.2
--- src/sys/external/bsd/libnv/dist/dnvlist.c:1.1.1.1 Sat Sep 8 09:27:47 2018
+++ src/sys/external/bsd/libnv/dist/dnvlist.c Sat Sep 8 10:02:15 2018
@@ -1,3 +1,5 @@
+/* $NetBSD: dnvlist.c,v 1.2 2018/09/08 14:02:15 christos Exp $ */
+
/*-
* SPDX-License-Identifier: BSD-2-Clause-FreeBSD
*
@@ -30,9 +32,13 @@
*/
#include <sys/cdefs.h>
+#ifdef __FreeBSD__
__FBSDID("$FreeBSD: head/sys/contrib/libnv/dnvlist.c 328474 2018-01-27 12:58:21Z oshogbo $");
+#else
+__RCSID("$NetBSD: dnvlist.c,v 1.2 2018/09/08 14:02:15 christos Exp $");
+#endif
-#ifdef _KERNEL
+#if defined(_KERNEL) || defined(_STANDALONE)
#include <sys/types.h>
#include <sys/param.h>
@@ -40,7 +46,9 @@ __FBSDID("$FreeBSD: head/sys/contrib/lib
#include <sys/systm.h>
#include <sys/malloc.h>
+#ifndef __FreeBSD__
#include <machine/stdarg.h>
+#endif
#else
#include <stdarg.h>
@@ -49,8 +57,13 @@ __FBSDID("$FreeBSD: head/sys/contrib/lib
#include <stdlib.h>
#endif
+#ifndef __FreeBSD__
#include <sys/dnv.h>
#include <sys/nv.h>
+#else
+#include "dnv.h"
+#include "nv.h"
+#endif
#include "nv_impl.h"
@@ -69,7 +82,7 @@ DNVLIST_GET(bool, bool)
DNVLIST_GET(uint64_t, number)
DNVLIST_GET(const char *, string)
DNVLIST_GET(const nvlist_t *, nvlist)
-#ifndef _KERNEL
+#if !defined(_KERNEL) && !defined(_STANDALONE)
DNVLIST_GET(int, descriptor)
#endif
@@ -106,7 +119,7 @@ DNVLIST_TAKE(bool, bool)
DNVLIST_TAKE(uint64_t, number)
DNVLIST_TAKE(char *, string)
DNVLIST_TAKE(nvlist_t *, nvlist)
-#ifndef _KERNEL
+#if !defined(_KERNEL) && !defined(_STANDALONE)
DNVLIST_TAKE(int, descriptor)
#endif
Index: src/sys/external/bsd/libnv/dist/msgio.c
diff -u src/sys/external/bsd/libnv/dist/msgio.c:1.1.1.1 src/sys/external/bsd/libnv/dist/msgio.c:1.2
--- src/sys/external/bsd/libnv/dist/msgio.c:1.1.1.1 Sat Sep 8 09:27:48 2018
+++ src/sys/external/bsd/libnv/dist/msgio.c Sat Sep 8 10:02:15 2018
@@ -1,3 +1,5 @@
+/* $NetBSD: msgio.c,v 1.2 2018/09/08 14:02:15 christos Exp $ */
+
/*-
* SPDX-License-Identifier: BSD-2-Clause-FreeBSD
*
@@ -31,10 +33,15 @@
*/
#include <sys/cdefs.h>
+#ifdef __FreeBSD__
__FBSDID("$FreeBSD: head/lib/libnv/msgio.c 326219 2017-11-26 02:00:33Z pfg $");
+#else
+__RCSID("$NetBSD: msgio.c,v 1.2 2018/09/08 14:02:15 christos Exp $");
+#endif
#include <sys/param.h>
#include <sys/socket.h>
+#include <sys/select.h>
#include <errno.h>
#include <fcntl.h>
@@ -58,7 +65,12 @@ __FBSDID("$FreeBSD: head/lib/libnv/msgio
#define PJDLOG_ABORT(...) abort()
#endif
+#ifdef __linux__
+/* Linux: arbitrary size, but must be lower than SCM_MAX_FD. */
+#define PKG_MAX_SIZE ((64U - 1) * CMSG_SPACE(sizeof(int)))
+#else
#define PKG_MAX_SIZE (MCLBYTES / CMSG_SPACE(sizeof(int)) - 1)
+#endif
static int
msghdr_add_fd(struct cmsghdr *cmsg, int fd)
@@ -162,6 +174,7 @@ msg_send(int sock, const struct msghdr *
return (0);
}
+#ifdef __FreeBSD__
int
cred_send(int sock)
{
@@ -237,6 +250,7 @@ cred_recv(int sock, struct cmsgcred *cre
return (0);
}
+#endif
static int
fd_package_send(int sock, const int *fds, size_t nfds)
Index: src/sys/external/bsd/libnv/dist/msgio.h
diff -u src/sys/external/bsd/libnv/dist/msgio.h:1.1.1.1 src/sys/external/bsd/libnv/dist/msgio.h:1.2
--- src/sys/external/bsd/libnv/dist/msgio.h:1.1.1.1 Sat Sep 8 09:27:48 2018
+++ src/sys/external/bsd/libnv/dist/msgio.h Sat Sep 8 10:02:15 2018
@@ -1,3 +1,5 @@
+/* $NetBSD: msgio.h,v 1.2 2018/09/08 14:02:15 christos Exp $ */
+
/*-
* SPDX-License-Identifier: BSD-2-Clause-FreeBSD
*
Index: src/sys/external/bsd/libnv/dist/nv.9
diff -u src/sys/external/bsd/libnv/dist/nv.9:1.1.1.1 src/sys/external/bsd/libnv/dist/nv.9:1.2
--- src/sys/external/bsd/libnv/dist/nv.9:1.1.1.1 Sat Sep 8 09:27:48 2018
+++ src/sys/external/bsd/libnv/dist/nv.9 Sat Sep 8 10:02:15 2018
@@ -1,3 +1,4 @@
+.\" $NetBSD: nv.9,v 1.2 2018/09/08 14:02:15 christos Exp $
.\"
.\" Copyright (c) 2013 The FreeBSD Foundation
.\" Copyright (c) 2013-2015 Mariusz Zaborski <[email protected]>
Index: src/sys/external/bsd/libnv/dist/nv.h
diff -u src/sys/external/bsd/libnv/dist/nv.h:1.1.1.1 src/sys/external/bsd/libnv/dist/nv.h:1.2
--- src/sys/external/bsd/libnv/dist/nv.h:1.1.1.1 Sat Sep 8 09:27:48 2018
+++ src/sys/external/bsd/libnv/dist/nv.h Sat Sep 8 10:02:15 2018
@@ -1,3 +1,5 @@
+/* $NetBSD: nv.h,v 1.2 2018/09/08 14:02:15 christos Exp $ */
+
/*-
* SPDX-License-Identifier: BSD-2-Clause
*
@@ -37,11 +39,13 @@
#include <sys/cdefs.h>
-#ifndef _KERNEL
+#if !defined(_KERNEL) && !defined(_STANDALONE)
#include <stdarg.h>
#include <stdbool.h>
#include <stdint.h>
#include <stdio.h>
+#else
+#include <sys/types.h>
#endif
#ifndef _NVLIST_T_DECLARED
@@ -92,7 +96,7 @@ void nvlist_set_error(nvlist_t *nvl, i
nvlist_t *nvlist_clone(const nvlist_t *nvl);
-#ifndef _KERNEL
+#if !defined(_KERNEL) && !defined(_STANDALONE)
void nvlist_dump(const nvlist_t *nvl, int fd);
void nvlist_fdump(const nvlist_t *nvl, FILE *fp);
#endif
@@ -132,7 +136,7 @@ bool nvlist_exists_bool_array(const nvli
bool nvlist_exists_number_array(const nvlist_t *nvl, const char *name);
bool nvlist_exists_string_array(const nvlist_t *nvl, const char *name);
bool nvlist_exists_nvlist_array(const nvlist_t *nvl, const char *name);
-#ifndef _KERNEL
+#if !defined(_KERNEL) && !defined(_STANDALONE)
bool nvlist_exists_descriptor(const nvlist_t *nvl, const char *name);
bool nvlist_exists_descriptor_array(const nvlist_t *nvl, const char *name);
#endif
@@ -157,7 +161,7 @@ void nvlist_add_bool_array(nvlist_t *nvl
void nvlist_add_number_array(nvlist_t *nvl, const char *name, const uint64_t *value, size_t nitems);
void nvlist_add_string_array(nvlist_t *nvl, const char *name, const char * const *value, size_t nitems);
void nvlist_add_nvlist_array(nvlist_t *nvl, const char *name, const nvlist_t * const *value, size_t nitems);
-#ifndef _KERNEL
+#if !defined(_KERNEL) && !defined(_STANDALONE)
void nvlist_add_descriptor(nvlist_t *nvl, const char *name, int value);
void nvlist_add_descriptor_array(nvlist_t *nvl, const char *name, const int *value, size_t nitems);
#endif
@@ -166,7 +170,7 @@ void nvlist_append_bool_array(nvlist_t *
void nvlist_append_number_array(nvlist_t *nvl, const char *name, const uint64_t value);
void nvlist_append_string_array(nvlist_t *nvl, const char *name, const char * const value);
void nvlist_append_nvlist_array(nvlist_t *nvl, const char *name, const nvlist_t * const value);
-#ifndef _KERNEL
+#if !defined(_KERNEL) && !defined(_STANDALONE)
void nvlist_append_descriptor_array(nvlist_t *nvl, const char *name, int value);
#endif
@@ -182,7 +186,7 @@ void nvlist_move_bool_array(nvlist_t *nv
void nvlist_move_string_array(nvlist_t *nvl, const char *name, char **value, size_t nitems);
void nvlist_move_nvlist_array(nvlist_t *nvl, const char *name, nvlist_t **value, size_t nitems);
void nvlist_move_number_array(nvlist_t *nvl, const char *name, uint64_t *value, size_t nitems);
-#ifndef _KERNEL
+#if !defined(_KERNEL) && !defined(_STANDALONE)
void nvlist_move_descriptor(nvlist_t *nvl, const char *name, int value);
void nvlist_move_descriptor_array(nvlist_t *nvl, const char *name, int *value, size_t nitems);
#endif
@@ -202,7 +206,7 @@ const bool *nvlist_get_bool_array(const
const uint64_t *nvlist_get_number_array(const nvlist_t *nvl, const char *name, size_t *nitemsp);
const char * const *nvlist_get_string_array(const nvlist_t *nvl, const char *name, size_t *nitemsp);
const nvlist_t * const *nvlist_get_nvlist_array(const nvlist_t *nvl, const char *name, size_t *nitemsp);
-#ifndef _KERNEL
+#if !defined(_KERNEL) && !defined(_STANDALONE)
int nvlist_get_descriptor(const nvlist_t *nvl, const char *name);
const int *nvlist_get_descriptor_array(const nvlist_t *nvl, const char *name, size_t *nitemsp);
#endif
@@ -222,7 +226,7 @@ bool *nvlist_take_bool_array(nvlist_t
uint64_t *nvlist_take_number_array(nvlist_t *nvl, const char *name, size_t *nitemsp);
char **nvlist_take_string_array(nvlist_t *nvl, const char *name, size_t *nitemsp);
nvlist_t **nvlist_take_nvlist_array(nvlist_t *nvl, const char *name, size_t *nitemsp);
-#ifndef _KERNEL
+#if !defined(_KERNEL) && !defined(_STANDALONE)
int nvlist_take_descriptor(nvlist_t *nvl, const char *name);
int *nvlist_take_descriptor_array(nvlist_t *nvl, const char *name, size_t *nitemsp);
#endif
@@ -246,11 +250,33 @@ void nvlist_free_number_array(nvlist_t *
void nvlist_free_string_array(nvlist_t *nvl, const char *name);
void nvlist_free_nvlist_array(nvlist_t *nvl, const char *name);
void nvlist_free_binary_array(nvlist_t *nvl, const char *name);
-#ifndef _KERNEL
+#if !defined(_KERNEL) && !defined(_STANDALONE)
void nvlist_free_descriptor(nvlist_t *nvl, const char *name);
void nvlist_free_descriptor_array(nvlist_t *nvl, const char *name);
#endif
+#ifdef __NetBSD__
+/*
+ * ioctl kernel-userspace interface.
+ */
+
+typedef struct {
+ void * buf;
+ size_t len;
+ int flags;
+} nvlist_ref_t;
+
+#if defined(_KERNEL)
+int nvlist_copyin(const nvlist_ref_t *nref, nvlist_t **nvlp, size_t lim);
+int nvlist_copyout(nvlist_ref_t *nref, const nvlist_t *nvl);
+#else
+int nvlist_xfer_ioctl(int fd, unsigned long cmd, const nvlist_t *nvl,
+ nvlist_t **nvlp);
+int nvlist_send_ioctl(int fd, unsigned long cmd, const nvlist_t *nvl);
+int nvlist_recv_ioctl(int fd, unsigned long cmd, nvlist_t **nvlp);
+#endif
+#endif
+
__END_DECLS
#endif /* !_NV_H_ */
Index: src/sys/external/bsd/libnv/dist/nv_impl.h
diff -u src/sys/external/bsd/libnv/dist/nv_impl.h:1.1.1.1 src/sys/external/bsd/libnv/dist/nv_impl.h:1.2
--- src/sys/external/bsd/libnv/dist/nv_impl.h:1.1.1.1 Sat Sep 8 09:27:47 2018
+++ src/sys/external/bsd/libnv/dist/nv_impl.h Sat Sep 8 10:02:15 2018
@@ -1,3 +1,5 @@
+/* $NetBSD: nv_impl.h,v 1.2 2018/09/08 14:02:15 christos Exp $ */
+
/*-
* SPDX-License-Identifier: BSD-2-Clause-FreeBSD
*
@@ -35,6 +37,8 @@
#ifndef _NV_IMPL_H_
#define _NV_IMPL_H_
+#include "nv_compat.h"
+
#ifndef _NVPAIR_T_DECLARED
#define _NVPAIR_T_DECLARED
struct nvpair;
@@ -51,22 +55,31 @@ typedef struct nvpair nvpair_t;
#define NV_FLAG_BIG_ENDIAN 0x080
#define NV_FLAG_IN_ARRAY 0x100
-#ifdef _KERNEL
+#if defined(_KERNEL)
#define nv_malloc(size) malloc((size), M_NVLIST, M_WAITOK)
+#ifdef __FreeBSD__
#define nv_calloc(n, size) mallocarray((n), (size), M_NVLIST, \
M_WAITOK | M_ZERO)
+#else
+extern void *nv_calloc(size_t, size_t);
+#endif
#define nv_realloc(buf, size) realloc((buf), (size), M_NVLIST, \
M_WAITOK)
#define nv_free(buf) free((buf), M_NVLIST)
+#ifdef __FreeBSD__
#define nv_strdup(buf) strdup((buf), M_NVLIST)
+#else
+extern char *nv_strdup(const char *);
+#endif
+#define nv_vasprintf(ptr, ...) vasprintf(ptr, M_NVLIST, __VA_ARGS__)
+#endif
+#elif defined(_STANDALONE)
+extern void *nv_malloc(size_t);
+extern void *nv_calloc(size_t, size_t);
+extern void *nv_realloc(void *, size_t);
+extern void nv_free(void *);
+extern char *nv_strdup(const char *);
#define nv_vasprintf(ptr, ...) vasprintf(ptr, M_NVLIST, __VA_ARGS__)
-
-#define ERRNO_SET(var) do { } while (0)
-#define ERRNO_SAVE() do { do { } while(0)
-#define ERRNO_RESTORE() } while (0)
-
-#define ERRNO_OR_DEFAULT(default) (default)
-
#else
#define nv_malloc(size) malloc((size))
@@ -89,6 +102,14 @@ typedef struct nvpair nvpair_t;
#endif
+#ifndef ERRNO_SET
+#define ERRNO_SET(var) do { } while (/*CONSTCOND*/0)
+#define ERRNO_SAVE() do { do { } while(/*CONSTCOND*/0)
+#define ERRNO_RESTORE() } while (/*CONSTCOND*/0)
+
+#define ERRNO_OR_DEFAULT(default) (default)
+#endif
+
int *nvlist_descriptors(const nvlist_t *nvl, size_t *nitemsp);
size_t nvlist_ndescriptors(const nvlist_t *nvl);
void nvlist_set_flags(nvlist_t *nvl, int flags);
Index: src/sys/external/bsd/libnv/dist/nvlist.c
diff -u src/sys/external/bsd/libnv/dist/nvlist.c:1.1.1.1 src/sys/external/bsd/libnv/dist/nvlist.c:1.2
--- src/sys/external/bsd/libnv/dist/nvlist.c:1.1.1.1 Sat Sep 8 09:27:48 2018
+++ src/sys/external/bsd/libnv/dist/nvlist.c Sat Sep 8 10:02:15 2018
@@ -1,3 +1,5 @@
+/* $NetBSD: nvlist.c,v 1.2 2018/09/08 14:02:15 christos Exp $ */
+
/*-
* SPDX-License-Identifier: BSD-2-Clause-FreeBSD
*
@@ -31,13 +33,17 @@
*/
#include <sys/cdefs.h>
+#ifdef __FreeBSD__
__FBSDID("$FreeBSD: head/sys/contrib/libnv/nvlist.c 335347 2018-06-18 22:57:32Z oshogbo $");
+#else
+__RCSID("$NetBSD: nvlist.c,v 1.2 2018/09/08 14:02:15 christos Exp $");
+#endif
#include <sys/param.h>
#include <sys/endian.h>
#include <sys/queue.h>
-#ifdef _KERNEL
+#if defined(_KERNEL) || defined(_STANDALONE)
#include <sys/errno.h>
#include <sys/kernel.h>
@@ -45,7 +51,9 @@ __FBSDID("$FreeBSD: head/sys/contrib/lib
#include <sys/malloc.h>
#include <sys/systm.h>
+#ifdef __FreeBSD__
#include <machine/stdarg.h>
+#endif
#else
#include <sys/socket.h>
@@ -66,18 +74,27 @@ __FBSDID("$FreeBSD: head/sys/contrib/lib
#include <pjdlog.h>
#endif
+#ifdef __FreeBSD__
#include <sys/nv.h>
+#else
+#incude "nv.h"
+#endif
#include "nv_impl.h"
#include "nvlist_impl.h"
#include "nvpair_impl.h"
#ifndef HAVE_PJDLOG
-#ifdef _KERNEL
+#if defined(_KERNEL) || defined(_STANDALONE)
+#ifdef __FreeBSD__
#define PJDLOG_ASSERT(...) MPASS(__VA_ARGS__)
+#else
+#define PJDLOG_ASSERT(...) KASSERT(__VA_ARGS__)
+#endif
#define PJDLOG_RASSERT(expr, ...) KASSERT(expr, (__VA_ARGS__))
#define PJDLOG_ABORT(...) panic(__VA_ARGS__)
#else
+#ifndef __lint__
#include <assert.h>
#define PJDLOG_ASSERT(...) assert(__VA_ARGS__)
#define PJDLOG_RASSERT(expr, ...) assert(expr)
@@ -86,7 +103,12 @@ __FBSDID("$FreeBSD: head/sys/contrib/lib
fprintf(stderr, __VA_ARGS__); \
fprintf(stderr, "\n"); \
abort(); \
-} while (0)
+} while (/*CONSTCOND*/0)
+#else
+#define PJDLOG_ASSERT(...)
+#define PJDLOG_RASSERT(expr, ...)
+#define PJDLOG_ABORT(...)
+#endif
#endif
#endif
@@ -107,7 +129,7 @@ struct nvlist {
#define NVLIST_ASSERT(nvl) do { \
PJDLOG_ASSERT((nvl) != NULL); \
PJDLOG_ASSERT((nvl)->nvl_magic == NVLIST_MAGIC); \
-} while (0)
+} while (/*CONSTCOND*/0)
#ifdef _KERNEL
MALLOC_DEFINE(M_NVLIST, "nvlist", "kernel nvlist");
@@ -410,7 +432,7 @@ nvlist_clone(const nvlist_t *nvl)
return (newnvl);
}
-#ifndef _KERNEL
+#if !defined(_KERNEL) && !defined(_STANDALONE)
static bool
nvlist_dump_error_check(const nvlist_t *nvl, int fd, int level)
{
@@ -705,7 +727,7 @@ out:
return (size);
}
-#ifndef _KERNEL
+#if !defined(_KERNEL) && !defined(_STANDALONE)
static int *
nvlist_xdescriptors(const nvlist_t *nvl, int *descs)
{
@@ -764,7 +786,7 @@ nvlist_xdescriptors(const nvlist_t *nvl,
}
#endif
-#ifndef _KERNEL
+#if !defined(_KERNEL) && !defined(_STANDALONE)
int *
nvlist_descriptors(const nvlist_t *nvl, size_t *nitemsp)
{
@@ -787,7 +809,7 @@ nvlist_descriptors(const nvlist_t *nvl,
size_t
nvlist_ndescriptors(const nvlist_t *nvl)
{
-#ifndef _KERNEL
+#if !defined(_KERNEL) && !defined(_STANDALONE)
void *cookie;
nvpair_t *nvp;
size_t ndescs;
@@ -924,7 +946,7 @@ nvlist_xpack(const nvlist_t *nvl, int64_
}
ptr = nvpair_pack_nvlist_up(ptr, &left);
break;
-#ifndef _KERNEL
+#if !defined(_KERNEL) && !defined(_STANDALONE)
case NV_TYPE_DESCRIPTOR:
ptr = nvpair_pack_descriptor(nvp, ptr, fdidxp, &left);
break;
@@ -1158,7 +1180,7 @@ nvlist_xunpack(const void *buf, size_t s
goto fail;
nvlist_set_parent(tmpnvl, nvp);
break;
-#ifndef _KERNEL
+#if !defined(_KERNEL) && !defined(_STANDALONE)
case NV_TYPE_DESCRIPTOR:
ptr = nvpair_unpack_descriptor(isbe, nvp, ptr, &left,
fds, nfds);
@@ -1242,7 +1264,7 @@ nvlist_unpack(const void *buf, size_t si
return (nvlist_xunpack(buf, size, NULL, 0, flags));
}
-#ifndef _KERNEL
+#if !defined(_KERNEL) && !defined(_STANDALONE) && defined(WITH_MSGIO)
int
nvlist_send(int sock, const nvlist_t *nvl)
{
@@ -1440,7 +1462,7 @@ NVLIST_EXISTS(bool_array, BOOL_ARRAY)
NVLIST_EXISTS(number_array, NUMBER_ARRAY)
NVLIST_EXISTS(string_array, STRING_ARRAY)
NVLIST_EXISTS(nvlist_array, NVLIST_ARRAY)
-#ifndef _KERNEL
+#if !defined(_KERNEL) && !defined(_STANDALONE)
NVLIST_EXISTS(descriptor, DESCRIPTOR)
NVLIST_EXISTS(descriptor_array, DESCRIPTOR_ARRAY)
#endif
@@ -1476,6 +1498,7 @@ nvlist_add_nvpair(nvlist_t *nvl, const n
nvpair_insert(&nvl->nvl_head, newnvp, nvl);
}
+#if !defined(_KERNEL) && !defined(_STANDALONE) && !defined(__NetBSD__)
void
nvlist_add_stringf(nvlist_t *nvl, const char *name, const char *valuefmt, ...)
{
@@ -1485,6 +1508,7 @@ nvlist_add_stringf(nvlist_t *nvl, const
nvlist_add_stringv(nvl, name, valuefmt, valueap);
va_end(valueap);
}
+#endif
void
nvlist_add_stringv(nvlist_t *nvl, const char *name, const char *valuefmt,
@@ -1570,7 +1594,7 @@ NVLIST_ADD(bool, bool)
NVLIST_ADD(uint64_t, number)
NVLIST_ADD(const char *, string)
NVLIST_ADD(const nvlist_t *, nvlist)
-#ifndef _KERNEL
+#if !defined(_KERNEL) && !defined(_STANDALONE)
NVLIST_ADD(int, descriptor);
#endif
@@ -1601,7 +1625,7 @@ NVLIST_ADD_ARRAY(const bool *, bool)
NVLIST_ADD_ARRAY(const uint64_t *, number)
NVLIST_ADD_ARRAY(const char * const *, string)
NVLIST_ADD_ARRAY(const nvlist_t * const *, nvlist)
-#ifndef _KERNEL
+#if !defined(_KERNEL) && !defined(_STANDALONE)
NVLIST_ADD_ARRAY(const int *, descriptor)
#endif
@@ -1632,7 +1656,7 @@ NVLIST_APPEND_ARRAY(const bool, bool, BO
NVLIST_APPEND_ARRAY(const uint64_t, number, NUMBER)
NVLIST_APPEND_ARRAY(const char *, string, STRING)
NVLIST_APPEND_ARRAY(const nvlist_t *, nvlist, NVLIST)
-#ifndef _KERNEL
+#if !defined(_KERNEL) && !defined(_STANDALONE)
NVLIST_APPEND_ARRAY(const int, descriptor, DESCRIPTOR)
#endif
@@ -1704,7 +1728,7 @@ nvlist_move_nvlist(nvlist_t *nvl, const
}
}
-#ifndef _KERNEL
+#if !defined(_KERNEL) && !defined(_STANDALONE)
void
nvlist_move_descriptor(nvlist_t *nvl, const char *name, int value)
{
@@ -1842,7 +1866,7 @@ nvlist_move_number_array(nvlist_t *nvl,
}
}
-#ifndef _KERNEL
+#if !defined(_KERNEL) && !defined(_STANDALONE)
void
nvlist_move_descriptor_array(nvlist_t *nvl, const char *name, int *value,
size_t nitems)
@@ -1894,7 +1918,7 @@ NVLIST_GET(bool, bool, BOOL)
NVLIST_GET(uint64_t, number, NUMBER)
NVLIST_GET(const char *, string, STRING)
NVLIST_GET(const nvlist_t *, nvlist, NVLIST)
-#ifndef _KERNEL
+#if !defined(_KERNEL) && !defined(_STANDALONE)
NVLIST_GET(int, descriptor, DESCRIPTOR)
#endif
@@ -1929,7 +1953,7 @@ NVLIST_GET_ARRAY(const bool *, bool, BOO
NVLIST_GET_ARRAY(const uint64_t *, number, NUMBER)
NVLIST_GET_ARRAY(const char * const *, string, STRING)
NVLIST_GET_ARRAY(const nvlist_t * const *, nvlist, NVLIST)
-#ifndef _KERNEL
+#if !defined(_KERNEL) && !defined(_STANDALONE)
NVLIST_GET_ARRAY(const int *, descriptor, DESCRIPTOR)
#endif
@@ -1955,7 +1979,7 @@ NVLIST_TAKE(bool, bool, BOOL)
NVLIST_TAKE(uint64_t, number, NUMBER)
NVLIST_TAKE(char *, string, STRING)
NVLIST_TAKE(nvlist_t *, nvlist, NVLIST)
-#ifndef _KERNEL
+#if !defined(_KERNEL) && !defined(_STANDALONE)
NVLIST_TAKE(int, descriptor, DESCRIPTOR)
#endif
@@ -1998,7 +2022,7 @@ NVLIST_TAKE_ARRAY(bool *, bool, BOOL)
NVLIST_TAKE_ARRAY(uint64_t *, number, NUMBER)
NVLIST_TAKE_ARRAY(char **, string, STRING)
NVLIST_TAKE_ARRAY(nvlist_t **, nvlist, NVLIST)
-#ifndef _KERNEL
+#if !defined(_KERNEL) && !defined(_STANDALONE)
NVLIST_TAKE_ARRAY(int *, descriptor, DESCRIPTOR)
#endif
@@ -2038,7 +2062,7 @@ NVLIST_FREE(bool_array, BOOL_ARRAY)
NVLIST_FREE(number_array, NUMBER_ARRAY)
NVLIST_FREE(string_array, STRING_ARRAY)
NVLIST_FREE(nvlist_array, NVLIST_ARRAY)
-#ifndef _KERNEL
+#if !defined(_KERNEL) && !defined(_STANDALONE)
NVLIST_FREE(descriptor, DESCRIPTOR)
NVLIST_FREE(descriptor_array, DESCRIPTOR_ARRAY)
#endif
Index: src/sys/external/bsd/libnv/dist/nvlist_impl.h
diff -u src/sys/external/bsd/libnv/dist/nvlist_impl.h:1.1.1.1 src/sys/external/bsd/libnv/dist/nvlist_impl.h:1.2
--- src/sys/external/bsd/libnv/dist/nvlist_impl.h:1.1.1.1 Sat Sep 8 09:27:48 2018
+++ src/sys/external/bsd/libnv/dist/nvlist_impl.h Sat Sep 8 10:02:15 2018
@@ -1,3 +1,5 @@
+/* $NetBSD: nvlist_impl.h,v 1.2 2018/09/08 14:02:15 christos Exp $ */
+
/*-
* SPDX-License-Identifier: BSD-2-Clause-FreeBSD
*
@@ -35,9 +37,13 @@
#ifndef _NVLIST_IMPL_H_
#define _NVLIST_IMPL_H_
+#ifdef __FreeBSD__
#include <sys/nv.h>
+#else
+#include "nv.h"
+#endif
-#ifndef _KERNEL
+#if !defined(_KERNEL) && !defined(_STANDALONE)
#include <stdint.h>
#endif
Index: src/sys/external/bsd/libnv/dist/nvpair.c
diff -u src/sys/external/bsd/libnv/dist/nvpair.c:1.1.1.1 src/sys/external/bsd/libnv/dist/nvpair.c:1.2
--- src/sys/external/bsd/libnv/dist/nvpair.c:1.1.1.1 Sat Sep 8 09:27:48 2018
+++ src/sys/external/bsd/libnv/dist/nvpair.c Sat Sep 8 10:02:15 2018
@@ -1,3 +1,5 @@
+/* $NetBSD: nvpair.c,v 1.2 2018/09/08 14:02:15 christos Exp $ */
+
/*-
* SPDX-License-Identifier: BSD-2-Clause-FreeBSD
*
@@ -31,20 +33,26 @@
*/
#include <sys/cdefs.h>
+#ifdef __FreeBSD__
__FBSDID("$FreeBSD: head/sys/contrib/libnv/nvpair.c 335382 2018-06-19 18:43:02Z lwhsu $");
+#else
+__RCSID("$NetBSD: nvpair.c,v 1.2 2018/09/08 14:02:15 christos Exp $");
+#endif
#include <sys/param.h>
#include <sys/endian.h>
#include <sys/queue.h>
-#ifdef _KERNEL
+#if defined(_KERNEL) || defined(_STANDALONE)
#include <sys/errno.h>
#include <sys/lock.h>
#include <sys/malloc.h>
#include <sys/systm.h>
+#ifdef __FreeBSD__
#include <machine/stdarg.h>
+#endif
#else
#include <errno.h>
@@ -63,22 +71,36 @@ __FBSDID("$FreeBSD: head/sys/contrib/lib
#include <pjdlog.h>
#endif
+#ifdef __FreeBSD__
#include <sys/nv.h>
+#else
+#include "nv.h"
+#endif
#include "nv_impl.h"
#include "nvlist_impl.h"
#include "nvpair_impl.h"
#ifndef HAVE_PJDLOG
-#ifdef _KERNEL
+#if defined(_KERNEL) || defined(_STANDALONE)
+#ifdef __FreeBSD__
#define PJDLOG_ASSERT(...) MPASS(__VA_ARGS__)
+#else
+#define PJDLOG_ASSERT(...) KASSERT(__VA_ARGS__)
+#endif
#define PJDLOG_RASSERT(expr, ...) KASSERT(expr, (__VA_ARGS__))
#define PJDLOG_ABORT(...) panic(__VA_ARGS__)
#else
+#ifndef __lint__
#include <assert.h>
#define PJDLOG_ASSERT(...) assert(__VA_ARGS__)
#define PJDLOG_RASSERT(expr, ...) assert(expr)
#define PJDLOG_ABORT(...) abort()
+#else
+#define PJDLOG_ASSERT(...)
+#define PJDLOG_RASSERT(expr, ...)
+#define PJDLOG_ABORT(...)
+#endif
#endif
#endif
@@ -97,7 +119,7 @@ struct nvpair {
#define NVPAIR_ASSERT(nvp) do { \
PJDLOG_ASSERT((nvp) != NULL); \
PJDLOG_ASSERT((nvp)->nvp_magic == NVPAIR_MAGIC); \
-} while (0)
+} while (/*CONSTCOND*/0)
struct nvpair_header {
uint8_t nvph_type;
@@ -298,7 +320,7 @@ nvpair_clone(const nvpair_t *nvp)
data = nvpair_get_nvlist_array(nvp, &datasize);
newnvp = nvpair_create_nvlist_array(name, data, datasize);
break;
-#ifndef _KERNEL
+#if !defined(_KERNEL) && !defined(_STANDALONE)
case NV_TYPE_DESCRIPTOR:
newnvp = nvpair_create_descriptor(name,
nvpair_get_descriptor(nvp));
@@ -470,7 +492,7 @@ nvpair_pack_nvlist_array_next(unsigned c
return (ptr);
}
-#ifndef _KERNEL
+#if !defined(_KERNEL) && !defined(_STANDALONE)
unsigned char *
nvpair_pack_descriptor(const nvpair_t *nvp, unsigned char *ptr, int64_t *fdidxp,
size_t *leftp)
@@ -577,7 +599,7 @@ nvpair_pack_string_array(const nvpair_t
return (ptr);
}
-#ifndef _KERNEL
+#if !defined(_KERNEL) && !defined(_STANDALONE)
unsigned char *
nvpair_pack_descriptor_array(const nvpair_t *nvp, unsigned char *ptr,
int64_t *fdidxp, size_t *leftp)
@@ -825,7 +847,7 @@ nvpair_unpack_nvlist(bool isbe __unused,
return (ptr);
}
-#ifndef _KERNEL
+#if !defined(_KERNEL) && !defined(_STANDALONE)
const unsigned char *
nvpair_unpack_descriptor(bool isbe, nvpair_t *nvp, const unsigned char *ptr,
size_t *leftp, const int *fds, size_t nfds)
@@ -1018,7 +1040,7 @@ out:
return (NULL);
}
-#ifndef _KERNEL
+#if !defined(_KERNEL) && !defined(_STANDALONE) && !defined(__NetBSD__)
const unsigned char *
nvpair_unpack_descriptor_array(bool isbe, nvpair_t *nvp,
const unsigned char *ptr, size_t *leftp, const int *fds, size_t nfds)
@@ -1270,7 +1292,7 @@ nvpair_create_nvlist(const char *name, c
return (nvp);
}
-#ifndef _KERNEL
+#if !defined(_KERNEL) && !defined(_STANDALONE)
nvpair_t *
nvpair_create_descriptor(const char *name, int value)
{
@@ -1494,7 +1516,7 @@ fail:
return (NULL);
}
-#ifndef _KERNEL
+#if !defined(_KERNEL) && !defined(_STANDALONE)
nvpair_t *
nvpair_create_descriptor_array(const char *name, const int *value,
size_t nitems)
@@ -1593,7 +1615,7 @@ nvpair_move_nvlist(const char *name, nvl
return (nvp);
}
-#ifndef _KERNEL
+#if !defined(_KERNEL) && !defined(_STANDALONE)
nvpair_t *
nvpair_move_descriptor(const char *name, int value)
{
@@ -1767,7 +1789,7 @@ fail:
return (NULL);
}
-#ifndef _KERNEL
+#if !defined(_KERNEL) && !defined(_STANDALONE)
nvpair_t *
nvpair_move_descriptor_array(const char *name, int *value, size_t nitems)
{
@@ -1843,7 +1865,7 @@ nvpair_get_nvlist(const nvpair_t *nvp)
return ((const nvlist_t *)(intptr_t)nvp->nvp_data);
}
-#ifndef _KERNEL
+#if !defined(_KERNEL) && !defined(_STANDALONE)
int
nvpair_get_descriptor(const nvpair_t *nvp)
{
@@ -1920,7 +1942,7 @@ nvpair_get_nvlist_array(const nvpair_t *
return ((const nvlist_t * const *)((intptr_t)nvp->nvp_data));
}
-#ifndef _KERNEL
+#if !defined(_KERNEL) && !defined(_STANDALONE)
const int *
nvpair_get_descriptor_array(const nvpair_t *nvp, size_t *nitems)
{
@@ -2027,7 +2049,7 @@ fail:
return (-1);
}
-#ifndef _KERNEL
+#if !defined(_KERNEL) && !defined(_STANDALONE)
int
nvpair_append_descriptor_array(nvpair_t *nvp, const int value)
{
@@ -2061,7 +2083,7 @@ nvpair_free(nvpair_t *nvp)
nvp->nvp_magic = 0;
switch (nvp->nvp_type) {
-#ifndef _KERNEL
+#if !defined(_KERNEL) && !defined(_STANDALONE)
case NV_TYPE_DESCRIPTOR:
close((int)nvp->nvp_data);
break;
Index: src/sys/external/bsd/libnv/dist/nvpair_impl.h
diff -u src/sys/external/bsd/libnv/dist/nvpair_impl.h:1.1.1.1 src/sys/external/bsd/libnv/dist/nvpair_impl.h:1.2
--- src/sys/external/bsd/libnv/dist/nvpair_impl.h:1.1.1.1 Sat Sep 8 09:27:48 2018
+++ src/sys/external/bsd/libnv/dist/nvpair_impl.h Sat Sep 8 10:02:15 2018
@@ -1,3 +1,5 @@
+/* $NetBSD: nvpair_impl.h,v 1.2 2018/09/08 14:02:15 christos Exp $ */
+
/*-
* SPDX-License-Identifier: BSD-2-Clause-FreeBSD
*
@@ -35,10 +37,14 @@
#ifndef _NVPAIR_IMPL_H_
#define _NVPAIR_IMPL_H_
+#ifdef __FreeBSD__
#include <sys/nv.h>
+#else
+#include "nv.h"
+#endif
#include <sys/queue.h>
-#ifndef _KERNEL
+#if !defined(_KERNEL) && !defined(_STANDALONE)
#include <stdint.h>
#endif
Added files:
Index: src/sys/external/bsd/libnv/dist/nv_compat.h
diff -u /dev/null src/sys/external/bsd/libnv/dist/nv_compat.h:1.1
--- /dev/null Sat Sep 8 10:02:15 2018
+++ src/sys/external/bsd/libnv/dist/nv_compat.h Sat Sep 8 10:02:15 2018
@@ -0,0 +1,96 @@
+/* $NetBSD: nv_compat.h,v 1.1 2018/09/08 14:02:15 christos Exp $ */
+
+/*
+ * Copyright (c) 1987, 1991, 1993
+ * The Regents of the University of California. All rights reserved.
+ *
+ * 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.
+ * 3. Neither the name of the University nor the names of its contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS 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 REGENTS 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.
+ *
+ * @(#)endian.h 8.1 (Berkeley) 6/11/93
+ */
+
+#ifndef _NV_COMPAT_H_
+#define _NV_COMPAT_H_
+
+#if defined(__NetBSD__) && (defined(_KERNEL) || defined(_STANDALONE))
+#ifdef _KERNEL
+#include <sys/malloc.h>
+#define M_NVLIST M_TEMP
+#endif
+#include <sys/stdarg.h>
+#include <lib/libkern/libkern.h>
+
+#endif
+
+#ifndef __unused
+#define __unused __attribute__((__unused__))
+#endif
+
+#ifndef __DECONST
+#define __DECONST(type, var) ((type)(uintptr_t)(const void *)(var))
+#endif
+
+#ifndef __printflike
+#define __printflike(fmtarg, firstvararg) \
+ __attribute__((__format__ (__printf__, fmtarg, firstvararg)))
+#endif
+
+#ifdef __linux__
+#include <endian.h>
+#else
+#include <sys/endian.h>
+#endif
+
+#ifdef __linux__
+static inline uint32_t
+be32dec(const void *buf)
+{
+ uint8_t const *p = (uint8_t const *)buf;
+ return (((unsigned)p[0] << 24) | (p[1] << 16) | (p[2] << 8) | p[3]);
+}
+
+static inline uint32_t
+le32dec(const void *buf)
+{
+ uint8_t const *p = (uint8_t const *)buf;
+ return (((unsigned)p[3] << 24) | (p[2] << 16) | (p[1] << 8) | p[0]);
+}
+
+static inline uint64_t
+be64dec(const void *buf)
+{
+ uint8_t const *p = (uint8_t const *)buf;
+ return (((uint64_t)be32dec(p) << 32) | be32dec(p + 4));
+}
+
+static inline uint64_t
+le64dec(const void *buf)
+{
+ uint8_t const *p = (uint8_t const *)buf;
+ return (((uint64_t)le32dec(p + 4) << 32) | le32dec(p));
+}
+#endif
+
+#endif
Index: src/sys/external/bsd/libnv/dist/nv_kern_netbsd.c
diff -u /dev/null src/sys/external/bsd/libnv/dist/nv_kern_netbsd.c:1.1
--- /dev/null Sat Sep 8 10:02:15 2018
+++ src/sys/external/bsd/libnv/dist/nv_kern_netbsd.c Sat Sep 8 10:02:15 2018
@@ -0,0 +1,255 @@
+/* $NetBSD: nv_kern_netbsd.c,v 1.1 2018/09/08 14:02:15 christos Exp $ */
+
+/*-
+ * Copyright (c) 2018 The NetBSD Foundation, Inc.
+ * All rights reserved.
+ *
+ * This code is derived from software contributed to The NetBSD Foundation
+ * by Mindaugas Rasiukevicius.
+ *
+ * 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 NETBSD FOUNDATION, INC. 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 FOUNDATION 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.
+ */
+
+#include <sys/ctypes.h>
+__RCSID("$NetBSD: nv_kern_netbsd.c,v 1.1 2018/09/08 14:02:15 christos Exp $");
+
+#if !defined(_KERNEL) && !defined(_STANDALONE)
+#include <sys/mman.h>
+#include <errno.h>
+#include <string.h>
+#include <stdlib.h>
+#include <stdio.h>
+#endif
+#ifdef _KERNEL
+#include <sys/param.h>
+#include <sys/lwp.h>
+#include <sys/kmem.h>
+#include <sys/malloc.h>
+#include <sys/mman.h>
+#include <uvm/uvm_extern.h>
+#endif
+#ifdef _STANDALONE
+/* XXX */
+extern void *alloc(unsigned int);
+extern void dealloc(void *, unsigned int);
+// #include "stand.h"
+#else
+#include <sys/ioctl.h>
+#endif
+#include "nv.h"
+#include "nv_impl.h"
+
+#ifndef _STANDALONE
+#ifdef _KERNEL
+
+int
+nvlist_copyin(const nvlist_ref_t *nref, nvlist_t **nvlp, size_t lim)
+{
+ const size_t len = nref->len;
+ nvlist_t *nvl;
+ void *buf;
+ int error;
+
+ if (len >= lim) {
+ return E2BIG;
+ }
+ buf = kmem_alloc(len, KM_SLEEP);
+ error = copyin(nref->buf, buf, len);
+ if (error) {
+ kmem_free(buf, len);
+ return error;
+ }
+ nvl = nvlist_unpack(buf, len, nref->flags);
+ kmem_free(buf, len);
+ if (nvl == NULL) {
+ return EINVAL;
+ }
+ *nvlp = nvl;
+ return 0;
+}
+
+int
+nvlist_copyout(nvlist_ref_t *nref, const nvlist_t *nvl)
+{
+ struct proc *p = curproc;
+ void *buf, *uaddr;
+ size_t len, rlen;
+ int error;
+
+ buf = nvlist_pack(nvl, &len);
+ if (buf == NULL) {
+ return ENOMEM;
+ }
+
+ /*
+ * Map the user page(s).
+ *
+ * Note: nvlist_recv_ioctl() will unmap it.
+ */
+ uaddr = NULL;
+ rlen = round_page(len);
+ error = uvm_mmap_anon(p, &uaddr, rlen);
+ if (error) {
+ goto err;
+ }
+ error = copyout(buf, uaddr, len);
+ if (error) {
+ uvm_unmap(&p->p_vmspace->vm_map, (vaddr_t)uaddr,
+ (vaddr_t)uaddr + len);
+ goto err;
+ }
+ nref->flags = nvlist_error(nvl);
+ nref->buf = uaddr;
+ nref->len = len;
+err:
+ free(buf, M_TEMP);
+ return error;
+}
+
+#else
+
+int
+nvlist_xfer_ioctl(int fd, unsigned long cmd, const nvlist_t *nvl,
+ nvlist_t **nvlp)
+{
+ nvlist_ref_t nref;
+ void *buf = NULL;
+
+ memset(&nref, 0, sizeof(nvlist_ref_t));
+
+ if (nvl) {
+ /*
+ * Sending: serialize the name-value list.
+ */
+ buf = nvlist_pack(nvl, &nref.len);
+ if (buf == NULL) {
+ errno = ENOMEM;
+ return -1;
+ }
+ nref.buf = buf;
+ nref.flags = nvlist_flags(nvl);
+ }
+
+ /*
+ * Exchange the nvlist reference data.
+ */
+ if (ioctl(fd, cmd, &nref) == -1) {
+ free(buf);
+ return -1;
+ }
+ free(buf);
+
+ if (nvlp) {
+ nvlist_t *retnvl;
+
+ /*
+ * Receiving: unserialize the nvlist.
+ *
+ * Note: pages are mapped by nvlist_kern_copyout() for us.
+ */
+ if (nref.buf == NULL || nref.len == 0) {
+ errno = EIO;
+ return -1;
+ }
+ retnvl = nvlist_unpack(nref.buf, nref.len, nref.flags);
+ munmap(nref.buf, nref.len);
+ if (retnvl == NULL) {
+ errno = EIO;
+ return -1;
+ }
+ *nvlp = retnvl;
+ }
+ return 0;
+}
+
+int
+nvlist_send_ioctl(int fd, unsigned long cmd, const nvlist_t *nvl)
+{
+ return nvlist_xfer_ioctl(fd, cmd, nvl, NULL);
+}
+
+int
+nvlist_recv_ioctl(int fd, unsigned long cmd, nvlist_t **nvlp)
+{
+ return nvlist_xfer_ioctl(fd, cmd, NULL, nvlp);
+}
+#endif
+#endif
+
+void *
+nv_calloc(size_t n, size_t s)
+{
+ n *= s;
+ void *buf = nv_malloc(n);
+ if (buf == NULL)
+ return NULL;
+ memset(buf, 0, n);
+ return buf;
+}
+
+char *
+nv_strdup(const char *s1)
+{
+ size_t len = strlen(s1) + 1;
+ char *s2;
+
+ s2 = nv_malloc(len);
+ if (s2) {
+ memcpy(s2, s1, len);
+ s2[len] = '\0';
+ }
+ return s2;
+}
+
+#ifdef _STANDALONE
+
+void *
+nv_malloc(size_t len)
+{
+ return alloc(len);
+}
+
+void
+nv_free(void *buf)
+{
+ if (buf == NULL)
+ return;
+ unsigned int *olen = (void *)((char *)buf - sizeof(unsigned int));
+ dealloc(buf, *olen);
+}
+
+void *
+nv_realloc(void *buf, size_t len)
+{
+ if (buf == NULL)
+ return alloc(len);
+
+ unsigned int *olen = (void *)((char *)buf - sizeof(unsigned int));
+ if (*olen < len)
+ return buf;
+
+ void *nbuf = alloc(len);
+ memcpy(nbuf, buf, *olen);
+ dealloc(buf, *olen);
+ return nbuf;
+}
+#endif