Page Menu
Home
FreeBSD
Search
Configure Global Search
Log In
Files
F141869352
D54648.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Flag For Later
Award Token
Size
31 KB
Referenced Files
None
Subscribers
None
D54648.diff
View Options
diff --git a/etc/mtree/BSD.include.dist b/etc/mtree/BSD.include.dist
--- a/etc/mtree/BSD.include.dist
+++ b/etc/mtree/BSD.include.dist
@@ -10,6 +10,8 @@
..
atf-c++
..
+ bhyve
+ ..
bsm tags=package=audit-dev
..
bsnmp
diff --git a/lib/Makefile b/lib/Makefile
--- a/lib/Makefile
+++ b/lib/Makefile
@@ -37,6 +37,7 @@
libauditd \
libbegemot \
libblocksruntime \
+ libbhyve \
libbsddialog \
libbsdstat \
libbsm \
diff --git a/lib/libbhyve/Makefile b/lib/libbhyve/Makefile
new file mode 100644
--- /dev/null
+++ b/lib/libbhyve/Makefile
@@ -0,0 +1,18 @@
+SHLIBDIR?= /lib
+
+PACKAGE=lib${LIB}
+LIB= bhyve
+SRCS= config.c \
+ pci.c
+INCS= bhyve/config.h \
+ bhyve/net_backends.h \
+ bhyve/pci.h
+INCSDIR = ${INCLUDEDIR}/bhyve
+
+SHLIB_MAJOR= 0
+SHLIB_MINOR= 1
+CFLAGS+= -I${.CURDIR}
+LIBADD+= netgraph
+
+MAN= libbhyve.3
+.include <bsd.lib.mk>
diff --git a/usr.sbin/bhyve/config.h b/lib/libbhyve/bhyve/config.h
rename from usr.sbin/bhyve/config.h
rename to lib/libbhyve/bhyve/config.h
--- a/usr.sbin/bhyve/config.h
+++ b/lib/libbhyve/bhyve/config.h
@@ -26,7 +26,7 @@
*/
#ifndef __CONFIG_H__
-#define __CONFIG_H__
+#define __CONFIG_H__
#include <sys/nv.h>
diff --git a/lib/libbhyve/bhyve/net_backends.h b/lib/libbhyve/bhyve/net_backends.h
new file mode 100644
--- /dev/null
+++ b/lib/libbhyve/bhyve/net_backends.h
@@ -0,0 +1,13 @@
+/*
+ * Copyright (c) 2025 Bojan Novković <bnovkov@FreeBSD.org>
+ *
+ * SPDX-License-Identifier: BSD-2-Clause
+ */
+
+#ifndef _LIBBHYVE_NET_H_
+#define _LIBBHYVE_NET_H_
+
+#include <sys/nv.h>
+
+int netbe_legacy_config(nvlist_t *nvl, const char *opts);
+#endif /* _LIBBHYVE_NET_H_ */
diff --git a/lib/libbhyve/bhyve/pci.h b/lib/libbhyve/bhyve/pci.h
new file mode 100644
--- /dev/null
+++ b/lib/libbhyve/bhyve/pci.h
@@ -0,0 +1,21 @@
+/*
+ * Copyright (c) 2025 Bojan Novković <bnovkov@FreeBSD.org>
+ *
+ * SPDX-License-Identifier: BSD-2-Clause
+ */
+
+#ifndef _LIBBHYVE_PCI_H_
+#define _LIBBHYVE_PCI_H_
+
+#include <sys/nv.h>
+
+#define BHYVE_RUN_DIR "/var/run/bhyve/"
+
+/*
+ * PCI routines.
+ */
+int pci_init_fds(nvlist_t *nvl, const char *device);
+int pci_parse_config(nvlist_t *nvl, const char *device, const char *config);
+int pci_parse_legacy_config(nvlist_t *nvl, const char *opt);
+bool pci_validate_hotplug_request(nvlist_t *nvl, const char *device);
+#endif /* _LIBBHYVE_PCI_H_ */
diff --git a/usr.sbin/bhyve/config.c b/lib/libbhyve/config.c
rename from usr.sbin/bhyve/config.c
rename to lib/libbhyve/config.c
--- a/usr.sbin/bhyve/config.c
+++ b/lib/libbhyve/config.c
@@ -32,7 +32,7 @@
#include <stdlib.h>
#include <string.h>
-#include "config.h"
+#include "bhyve/config.h"
static nvlist_t *config_root;
diff --git a/lib/libbhyve/internal.h b/lib/libbhyve/internal.h
new file mode 100644
--- /dev/null
+++ b/lib/libbhyve/internal.h
@@ -0,0 +1,15 @@
+/*
+ * Copyright (c) 2025 Bojan Novković <bnovkov@FreeBSD.org>
+ *
+ * SPDX-License-Identifier: BSD-2-Clause
+ */
+
+#ifndef _INTERNAL_H_
+#define _INTERNAL_H_
+
+#include <sys/linker_set.h>
+#include <sys/nv.h>
+
+int netbe_init_fds(nvlist_t *nvl);
+bool netbe_validate_hotplug_request(nvlist_t *nvl);
+#endif // _INTERNAL_H_
diff --git a/lib/libbhyve/libbhyve.3 b/lib/libbhyve/libbhyve.3
new file mode 100644
--- /dev/null
+++ b/lib/libbhyve/libbhyve.3
@@ -0,0 +1,105 @@
+.\" SPDX-License-Identifier: BSD-2-Clause
+.\"
+.\" Copyright (c) 2026 Bojan Novković <bnovkov@FreeBSD.org>.
+.\"
+.\" This documentation was written by
+.\" Bojan Novković <bnovkov@FreeBSD.org>.
+.\"
+.Dd January 3, 2026
+.Dt LIBBHYVE 3
+.Os
+.Sh NAME
+.Nm libbhyve ,
+.Nm netbe_legacy_config ,
+.Nm pci_init_fds ,
+.Nm pci_parse_config ,
+.Nm pci_parse_legacy_config ,
+.Nm pci_validate_hotplug_request
+.Nd shared bhyve routines
+.Sh SYNOPSIS
+.Lb libbhyve
+.In bhyve/net_backends.h
+.In bhyve/config.h
+.In bhyve/pci.h
+.Ft int
+.Fo netbe_legacy_config
+.Fa "nvlist_t *nvl"
+.Fa "const char *opts"
+.Fc
+.Ft int
+.Fo pci_init_fds
+.Fa "nvlist_t *nvl"
+.Fa "const char *devname"
+.Fc
+.Ft int
+.Fo pci_parse_config
+.Fa "nvlist_t *nvl"
+.Fa "const char *device"
+.Fa "const char *config"
+.Fc
+.Ft int
+.Fo pci_parse_legacy_config
+.Fa "nvlist_t *nvl"
+.Fa "const char *opt"
+.Fc
+.Ft bool
+.Fo pci_validate_hotplug_request
+.Fa "nvlist_t *nvl"
+.Fa "const char *device"
+.Fc
+.Sh DESCRIPTION
+The
+.Nm
+library contains
+.Xr bhyve 8
+code that is meant to be used by other userspace programs.
+Please refer to the
+.Xr bhyve_config 5
+manual page to read the documentation for the functions listed in
+.In bhyve/config.h .
+.Pp
+The
+.Fn netbe_legacy_config
+routine parses common network device backend options from the configuration
+string
+.Ar opt .
+.Pp
+The
+.Fn pci_init_fds
+routine creates all file descriptors required for a hotpluggable
+emulated PCI device
+.Ar devname
+and stores them in the
+.Ar nvl
+.Xr nvlist 9
+object.
+.Pp
+The
+.Fn pci_parse_config
+routine parses the configuration string
+.Ar config
+for a hotpluggable emulated PCI device specified by
+.Ar device
+using device-specific parsing routines.
+.Pp
+The
+.Fn pci_parse_legacy_config
+routine parses a list of "name[=value]" comma-separated options and stores them
+in the
+.Ar nvl
+.Xr nvlist 9
+object.
+.Pp
+The
+.Fn pci_validate_hotplug_request
+routine determines whether the
+.Ar nvl
+.Xr nvlist 9
+object contains all necessary name value pairs required for hotplugging an
+emulated PCI device specified by
+.Ar device .
+.Sh SEE ALSO
+.Xr bhyve_config 5 ,
+.Xr bhyve 8
+.Sh AUTHORS
+.An Bojan Novković Aq Mt bnovkov@FreeBSD.org .
diff --git a/lib/libbhyve/pci.c b/lib/libbhyve/pci.c
new file mode 100644
--- /dev/null
+++ b/lib/libbhyve/pci.c
@@ -0,0 +1,131 @@
+/*
+ * Copyright (c) 2019 John Baldwin <jhb@FreeBSD.org>
+ * Copyright (c) 2025 Bojan Novković <bnovkov@FreeBSD.org>
+ *
+ * SPDX-License-Identifier: BSD-2-Clause
+ */
+
+#include <sys/nv_namespace.h>
+
+#include <errno.h>
+#include <malloc.h>
+#include <string.h>
+
+#include "bhyve/config.h"
+#include "bhyve/net_backends.h"
+#include "bhyve/pci.h"
+#include "internal.h"
+
+struct devinfo {
+ const char *name;
+ int (*init_fds)(nvlist_t *);
+ bool (*validate_hotplug_request)(nvlist_t *);
+ int (*legacy_config)(nvlist_t *, const char *);
+};
+SET_DECLARE(pci_devinfo, struct devinfo);
+
+static struct devinfo *
+find_devinfo(const char *device)
+{
+ struct devinfo **di;
+
+ SET_FOREACH(di, pci_devinfo) {
+ if (strncmp(device, (*di)->name, strlen(device)) == 0) {
+ return (*di);
+ }
+ }
+
+ return (NULL);
+}
+
+bool
+pci_validate_hotplug_request(nvlist_t *nvl, const char *device)
+{
+ struct devinfo *di;
+
+ if (device == NULL)
+ return (false);
+ if (!nvlist_exists_bool(nvl, "ipc")) {
+ nvlist_add_string(nvl, "error", "not a hotplug request");
+ return (false);
+ }
+
+ di = find_devinfo(device);
+ if (di == NULL || di->validate_hotplug_request == NULL)
+ return (true);
+
+ return (di->validate_hotplug_request(nvl));
+}
+
+int
+pci_init_fds(nvlist_t *nvl, const char *device)
+{
+ struct devinfo *di;
+
+ if (device == NULL) {
+ errno = EINVAL;
+ return (-1);
+ }
+ if (nvlist_exists_bool(nvl, "ipc")) {
+ /*
+ * We're dealing with a hotplug request, all
+ * descriptors should've been setup by now.
+ */
+ return (0);
+ }
+ di = find_devinfo(device);
+ if (di == NULL || di->init_fds == NULL)
+ return (0);
+
+ return (di->init_fds(nvl));
+}
+
+int
+pci_parse_config(nvlist_t *nvl, const char *device, const char *config)
+{
+ struct devinfo *di;
+
+ if (device == NULL) {
+ errno = EINVAL;
+ return (-1);
+ }
+ if (nvlist_exists_bool(nvl, "ipc") || config == NULL)
+ return (0);
+ di = find_devinfo(device);
+ if (di == NULL || di->legacy_config == NULL)
+ return (0);
+
+ return (di->legacy_config(nvl, config));
+}
+
+/*
+ * Helper function to parse a list of comma-separated options where
+ * each option is formatted as "name[=value]". If no value is
+ * provided, the option is treated as a boolean and is given a value
+ * of true.
+ */
+int
+pci_parse_legacy_config(nvlist_t *nvl, const char *opt)
+{
+ char *config, *name, *tofree, *value;
+
+ if (opt == NULL)
+ return (0);
+
+ config = tofree = strdup(opt);
+ while ((name = strsep(&config, ",")) != NULL) {
+ value = strchr(name, '=');
+ if (value != NULL) {
+ *value = '\0';
+ value++;
+ set_config_value_node(nvl, name, value);
+ } else
+ set_config_bool_node(nvl, name, true);
+ }
+ free(tofree);
+ return (0);
+}
+
+/*
+ * Per-device file initialization routines.
+ */
diff --git a/share/mk/src.libnames.mk b/share/mk/src.libnames.mk
--- a/share/mk/src.libnames.mk
+++ b/share/mk/src.libnames.mk
@@ -116,6 +116,7 @@
be \
begemot \
bluetooth \
+ bhyve \
bsdxml \
bsm \
bsnmp \
@@ -327,6 +328,7 @@
.if ${MK_BLOCKLIST} != "no"
_DP_blocklist+= pthread
.endif
+_DP_bhyve= netgraph
_DP_crypto= pthread
# See comment by _DP_archive above
.if ${.MAKE.OS} == "FreeBSD" || !defined(BOOTSTRAPPING)
@@ -618,6 +620,9 @@
LIBFDTDIR= ${_LIB_OBJTOP}/lib/libfdt
LIBFDT?= ${LIBFDTDIR}/libfdt${PIE_SUFFIX}.a
+LIBBHYVE= ${OBJTOP}/lib/libbhyve
+LIBBHYVE?= ${LIBUVMEMDIR}/libbhyve${PIE_SUFFIX}.a
+
LIBLUADIR= ${_LIB_OBJTOP}/lib/liblua
LIBLUA?= ${LIBLUADIR}/liblua${PIE_SUFFIX}.a
diff --git a/usr.sbin/bhyve/Makefile b/usr.sbin/bhyve/Makefile
--- a/usr.sbin/bhyve/Makefile
+++ b/usr.sbin/bhyve/Makefile
@@ -24,7 +24,6 @@
bhyverun_machdep.c \
block_if.c \
bootrom.c \
- config.c \
console.c \
crc16.c \
ctl_nvme_all.c \
@@ -98,7 +97,7 @@
-I${.CURDIR}/../../contrib/lib9p \
-I${SRCTOP}/sys
-LIBADD+= vmmapi md nv uvmem pthread z util sbuf cam 9p
+LIBADD+= bhyve vmmapi md nv uvmem pthread z util sbuf cam 9p
.if ${MK_BHYVE_SNAPSHOT} != "no"
LIBADD+= ucl xo
diff --git a/usr.sbin/bhyve/aarch64/bhyverun_machdep.c b/usr.sbin/bhyve/aarch64/bhyverun_machdep.c
--- a/usr.sbin/bhyve/aarch64/bhyverun_machdep.c
+++ b/usr.sbin/bhyve/aarch64/bhyverun_machdep.c
@@ -33,6 +33,7 @@
#include <machine/armreg.h>
#include <assert.h>
+#include <bhyve/config.h>
#include <err.h>
#include <errno.h>
#include <fcntl.h>
@@ -40,12 +41,10 @@
#include <string.h>
#include <sysexits.h>
#include <unistd.h>
-
#include <vmmapi.h>
#include "bhyve_machdep.h"
#include "bhyverun.h"
-#include "config.h"
#include "debug.h"
#include "fdt.h"
#include "mem.h"
diff --git a/usr.sbin/bhyve/aarch64/fdt.c b/usr.sbin/bhyve/aarch64/fdt.c
--- a/usr.sbin/bhyve/aarch64/fdt.c
+++ b/usr.sbin/bhyve/aarch64/fdt.c
@@ -31,6 +31,7 @@
#include <sys/param.h>
#include <assert.h>
+#include <bhyve/config.h>
#include <errno.h>
#include <stdio.h>
#include <unistd.h>
@@ -38,7 +39,6 @@
#include <libfdt.h>
#include <vmmapi.h>
-#include "config.h"
#include "bhyve_machdep.h"
#include "bhyverun.h"
#include "fdt.h"
diff --git a/usr.sbin/bhyve/aarch64/vmexit.c b/usr.sbin/bhyve/aarch64/vmexit.c
--- a/usr.sbin/bhyve/aarch64/vmexit.c
+++ b/usr.sbin/bhyve/aarch64/vmexit.c
@@ -39,6 +39,7 @@
#include <machine/vmm_instruction_emul.h>
#include <assert.h>
+#include <bhyve/config.h>
#include <errno.h>
#include <stdbool.h>
#include <stdio.h>
@@ -49,7 +50,6 @@
#include "bhyve_machdep.h"
#include "bhyverun.h"
-#include "config.h"
#include "debug.h"
#include "gdb.h"
#include "mem.h"
diff --git a/usr.sbin/bhyve/amd64/bhyverun_machdep.c b/usr.sbin/bhyve/amd64/bhyverun_machdep.c
--- a/usr.sbin/bhyve/amd64/bhyverun_machdep.c
+++ b/usr.sbin/bhyve/amd64/bhyverun_machdep.c
@@ -27,6 +27,7 @@
*/
#include <assert.h>
+#include <bhyve/config.h>
#include <err.h>
#include <stdbool.h>
#include <stdlib.h>
@@ -38,7 +39,6 @@
#include "atkbdc.h"
#include "bhyverun.h"
#include "bootrom.h"
-#include "config.h"
#include "debug.h"
#include "e820.h"
#include "fwctl.h"
diff --git a/usr.sbin/bhyve/amd64/inout.c b/usr.sbin/bhyve/amd64/inout.c
--- a/usr.sbin/bhyve/amd64/inout.c
+++ b/usr.sbin/bhyve/amd64/inout.c
@@ -37,12 +37,12 @@
#include <machine/vmm_instruction_emul.h>
#include <vmmapi.h>
+#include <bhyve/config.h>
#include <stdio.h>
#include <string.h>
#include <assert.h>
#include "bhyverun.h"
-#include "config.h"
#include "inout.h"
SET_DECLARE(inout_port_set, struct inout_port);
diff --git a/usr.sbin/bhyve/amd64/pci_lpc.c b/usr.sbin/bhyve/amd64/pci_lpc.c
--- a/usr.sbin/bhyve/amd64/pci_lpc.c
+++ b/usr.sbin/bhyve/amd64/pci_lpc.c
@@ -28,9 +28,11 @@
*/
#include <sys/types.h>
+
#include <machine/vmm.h>
#include <machine/vmm_snapshot.h>
+#include <bhyve/config.h>
#include <err.h>
#include <stdio.h>
#include <stdlib.h>
@@ -41,7 +43,6 @@
#include "acpi.h"
#include "debug.h"
#include "bootrom.h"
-#include "config.h"
#include "inout.h"
#include "pci_emul.h"
#include "pci_irq.h"
diff --git a/usr.sbin/bhyve/amd64/ps2kbd.c b/usr.sbin/bhyve/amd64/ps2kbd.c
--- a/usr.sbin/bhyve/amd64/ps2kbd.c
+++ b/usr.sbin/bhyve/amd64/ps2kbd.c
@@ -33,6 +33,7 @@
#include <machine/vmm_snapshot.h>
#include <assert.h>
+#include <bhyve/config.h>
#include <stdbool.h>
#include <stdio.h>
#include <stdlib.h>
@@ -45,7 +46,6 @@
#include "atkbdc.h"
#include "bhyverun.h"
-#include "config.h"
#include "console.h"
#include "debug.h"
#include "ps2kbd.h"
diff --git a/usr.sbin/bhyve/amd64/rtc.c b/usr.sbin/bhyve/amd64/rtc.c
--- a/usr.sbin/bhyve/amd64/rtc.c
+++ b/usr.sbin/bhyve/amd64/rtc.c
@@ -32,10 +32,11 @@
#include <assert.h>
#include <machine/vmm.h>
+
+#include <bhyve/config.h>
#include <vmmapi.h>
#include "acpi.h"
-#include "config.h"
#include "pci_lpc.h"
#include "rtc.h"
diff --git a/usr.sbin/bhyve/amd64/vmexit.c b/usr.sbin/bhyve/amd64/vmexit.c
--- a/usr.sbin/bhyve/amd64/vmexit.c
+++ b/usr.sbin/bhyve/amd64/vmexit.c
@@ -35,6 +35,7 @@
#include <x86/apicreg.h>
#include <assert.h>
+#include <bhyve/config.h>
#include <err.h>
#include <errno.h>
#include <stdlib.h>
@@ -44,7 +45,6 @@
#include <vmmapi.h>
#include "bhyverun.h"
-#include "config.h"
#include "debug.h"
#include "gdb.h"
#include "inout.h"
diff --git a/usr.sbin/bhyve/basl.c b/usr.sbin/bhyve/basl.c
--- a/usr.sbin/bhyve/basl.c
+++ b/usr.sbin/bhyve/basl.c
@@ -13,6 +13,7 @@
#include <machine/vmm.h>
#include <assert.h>
+#include <bhyve/config.h>
#include <err.h>
#include <libutil.h>
#include <stddef.h>
@@ -20,7 +21,6 @@
#include <vmmapi.h>
#include "basl.h"
-#include "config.h"
#include "qemu_loader.h"
struct basl_table_checksum {
diff --git a/usr.sbin/bhyve/bhyverun.c b/usr.sbin/bhyve/bhyverun.c
--- a/usr.sbin/bhyve/bhyverun.c
+++ b/usr.sbin/bhyve/bhyverun.c
@@ -73,12 +73,13 @@
#endif
#include <dev/vmm/vmm_mem.h>
+
+#include <bhyve/config.h>
#include <vmmapi.h>
#include "acpi.h"
#include "bhyverun.h"
#include "bootrom.h"
-#include "config.h"
#include "debug.h"
#ifdef BHYVE_GDB
#include "gdb.h"
diff --git a/usr.sbin/bhyve/block_if.c b/usr.sbin/bhyve/block_if.c
--- a/usr.sbin/bhyve/block_if.c
+++ b/usr.sbin/bhyve/block_if.c
@@ -41,6 +41,7 @@
#ifndef WITHOUT_CAPSICUM
#include <capsicum_helpers.h>
#endif
+#include <bhyve/config.h>
#include <err.h>
#include <fcntl.h>
#include <stdio.h>
@@ -56,7 +57,6 @@
#include <machine/vmm_snapshot.h>
#include "bhyverun.h"
-#include "config.h"
#include "debug.h"
#include "mevent.h"
#include "pci_emul.h"
diff --git a/usr.sbin/bhyve/bootrom.h b/usr.sbin/bhyve/bootrom.h
--- a/usr.sbin/bhyve/bootrom.h
+++ b/usr.sbin/bhyve/bootrom.h
@@ -29,12 +29,10 @@
#ifndef _BOOTROM_H_
#define _BOOTROM_H_
+#include <bhyve/config.h>
#include <stdbool.h>
#include <stddef.h>
#include <stdint.h>
-#include <limits.h>
-
-#include "config.h"
struct vmctx;
diff --git a/usr.sbin/bhyve/gdb.c b/usr.sbin/bhyve/gdb.c
--- a/usr.sbin/bhyve/gdb.c
+++ b/usr.sbin/bhyve/gdb.c
@@ -51,6 +51,7 @@
#ifndef WITHOUT_CAPSICUM
#include <capsicum_helpers.h>
#endif
+#include <bhyve/config.h>
#include <err.h>
#include <errno.h>
#include <fcntl.h>
@@ -66,7 +67,6 @@
#include <vmmapi.h>
#include "bhyverun.h"
-#include "config.h"
#include "debug.h"
#include "gdb.h"
#include "mem.h"
diff --git a/usr.sbin/bhyve/net_backend_netgraph.c b/usr.sbin/bhyve/net_backend_netgraph.c
--- a/usr.sbin/bhyve/net_backend_netgraph.c
+++ b/usr.sbin/bhyve/net_backend_netgraph.c
@@ -34,13 +34,13 @@
#ifndef WITHOUT_CAPSICUM
#include <capsicum_helpers.h>
#endif
+#include <bhyve/config.h>
#include <err.h>
#include <netgraph.h>
#include <string.h>
#include <sysexits.h>
#include <unistd.h>
-#include "config.h"
#include "debug.h"
#include "net_backends.h"
#include "net_backends_priv.h"
diff --git a/usr.sbin/bhyve/net_backend_slirp.c b/usr.sbin/bhyve/net_backend_slirp.c
--- a/usr.sbin/bhyve/net_backend_slirp.c
+++ b/usr.sbin/bhyve/net_backend_slirp.c
@@ -51,6 +51,7 @@
#include <sys/wait.h>
#include <assert.h>
+#include <bhyve/config.h>
#include <errno.h>
#include <signal.h>
#include <spawn.h>
@@ -59,7 +60,6 @@
#include <string.h>
#include <unistd.h>
-#include "config.h"
#include "debug.h"
#include "mevent.h"
#include "net_utils.h"
diff --git a/usr.sbin/bhyve/net_backends.c b/usr.sbin/bhyve/net_backends.c
--- a/usr.sbin/bhyve/net_backends.c
+++ b/usr.sbin/bhyve/net_backends.c
@@ -47,6 +47,7 @@
#ifndef WITHOUT_CAPSICUM
#include <capsicum_helpers.h>
#endif
+#include <bhyve/config.h>
#include <err.h>
#include <errno.h>
#include <fcntl.h>
@@ -60,7 +61,6 @@
#include <sysexits.h>
#include <unistd.h>
-#include "config.h"
#include "debug.h"
#include "iov.h"
#include "mevent.h"
diff --git a/usr.sbin/bhyve/net_utils.c b/usr.sbin/bhyve/net_utils.c
--- a/usr.sbin/bhyve/net_utils.c
+++ b/usr.sbin/bhyve/net_utils.c
@@ -26,9 +26,11 @@
*/
#include <sys/types.h>
+
#include <net/ethernet.h>
#include <assert.h>
+#include <bhyve/config.h>
#include <errno.h>
#include <limits.h>
#include <md5.h>
@@ -37,7 +39,6 @@
#include <string.h>
#include "bhyverun.h"
-#include "config.h"
#include "debug.h"
#include "net_utils.h"
diff --git a/usr.sbin/bhyve/pci_ahci.c b/usr.sbin/bhyve/pci_ahci.c
--- a/usr.sbin/bhyve/pci_ahci.c
+++ b/usr.sbin/bhyve/pci_ahci.c
@@ -36,6 +36,7 @@
#include <sys/ata.h>
#include <sys/endian.h>
+#include <bhyve/config.h>
#include <errno.h>
#include <fcntl.h>
#include <stdio.h>
@@ -51,7 +52,6 @@
#include <md5.h>
#include "bhyverun.h"
-#include "config.h"
#include "debug.h"
#include "pci_emul.h"
#ifdef BHYVE_SNAPSHOT
diff --git a/usr.sbin/bhyve/pci_e82545.c b/usr.sbin/bhyve/pci_e82545.c
--- a/usr.sbin/bhyve/pci_e82545.c
+++ b/usr.sbin/bhyve/pci_e82545.c
@@ -44,6 +44,7 @@
#include <capsicum_helpers.h>
#endif
+#include <bhyve/config.h>
#include <err.h>
#include <errno.h>
#include <fcntl.h>
@@ -61,7 +62,6 @@
#include "mii.h"
#include "bhyverun.h"
-#include "config.h"
#include "debug.h"
#include "pci_emul.h"
#ifdef BHYVE_SNAPSHOT
diff --git a/usr.sbin/bhyve/pci_emul.c b/usr.sbin/bhyve/pci_emul.c
--- a/usr.sbin/bhyve/pci_emul.c
+++ b/usr.sbin/bhyve/pci_emul.c
@@ -32,6 +32,8 @@
#include <sys/nv.h>
#include <sys/vmem.h>
+#include <bhyve/config.h>
+#include <bhyve/pci.h>
#include <ctype.h>
#include <err.h>
#include <errno.h>
@@ -45,6 +47,7 @@
#include <sysexits.h>
#include <dev/vmm/vmm_mem.h>
+
#include <machine/vmm.h>
#include <machine/vmm_snapshot.h>
#include <vmmapi.h>
@@ -52,7 +55,6 @@
#include "acpi.h"
#include "bhyverun.h"
#include "bootrom.h"
-#include "config.h"
#include "debug.h"
#ifdef __amd64__
#include "amd64/inout.h"
@@ -265,34 +267,6 @@
EPRINTLN("Invalid PCI slot info field \"%s\"", aopt);
}
-/*
- * Helper function to parse a list of comma-separated options where
- * each option is formatted as "name[=value]". If no value is
- * provided, the option is treated as a boolean and is given a value
- * of true.
- */
-int
-pci_parse_legacy_config(nvlist_t *nvl, const char *opt)
-{
- char *config, *name, *tofree, *value;
-
- if (opt == NULL)
- return (0);
-
- config = tofree = strdup(opt);
- while ((name = strsep(&config, ",")) != NULL) {
- value = strchr(name, '=');
- if (value != NULL) {
- *value = '\0';
- value++;
- set_config_value_node(nvl, name, value);
- } else
- set_config_bool_node(nvl, name, true);
- }
- free(tofree);
- return (0);
-}
-
/*
* PCI device configuration is stored in MIBs that encode the device's
* location:
diff --git a/usr.sbin/bhyve/pci_fbuf.c b/usr.sbin/bhyve/pci_fbuf.c
--- a/usr.sbin/bhyve/pci_fbuf.c
+++ b/usr.sbin/bhyve/pci_fbuf.c
@@ -36,6 +36,7 @@
#include <machine/vmm_snapshot.h>
#include <vmmapi.h>
+#include <bhyve/config.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
@@ -45,7 +46,6 @@
#include "bhyvegc.h"
#include "bhyverun.h"
-#include "config.h"
#include "debug.h"
#include "console.h"
#include "pci_emul.h"
diff --git a/usr.sbin/bhyve/pci_hda.c b/usr.sbin/bhyve/pci_hda.c
--- a/usr.sbin/bhyve/pci_hda.c
+++ b/usr.sbin/bhyve/pci_hda.c
@@ -28,11 +28,12 @@
*/
#include <sys/param.h>
+
+#include <bhyve/config.h>
#include <time.h>
#include "pci_hda.h"
#include "bhyverun.h"
-#include "config.h"
#include "pci_emul.h"
#include "hdac_reg.h"
diff --git a/usr.sbin/bhyve/pci_hostbridge.c b/usr.sbin/bhyve/pci_hostbridge.c
--- a/usr.sbin/bhyve/pci_hostbridge.c
+++ b/usr.sbin/bhyve/pci_hostbridge.c
@@ -27,10 +27,11 @@
*/
#include <sys/cdefs.h>
+
+#include <bhyve/config.h>
#include <err.h>
#include <stdlib.h>
-#include "config.h"
#include "pci_emul.h"
static int
diff --git a/usr.sbin/bhyve/pci_nvme.c b/usr.sbin/bhyve/pci_nvme.c
--- a/usr.sbin/bhyve/pci_nvme.c
+++ b/usr.sbin/bhyve/pci_nvme.c
@@ -60,6 +60,7 @@
#include <net/ieee_oui.h>
#include <assert.h>
+#include <bhyve/config.h>
#include <pthread.h>
#include <pthread_np.h>
#include <semaphore.h>
@@ -78,7 +79,6 @@
#include "bhyverun.h"
#include "block_if.h"
-#include "config.h"
#include "debug.h"
#include "pci_emul.h"
diff --git a/usr.sbin/bhyve/pci_passthru.h b/usr.sbin/bhyve/pci_passthru.h
--- a/usr.sbin/bhyve/pci_passthru.h
+++ b/usr.sbin/bhyve/pci_passthru.h
@@ -9,9 +9,9 @@
#include <sys/linker_set.h>
+#include <bhyve/config.h>
#include <vmmapi.h>
-#include "config.h"
#include "pci_emul.h"
struct passthru_mmio_mapping {
diff --git a/usr.sbin/bhyve/pci_uart.c b/usr.sbin/bhyve/pci_uart.c
--- a/usr.sbin/bhyve/pci_uart.c
+++ b/usr.sbin/bhyve/pci_uart.c
@@ -28,10 +28,10 @@
#include <sys/types.h>
+#include <bhyve/config.h>
#include <stdio.h>
#include "bhyverun.h"
-#include "config.h"
#include "debug.h"
#include "pci_emul.h"
#include "uart_emul.h"
diff --git a/usr.sbin/bhyve/pci_virtio_9p.c b/usr.sbin/bhyve/pci_virtio_9p.c
--- a/usr.sbin/bhyve/pci_virtio_9p.c
+++ b/usr.sbin/bhyve/pci_virtio_9p.c
@@ -35,6 +35,7 @@
#include <sys/uio.h>
#include <sys/capsicum.h>
+#include <bhyve/config.h>
#include <errno.h>
#include <fcntl.h>
#include <stdio.h>
@@ -48,7 +49,6 @@
#include <backend/fs.h>
#include "bhyverun.h"
-#include "config.h"
#include "debug.h"
#include "pci_emul.h"
#include "virtio.h"
diff --git a/usr.sbin/bhyve/pci_virtio_block.c b/usr.sbin/bhyve/pci_virtio_block.c
--- a/usr.sbin/bhyve/pci_virtio_block.c
+++ b/usr.sbin/bhyve/pci_virtio_block.c
@@ -36,6 +36,7 @@
#include <machine/vmm_snapshot.h>
+#include <bhyve/config.h>
#include <errno.h>
#include <fcntl.h>
#include <stdio.h>
@@ -49,7 +50,6 @@
#include <md5.h>
#include "bhyverun.h"
-#include "config.h"
#include "debug.h"
#include "pci_emul.h"
#include "virtio.h"
diff --git a/usr.sbin/bhyve/pci_virtio_console.c b/usr.sbin/bhyve/pci_virtio_console.c
--- a/usr.sbin/bhyve/pci_virtio_console.c
+++ b/usr.sbin/bhyve/pci_virtio_console.c
@@ -43,6 +43,7 @@
#ifndef WITHOUT_CAPSICUM
#include <capsicum_helpers.h>
#endif
+#include <bhyve/config.h>
#include <err.h>
#include <errno.h>
#include <fcntl.h>
@@ -57,7 +58,6 @@
#include <sysexits.h>
#include "bhyverun.h"
-#include "config.h"
#include "debug.h"
#include "pci_emul.h"
#include "virtio.h"
diff --git a/usr.sbin/bhyve/pci_virtio_input.c b/usr.sbin/bhyve/pci_virtio_input.c
--- a/usr.sbin/bhyve/pci_virtio_input.c
+++ b/usr.sbin/bhyve/pci_virtio_input.c
@@ -44,6 +44,7 @@
#include <dev/evdev/input.h>
#include <assert.h>
+#include <bhyve/config.h>
#include <err.h>
#include <errno.h>
#include <fcntl.h>
@@ -56,7 +57,6 @@
#include <unistd.h>
#include "bhyverun.h"
-#include "config.h"
#include "debug.h"
#include "mevent.h"
#include "pci_emul.h"
diff --git a/usr.sbin/bhyve/pci_virtio_net.c b/usr.sbin/bhyve/pci_virtio_net.c
--- a/usr.sbin/bhyve/pci_virtio_net.c
+++ b/usr.sbin/bhyve/pci_virtio_net.c
@@ -35,6 +35,7 @@
#include <net/ethernet.h>
#include <net/if.h> /* IFNAMSIZ */
+#include <bhyve/config.h>
#include <err.h>
#include <errno.h>
#include <fcntl.h>
@@ -49,7 +50,6 @@
#include <pthread_np.h>
#include "bhyverun.h"
-#include "config.h"
#include "debug.h"
#include "pci_emul.h"
#include "mevent.h"
diff --git a/usr.sbin/bhyve/pci_virtio_scsi.c b/usr.sbin/bhyve/pci_virtio_scsi.c
--- a/usr.sbin/bhyve/pci_virtio_scsi.c
+++ b/usr.sbin/bhyve/pci_virtio_scsi.c
@@ -47,6 +47,7 @@
#include <pthread.h>
#include <pthread_np.h>
+#include <bhyve/config.h>
#include <cam/scsi/scsi_all.h>
#include <cam/scsi/scsi_message.h>
#include <cam/ctl/ctl.h>
@@ -58,7 +59,6 @@
#include <camlib.h>
#include "bhyverun.h"
-#include "config.h"
#include "debug.h"
#include "pci_emul.h"
#include "virtio.h"
diff --git a/usr.sbin/bhyve/pci_xhci.c b/usr.sbin/bhyve/pci_xhci.c
--- a/usr.sbin/bhyve/pci_xhci.c
+++ b/usr.sbin/bhyve/pci_xhci.c
@@ -38,6 +38,7 @@
#include <sys/types.h>
#include <sys/queue.h>
+#include <bhyve/config.h>
#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
@@ -52,7 +53,6 @@
#include <xhcireg.h>
#include "bhyverun.h"
-#include "config.h"
#include "debug.h"
#include "pci_emul.h"
#include "pci_xhci.h"
diff --git a/usr.sbin/bhyve/rfb.c b/usr.sbin/bhyve/rfb.c
--- a/usr.sbin/bhyve/rfb.c
+++ b/usr.sbin/bhyve/rfb.c
@@ -47,6 +47,7 @@
#ifndef WITHOUT_CAPSICUM
#include <capsicum_helpers.h>
#endif
+#include <bhyve/config.h>
#include <err.h>
#include <errno.h>
#include <pthread.h>
@@ -64,7 +65,6 @@
#include "bhyvegc.h"
#include "debug.h"
#include "console.h"
-#include "config.h"
#include "rfb.h"
#include "sockstream.h"
diff --git a/usr.sbin/bhyve/riscv/bhyverun_machdep.c b/usr.sbin/bhyve/riscv/bhyverun_machdep.c
--- a/usr.sbin/bhyve/riscv/bhyverun_machdep.c
+++ b/usr.sbin/bhyve/riscv/bhyverun_machdep.c
@@ -37,6 +37,7 @@
#include <sys/stat.h>
#include <assert.h>
+#include <bhyve/config.h>
#include <err.h>
#include <errno.h>
#include <fcntl.h>
@@ -48,7 +49,6 @@
#include <vmmapi.h>
#include "bhyverun.h"
-#include "config.h"
#include "debug.h"
#include "fdt.h"
#include "mem.h"
diff --git a/usr.sbin/bhyve/riscv/fdt.c b/usr.sbin/bhyve/riscv/fdt.c
--- a/usr.sbin/bhyve/riscv/fdt.c
+++ b/usr.sbin/bhyve/riscv/fdt.c
@@ -46,7 +46,7 @@
#include <machine/intr.h>
-#include "config.h"
+#include <bhyve/config.h>
#include "bhyverun.h"
#include "fdt.h"
diff --git a/usr.sbin/bhyve/riscv/vmexit.c b/usr.sbin/bhyve/riscv/vmexit.c
--- a/usr.sbin/bhyve/riscv/vmexit.c
+++ b/usr.sbin/bhyve/riscv/vmexit.c
@@ -43,6 +43,7 @@
#include <machine/vmm_instruction_emul.h>
#include <assert.h>
+#include <bhyve/config.h>
#include <errno.h>
#include <stdbool.h>
#include <stdio.h>
@@ -52,7 +53,6 @@
#include <vmmapi.h>
#include "bhyverun.h"
-#include "config.h"
#include "debug.h"
#include "mem.h"
#include "vmexit.h"
diff --git a/usr.sbin/bhyve/rtc_pl031.c b/usr.sbin/bhyve/rtc_pl031.c
--- a/usr.sbin/bhyve/rtc_pl031.c
+++ b/usr.sbin/bhyve/rtc_pl031.c
@@ -28,12 +28,12 @@
#include <sys/param.h>
#include <assert.h>
+#include <bhyve/config.h>
#include <limits.h>
#include <pthread.h>
#include <stdlib.h>
#include <time.h>
-#include "config.h"
#include "mevent.h"
#include "rtc_pl031.h"
diff --git a/usr.sbin/bhyve/slirp/Makefile b/usr.sbin/bhyve/slirp/Makefile
--- a/usr.sbin/bhyve/slirp/Makefile
+++ b/usr.sbin/bhyve/slirp/Makefile
@@ -1,9 +1,9 @@
.PATH: ${.CURDIR}/../
PROG= bhyve-slirp-helper
-SRCS= slirp-helper.c config.c
+SRCS= slirp-helper.c
CFLAGS+= -I${.CURDIR}/../
-LIBADD= nv
+LIBADD= bhyve nv
MAN=
BINDIR?= /usr/libexec
diff --git a/usr.sbin/bhyve/slirp/slirp-helper.c b/usr.sbin/bhyve/slirp/slirp-helper.c
--- a/usr.sbin/bhyve/slirp/slirp-helper.c
+++ b/usr.sbin/bhyve/slirp/slirp-helper.c
@@ -22,6 +22,7 @@
#include <sys/socket.h>
#include <assert.h>
+#include <bhyve/config.h>
#include <capsicum_helpers.h>
#include <dlfcn.h>
#include <err.h>
@@ -35,7 +36,6 @@
#include <time.h>
#include <unistd.h>
-#include "config.h"
#include "libslirp.h"
struct slirp_priv {
diff --git a/usr.sbin/bhyve/smbiostbl.c b/usr.sbin/bhyve/smbiostbl.c
--- a/usr.sbin/bhyve/smbiostbl.c
+++ b/usr.sbin/bhyve/smbiostbl.c
@@ -29,6 +29,7 @@
#include <sys/param.h>
#include <assert.h>
+#include <bhyve/config.h>
#include <errno.h>
#include <md5.h>
#include <stdio.h>
@@ -40,7 +41,6 @@
#include <vmmapi.h>
#include "bhyverun.h"
-#include "config.h"
#include "debug.h"
#include "smbiostbl.h"
diff --git a/usr.sbin/bhyve/tpm_device.h b/usr.sbin/bhyve/tpm_device.h
--- a/usr.sbin/bhyve/tpm_device.h
+++ b/usr.sbin/bhyve/tpm_device.h
@@ -9,7 +9,7 @@
#include <vmmapi.h>
-#include "config.h"
+#include <bhyve/config.h>
struct tpm_device;
diff --git a/usr.sbin/bhyve/tpm_device.c b/usr.sbin/bhyve/tpm_device.c
--- a/usr.sbin/bhyve/tpm_device.c
+++ b/usr.sbin/bhyve/tpm_device.c
@@ -8,6 +8,7 @@
#include <sys/types.h>
#include <assert.h>
+#include <bhyve/config.h>
#include <err.h>
#include <errno.h>
#include <stdlib.h>
@@ -16,7 +17,6 @@
#include "acpi.h"
#include "acpi_device.h"
-#include "config.h"
#include "tpm_device.h"
#include "tpm_emul.h"
#include "tpm_intf.h"
diff --git a/usr.sbin/bhyve/tpm_emul.h b/usr.sbin/bhyve/tpm_emul.h
--- a/usr.sbin/bhyve/tpm_emul.h
+++ b/usr.sbin/bhyve/tpm_emul.h
@@ -9,7 +9,7 @@
#include <sys/linker_set.h>
-#include "config.h"
+#include <bhyve/config.h>
struct tpm_device;
diff --git a/usr.sbin/bhyve/tpm_emul_passthru.c b/usr.sbin/bhyve/tpm_emul_passthru.c
--- a/usr.sbin/bhyve/tpm_emul_passthru.c
+++ b/usr.sbin/bhyve/tpm_emul_passthru.c
@@ -7,6 +7,7 @@
#include <sys/types.h>
+#include <bhyve/config.h>
#include <err.h>
#include <errno.h>
#include <fcntl.h>
@@ -14,7 +15,6 @@
#include <stdlib.h>
#include <unistd.h>
-#include "config.h"
#include "tpm_device.h"
#include "tpm_emul.h"
diff --git a/usr.sbin/bhyve/tpm_emul_swtpm.c b/usr.sbin/bhyve/tpm_emul_swtpm.c
--- a/usr.sbin/bhyve/tpm_emul_swtpm.c
+++ b/usr.sbin/bhyve/tpm_emul_swtpm.c
@@ -9,6 +9,7 @@
#include <sys/socket.h>
#include <sys/un.h>
+#include <bhyve/config.h>
#include <err.h>
#include <errno.h>
#include <fcntl.h>
@@ -18,7 +19,6 @@
#include <strings.h>
#include <unistd.h>
-#include "config.h"
#include "tpm_device.h"
#include "tpm_emul.h"
diff --git a/usr.sbin/bhyve/tpm_intf.h b/usr.sbin/bhyve/tpm_intf.h
--- a/usr.sbin/bhyve/tpm_intf.h
+++ b/usr.sbin/bhyve/tpm_intf.h
@@ -7,10 +7,10 @@
#pragma once
+#include <bhyve/config.h>
#include <vmmapi.h>
#include "acpi_device.h"
-#include "config.h"
#include "tpm_device.h"
#include "tpm_emul.h"
diff --git a/usr.sbin/bhyve/tpm_intf_crb.c b/usr.sbin/bhyve/tpm_intf_crb.c
--- a/usr.sbin/bhyve/tpm_intf_crb.c
+++ b/usr.sbin/bhyve/tpm_intf_crb.c
@@ -12,6 +12,7 @@
#include <machine/vmm.h>
#include <assert.h>
+#include <bhyve/config.h>
#include <err.h>
#include <errno.h>
#include <pthread.h>
@@ -22,7 +23,6 @@
#include <vmmapi.h>
#include "basl.h"
-#include "config.h"
#include "mem.h"
#include "qemu_fwcfg.h"
#include "tpm_device.h"
diff --git a/usr.sbin/bhyve/tpm_ppi.h b/usr.sbin/bhyve/tpm_ppi.h
--- a/usr.sbin/bhyve/tpm_ppi.h
+++ b/usr.sbin/bhyve/tpm_ppi.h
@@ -7,7 +7,7 @@
#pragma once
-#include "config.h"
+#include <bhyve/config.h>
struct tpm_ppi {
const char *name;
diff --git a/usr.sbin/bhyve/tpm_ppi_qemu.c b/usr.sbin/bhyve/tpm_ppi_qemu.c
--- a/usr.sbin/bhyve/tpm_ppi_qemu.c
+++ b/usr.sbin/bhyve/tpm_ppi_qemu.c
@@ -13,13 +13,13 @@
#include <machine/vmm.h>
#include <assert.h>
+#include <bhyve/config.h>
#include <err.h>
#include <errno.h>
#include <vmmapi.h>
#include "acpi.h"
#include "acpi_device.h"
-#include "config.h"
#include "mem.h"
#include "qemu_fwcfg.h"
#include "tpm_ppi.h"
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Mon, Jan 12, 5:53 PM (8 h, 6 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
27620667
Default Alt Text
D54648.diff (31 KB)
Attached To
Mode
D54648: Introduce libbhyve
Attached
Detach File
Event Timeline
Log In to Comment