From 35f7a3539d9846f21a08c84fdb68e4b93f5e0509 Mon Sep 17 00:00:00 2001 From: Rickard von Essen Date: Fri, 11 Sep 2015 16:08:35 +0200 Subject: [PATCH 01/11] Fixes #52: Help text (-h) for memory size (-m) is incorrect. --- src/xhyve.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/xhyve.c b/src/xhyve.c index 97fd41f..f69e6ea 100644 --- a/src/xhyve.c +++ b/src/xhyve.c @@ -135,7 +135,7 @@ usage(int code) " -h: help\n" " -H: vmexit from the guest on hlt\n" " -l: LPC device configuration\n" - " -m: memory size in MB\n" + " -m: memory size in MB, may be suffixed with one of K, M, G or T\n" " -p: pin 'vcpu' to 'hostcpu'\n" " -P: vmexit from the guest on pause\n" " -s: PCI slot config\n" From a85426bced00107e3cd7628c86e0d83840d3f396 Mon Sep 17 00:00:00 2001 From: Camilo Aguilar Date: Wed, 23 Sep 2015 18:41:58 -0400 Subject: [PATCH 02/11] Adds option to create master/slave pseudoterminals Creates a master/slave pseudoterminal on behalf users when creating LPC devices and passing the option autopty: -l com1,autopty This change enables people to easily access virtual machines through serial terminal emulators on /dev/ttys* devices created by xhyve. When running xhyve with autopty, before booting the guest OS, it outputs the slave pty device path users can plug into using screen, minicom or the terminal emulator or their preference. Ex: screen /dev/ttys003 In order to get a shell on COM2, users need to make sure getty is invoked on the ttyS* created inside the guest OS. If using autopty on COM1, getty is automatically invoked in most cases. --- src/uart_emul.c | 57 ++++++++++++++++++++++++++++++++++--------------- 1 file changed, 40 insertions(+), 17 deletions(-) diff --git a/src/uart_emul.c b/src/uart_emul.c index 73021d0..0d19acb 100644 --- a/src/uart_emul.c +++ b/src/uart_emul.c @@ -90,6 +90,7 @@ struct fifo { struct ttyfd { bool opened; int fd; /* tty device file descriptor */ + char *name; /* slave pty name when using autopty*/ struct termios tio_orig, tio_new; /* I/O Terminals */ }; @@ -330,11 +331,11 @@ uart_drain(int fd, enum ev_type ev, void *arg) struct uart_softc *sc; int ch; - sc = arg; + sc = arg; assert(fd == sc->tty.fd); assert(ev == EVF_READ); - + /* * This routine is called in the context of the mevent thread * to take out the softc lock to protect against concurrent @@ -362,7 +363,7 @@ uart_write(struct uart_softc *sc, int offset, uint8_t value) uint8_t msr; pthread_mutex_lock(&sc->mtx); - + /* * Take care of the special case DLAB accesses first */ @@ -371,7 +372,7 @@ uart_write(struct uart_softc *sc, int offset, uint8_t value) sc->dll = value; goto done; } - + if (offset == REG_DLH) { sc->dlh = value; goto done; @@ -501,7 +502,7 @@ uart_read(struct uart_softc *sc, int offset) reg = sc->dll; goto done; } - + if (offset == REG_DLH) { reg = sc->dlh; goto done; @@ -519,7 +520,7 @@ uart_read(struct uart_softc *sc, int offset) iir = (sc->fcr & FCR_ENABLE) ? IIR_FIFO_MASK : 0; intr_reason = (uint8_t) uart_intr_reason(sc); - + /* * Deal with side effects of reading the IIR register */ @@ -623,7 +624,7 @@ uart_tty_backend(struct uart_softc *sc, const char *opts) sc->tty.opened = true; retval = 0; } - + return (retval); } @@ -631,27 +632,49 @@ int uart_set_backend(struct uart_softc *sc, const char *opts) { int retval; + int ptyfd; + char *ptyname; retval = -1; if (opts == NULL) return (0); - if (strcmp("stdio", opts) == 0) { - if (!uart_stdio) { - sc->tty.fd = STDIN_FILENO; - sc->tty.opened = true; - uart_stdio = true; - retval = 0; + if (strcmp("stdio", opts) == 0 && !uart_stdio) { + sc->tty.fd = STDIN_FILENO; + sc->tty.opened = true; + uart_stdio = true; + retval = fcntl(sc->tty.fd, F_SETFL, O_NONBLOCK); + } else if (strcmp("autopty", opts) == 0) { + if ((ptyfd = open("/dev/ptmx", O_RDWR | O_NONBLOCK)) == -1) { + fprintf(stderr, "error opening /dev/ptmx char device"); + return retval; } + + if ((ptyname = ptsname(ptyfd)) == NULL) { + perror("ptsname: error getting name for slave pseudo terminal"); + return retval; + } + + if ((retval = grantpt(ptyfd)) == -1) { + perror("error setting up ownership and permissions on slave pseudo terminal"); + return retval; + } + + if ((retval = unlockpt(ptyfd)) == -1) { + perror("error unlocking slave pseudo terminal, to allow its usage"); + return retval; + } + + fprintf(stdout, "Hook up a terminal emulator to %s in order too access your VM\n", ptyname); + sc->tty.fd = ptyfd; + sc->tty.name = ptyname; + sc->tty.opened = true; + retval = 0; } else if (uart_tty_backend(sc, opts) == 0) { retval = 0; } - /* Make the backend file descriptor non-blocking */ - if (retval == 0) - retval = fcntl(sc->tty.fd, F_SETFL, O_NONBLOCK); - if (retval == 0) uart_opentty(sc); From b0f41b066b90e7f9338a9284144707237a032dd1 Mon Sep 17 00:00:00 2001 From: Camilo Aguilar Date: Wed, 23 Sep 2015 19:24:34 -0400 Subject: [PATCH 03/11] Mentions autopty and stdio in CLI usage --- src/uart_emul.c | 2 +- src/xhyve.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/uart_emul.c b/src/uart_emul.c index 0d19acb..b4a40cc 100644 --- a/src/uart_emul.c +++ b/src/uart_emul.c @@ -666,7 +666,7 @@ uart_set_backend(struct uart_softc *sc, const char *opts) return retval; } - fprintf(stdout, "Hook up a terminal emulator to %s in order too access your VM\n", ptyname); + fprintf(stdout, "Hook up a terminal emulator to %s in order to access your VM\n", ptyname); sc->tty.fd = ptyfd; sc->tty.name = ptyname; sc->tty.opened = true; diff --git a/src/xhyve.c b/src/xhyve.c index 97fd41f..a905881 100644 --- a/src/xhyve.c +++ b/src/xhyve.c @@ -134,7 +134,7 @@ usage(int code) " -g: gdb port\n" " -h: help\n" " -H: vmexit from the guest on hlt\n" - " -l: LPC device configuration\n" + " -l: LPC device configuration. Ex: -l com1,stdio -l com2,autopty -l com2,/dev/myownpty\n" " -m: memory size in MB\n" " -p: pin 'vcpu' to 'hostcpu'\n" " -P: vmexit from the guest on pause\n" From d6a61cf079d469e300ff3def412440d57361c827 Mon Sep 17 00:00:00 2001 From: Jeremy Huddleston Sequoia Date: Sat, 14 Nov 2015 12:18:01 -0800 Subject: [PATCH 04/11] Fix a build failure in dbgport when using clang modules xhyve/src/dbgport.c:51:27: error: redefinition of 'sin' as different kind of symbol static struct sockaddr_in sin; ^ In module 'Darwin' imported from xhyve/src/dbgport.c:30: /usr/include/math.h:343:15: note: previous definition is here extern double sin(double); ^ xhyve/src/dbgport.c:126:2: warning: implicitly declaring library function 'sin' with type 'double (double)' sin.sin_len = sizeof(sin); ^ xhyve/src/dbgport.c:126:2: note: include the header or explicitly provide a declaration for 'sin' Signed-off-by: Jeremy Huddleston Sequoia --- src/dbgport.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/dbgport.c b/src/dbgport.c index 54c968d..9ec552e 100644 --- a/src/dbgport.c +++ b/src/dbgport.c @@ -48,7 +48,7 @@ static int listen_fd, conn_fd; -static struct sockaddr_in sin; +static struct sockaddr_in saddrin; static int dbg_handler(UNUSED int vcpu, int in, UNUSED int port, int bytes, uint32_t *eax, @@ -123,12 +123,12 @@ init_dbgport(int sport) exit(1); } - sin.sin_len = sizeof(sin); - sin.sin_family = AF_INET; - sin.sin_addr.s_addr = htonl(INADDR_ANY); - sin.sin_port = htons(sport); + saddrin.sin_len = sizeof(saddrin); + saddrin.sin_family = AF_INET; + saddrin.sin_addr.s_addr = htonl(INADDR_ANY); + saddrin.sin_port = htons(sport); - if (bind(listen_fd, (struct sockaddr *)&sin, sizeof(sin)) < 0) { + if (bind(listen_fd, (struct sockaddr *)&saddrin, sizeof(saddrin)) < 0) { perror("bind"); exit(1); } From 9db80b5f0ed035ef621f54a9270dd82456ad6bc6 Mon Sep 17 00:00:00 2001 From: Burke Libbey Date: Fri, 4 Dec 2015 14:25:28 -0500 Subject: [PATCH 05/11] Add -F flag to write manage a pidfile --- src/xhyve.c | 67 +++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 65 insertions(+), 2 deletions(-) diff --git a/src/xhyve.c b/src/xhyve.c index 97fd41f..5988060 100644 --- a/src/xhyve.c +++ b/src/xhyve.c @@ -31,6 +31,7 @@ #include #include #include +#include #include #include #include @@ -79,6 +80,7 @@ char *vmname = "vm"; int guest_ncpus; char *guest_uuid_str; +static char *pidfile; static int guest_vmexit_on_hlt, guest_vmexit_on_pause; static int virtio_msix = 1; @@ -124,13 +126,14 @@ usage(int code) { fprintf(stderr, - "Usage: %s [-behuwxACHPWY] [-c vcpus] [-g ] [-l ]\n" + "Usage: %s [-behuwxACHPWY] [-c vcpus] [-F ] [-g ] [-l ]\n" " %*s [-m mem] [-p vcpu:hostcpu] [-s ] [-U uuid] -f \n" " -A: create ACPI tables\n" " -c: # cpus (default 1)\n" " -C: include guest memory in core file\n" " -e: exit on unhandled I/O access\n" " -f: firmware\n" + " -F: pidfile\n" " -g: gdb port\n" " -h: help\n" " -H: vmexit from the guest on hlt\n" @@ -773,6 +776,57 @@ fail: return -1; } +static void +remove_pidfile() +{ + int error; + + if (pidfile == NULL) + return; + + error = unlink(pidfile); + if (error < 0) + fprintf(stderr, "Failed to remove pidfile\n"); +} + +static int +setup_pidfile() +{ + int f, error, pid; + char pid_str[21]; + + if (pidfile == NULL) + return 0; + + pid = getpid(); + + error = sprintf(pid_str, "%d", pid); + if (error < 0) + return -1; + + f = open(pidfile, O_CREAT|O_EXCL|O_WRONLY, 0644); + if (f < 0) + return -2; + + error = atexit(remove_pidfile); + if (error < 0) { + close(f); + remove_pidfile(); + return -3; + } + + if (0 > (write(f, (void*)pid_str, strlen(pid_str)))) { + close(f); + return -4; + } + + error = close(f); + if (error < 0) + return -5; + + return 0; +} + int main(int argc, char *argv[]) { @@ -792,7 +846,7 @@ main(int argc, char *argv[]) rtc_localtime = 1; fw = 0; - while ((c = getopt(argc, argv, "behvuwxACHPWY:f:g:c:s:m:l:U:")) != -1) { + while ((c = getopt(argc, argv, "behvuwxACHPWY:f:F:g:c:s:m:l:U:")) != -1) { switch (c) { case 'A': acpi = 1; @@ -813,6 +867,9 @@ main(int argc, char *argv[]) fw = 1; break; } + case 'F': + pidfile = optarg; + break; case 'g': gdb_port = atoi(optarg); break; @@ -901,6 +958,12 @@ main(int argc, char *argv[]) exit(1); } + error = setup_pidfile(); + if (error) { + fprintf(stderr, "pidfile error %d\n", error); + exit(1); + } + init_mem(); init_inout(); pci_irq_init(); From aadbaa8475f006d92682aeebc3231cf9a639ae67 Mon Sep 17 00:00:00 2001 From: Jeremy Huddleston Sequoia Date: Sat, 14 Nov 2015 11:21:48 -0800 Subject: [PATCH 06/11] Initial Xcode Project for xhyve Signed-off-by: Jeremy Huddleston Sequoia --- .gitignore | 10 +- src/xhyve-Info.plist | 18 + src/xhyve-entitlements.plist | 10 + xcconfigs/common.xcconfig | 51 +++ xcconfigs/common_asan.xcconfig | 10 + xcconfigs/common_debug.xcconfig | 16 + xcconfigs/xhyve.xcconfig | 12 + xcscripts/version.sh | 11 + xhyve.xcodeproj/.gitignore | 2 + xhyve.xcodeproj/project.pbxproj | 716 ++++++++++++++++++++++++++++++++ 10 files changed, 855 insertions(+), 1 deletion(-) create mode 100644 src/xhyve-Info.plist create mode 100644 src/xhyve-entitlements.plist create mode 100644 xcconfigs/common.xcconfig create mode 100644 xcconfigs/common_asan.xcconfig create mode 100644 xcconfigs/common_debug.xcconfig create mode 100644 xcconfigs/xhyve.xcconfig create mode 100755 xcscripts/version.sh create mode 100644 xhyve.xcodeproj/.gitignore create mode 100644 xhyve.xcodeproj/project.pbxproj diff --git a/.gitignore b/.gitignore index 84c048a..e4f0a8d 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,9 @@ -/build/ +build +DerivedData +.DS_Store +*~ +*.rej +*.orig +cscope.* +tags +TAGS diff --git a/src/xhyve-Info.plist b/src/xhyve-Info.plist new file mode 100644 index 0000000..0f97fd8 --- /dev/null +++ b/src/xhyve-Info.plist @@ -0,0 +1,18 @@ + + + + + CFBundleDevelopmentRegion + English + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleShortVersionString + $(CURRENT_PROJECT_VERSION) + CFBundleSignature + ???? + CFBundleVersion + $(CURRENT_PROJECT_VERSION) + + diff --git a/src/xhyve-entitlements.plist b/src/xhyve-entitlements.plist new file mode 100644 index 0000000..300716e --- /dev/null +++ b/src/xhyve-entitlements.plist @@ -0,0 +1,10 @@ + + + + + com.apple.security.network.client + + com.apple.security.network.server + + + diff --git a/xcconfigs/common.xcconfig b/xcconfigs/common.xcconfig new file mode 100644 index 0000000..a208ef9 --- /dev/null +++ b/xcconfigs/common.xcconfig @@ -0,0 +1,51 @@ +MACOSX_DEPLOYMENT_TARGET = 10.10 +CURRENT_PROJECT_VERSION = 0.2.0 + +INSTALL_PREFIX = /opt/xhyve + +CODE_SIGN_IDENTITY = - + +VERSIONING_SYSTEM = apple-generic + +DEBUG_INFORMATION_FORMAT = dwarf-with-dsym +PREBINDING = NO + +ENABLE_STRICT_OBJC_MSGSEND = YES +CLANG_ENABLE_OBJC_ARC = YES +CLANG_ENABLE_MODULES = YES + +GCC_C_LANGUAGE_STANDARD = gnu11 +GCC_NO_COMMON_BLOCKS = YES +GCC_OPTIMIZATION_LEVEL = s + +OTHER_CFLAGS_common = -fstrict-aliasing +OTHER_CFLAGS = $(inherited) $(OTHER_CFLAGS_common) +OTHER_LDFLAGS_common = +OTHER_LDFLAGS = $(inherited) $(OTHER_LDFLAGS_common) +GCC_PREPROCESSOR_DEFINITIONS_common = +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) $(GCC_PREPROCESSOR_DEFINITIONS_common) + +HEADER_SEARCH_PATHS = $(SRCROOT)/include $(inherited) + +WARNING_CFLAGS = -Weverything -Wall -Wno-error=deprecated -Wno-unknown-warning-option -Wno-reserved-id-macro -Wno-missing-variable-declarations -pedantic +GCC_TREAT_WARNINGS_AS_ERRORS = YES +CLANG_WARN_BOOL_CONVERSION = YES +CLANG_WARN_CONSTANT_CONVERSION = YES +CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES +CLANG_WARN_EMPTY_BODY = YES +CLANG_WARN_ENUM_CONVERSION = YES +CLANG_WARN_IMPLICIT_SIGN_CONVERSION = YES +CLANG_WARN_INT_CONVERSION = YES +CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR +CLANG_WARN__DUPLICATE_METHOD_MATCH = YES +GCC_WARN_64_TO_32_BIT_CONVERSION = YES +GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR +GCC_WARN_TYPECHECK_CALLS_TO_PRINTF = YES +GCC_WARN_UNDECLARED_SELECTOR = YES +GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE +GCC_WARN_UNUSED_FUNCTION = YES +GCC_WARN_UNUSED_LABEL = YES +GCC_WARN_UNUSED_PARAMETER = YES +GCC_WARN_UNUSED_VARIABLE = YES + +LLVM_LTO = YES diff --git a/xcconfigs/common_asan.xcconfig b/xcconfigs/common_asan.xcconfig new file mode 100644 index 0000000..6c7e2c9 --- /dev/null +++ b/xcconfigs/common_asan.xcconfig @@ -0,0 +1,10 @@ +#include "common_debug.xcconfig" + +OTHER_CFLAGS_asan = $(OTHER_CFLAGS_common) -fsanitize=address +OTHER_CFLAGS = $(inherited) $(OTHER_CFLAGS_asan) + +OTHER_LDFLAGS_asan = $(OTHER_LDFLAGS_debug) -fsanitize=address +OTHER_LDFLAGS = $(inherited) $(OTHER_LDFLAGS_asan) + +GCC_PREPROCESSOR_DEFINITIONS_asan = $(GCC_PREPROCESSOR_DEFINITIONS_debug) +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) $(GCC_PREPROCESSOR_DEFINITIONS_asan) diff --git a/xcconfigs/common_debug.xcconfig b/xcconfigs/common_debug.xcconfig new file mode 100644 index 0000000..617be63 --- /dev/null +++ b/xcconfigs/common_debug.xcconfig @@ -0,0 +1,16 @@ +#include "common.xcconfig" + +COPY_PHASE_STRIP = NO +STRIP_INSTALLED_PRODUCT = NO + +GCC_OPTIMIZATION_LEVEL = 0 + +OTHER_CFLAGS_debug = $(OTHER_CFLAGS_common) -fno-inline +OTHER_CFLAGS = $(inherited) $(OTHER_CFLAGS_debug) + +OTHER_LDFLAGS_debug = $(OTHER_LDFLAGS_common) +OTHER_LDFLAGS = $(inherited) $(OTHER_LDFLAGS_debug) + +GCC_PREPROCESSOR_DEFINITIONS_asan = $(GCC_PREPROCESSOR_DEFINITIONS_common) XHYVE_CONFIG_ASSERT +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) $(GCC_PREPROCESSOR_DEFINITIONS_common) + diff --git a/xcconfigs/xhyve.xcconfig b/xcconfigs/xhyve.xcconfig new file mode 100644 index 0000000..ea86120 --- /dev/null +++ b/xcconfigs/xhyve.xcconfig @@ -0,0 +1,12 @@ +CODE_SIGN_ENTITLEMENTS = src/xhyve-entitlements.plist +OTHER_CODE_SIGN_FLAGS = -o library + +PRODUCT_BUNDLE_IDENTIFIER = xyz.xhyve.xhyve + +INFOPLIST_FILE = src/xhyve-Info.plist +CREATE_INFOPLIST_SECTION_IN_BINARY = YES + +OTHER_CFLAGS = $(inherited) -include xhyve-version.h -fvisibility=hidden + +INSTALL_PATH = $(INSTALL_PREFIX)/bin +MAN_INSTALL_PATH = $(INSTALL_PREFIX)/share/man diff --git a/xcscripts/version.sh b/xcscripts/version.sh new file mode 100755 index 0000000..ce52a2c --- /dev/null +++ b/xcscripts/version.sh @@ -0,0 +1,11 @@ +#!/bin/bash + +set -e -x + +if [[ -d "${SRCROOT}/.git" ]] ; then + VERSION=$(GIT_DIR="${SRCROOT}"/.git git describe --abbrev=6 --dirty --always --tags) +else + VERSION="v${CURRENT_PROJECT_VERSION}" +fi + +echo "#define VERSION \"${VERSION}\"" > "${DERIVED_FILE_DIR}/xhyve-version.h" diff --git a/xhyve.xcodeproj/.gitignore b/xhyve.xcodeproj/.gitignore new file mode 100644 index 0000000..7f42cdd --- /dev/null +++ b/xhyve.xcodeproj/.gitignore @@ -0,0 +1,2 @@ +project.xcworkspace +xcuserdata diff --git a/xhyve.xcodeproj/project.pbxproj b/xhyve.xcodeproj/project.pbxproj new file mode 100644 index 0000000..ed9c052 --- /dev/null +++ b/xhyve.xcodeproj/project.pbxproj @@ -0,0 +1,716 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 46; + objects = { + +/* Begin PBXBuildFile section */ + 3F3FF9E91BF7C63A004C89A1 /* Hypervisor.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3F3FF9E81BF7C63A004C89A1 /* Hypervisor.framework */; }; + 3F3FFA5D1BF7C6A7004C89A1 /* acpitbl.c in Sources */ = {isa = PBXBuildFile; fileRef = 3F3FFA1F1BF7C6A7004C89A1 /* acpitbl.c */; }; + 3F3FFA5E1BF7C6A7004C89A1 /* atkbdc.c in Sources */ = {isa = PBXBuildFile; fileRef = 3F3FFA201BF7C6A7004C89A1 /* atkbdc.c */; }; + 3F3FFA5F1BF7C6A7004C89A1 /* block_if.c in Sources */ = {isa = PBXBuildFile; fileRef = 3F3FFA211BF7C6A7004C89A1 /* block_if.c */; }; + 3F3FFA601BF7C6A7004C89A1 /* consport.c in Sources */ = {isa = PBXBuildFile; fileRef = 3F3FFA221BF7C6A7004C89A1 /* consport.c */; }; + 3F3FFA611BF7C6A7004C89A1 /* dbgport.c in Sources */ = {isa = PBXBuildFile; fileRef = 3F3FFA231BF7C6A7004C89A1 /* dbgport.c */; }; + 3F3FFA621BF7C6A7004C89A1 /* fbsd.c in Sources */ = {isa = PBXBuildFile; fileRef = 3F3FFA261BF7C6A7004C89A1 /* fbsd.c */; }; + 3F3FFA631BF7C6A7004C89A1 /* kexec.c in Sources */ = {isa = PBXBuildFile; fileRef = 3F3FFA271BF7C6A7004C89A1 /* kexec.c */; }; + 3F3FFA641BF7C6A7004C89A1 /* inout.c in Sources */ = {isa = PBXBuildFile; fileRef = 3F3FFA281BF7C6A7004C89A1 /* inout.c */; }; + 3F3FFA651BF7C6A7004C89A1 /* ioapic.c in Sources */ = {isa = PBXBuildFile; fileRef = 3F3FFA291BF7C6A7004C89A1 /* ioapic.c */; }; + 3F3FFA661BF7C6A7004C89A1 /* md5c.c in Sources */ = {isa = PBXBuildFile; fileRef = 3F3FFA2A1BF7C6A7004C89A1 /* md5c.c */; }; + 3F3FFA671BF7C6A7004C89A1 /* mem.c in Sources */ = {isa = PBXBuildFile; fileRef = 3F3FFA2B1BF7C6A7004C89A1 /* mem.c */; }; + 3F3FFA681BF7C6A7004C89A1 /* mevent.c in Sources */ = {isa = PBXBuildFile; fileRef = 3F3FFA2C1BF7C6A7004C89A1 /* mevent.c */; }; + 3F3FFA6A1BF7C6A7004C89A1 /* mptbl.c in Sources */ = {isa = PBXBuildFile; fileRef = 3F3FFA2E1BF7C6A7004C89A1 /* mptbl.c */; }; + 3F3FFA6B1BF7C6A7004C89A1 /* pci_ahci.c in Sources */ = {isa = PBXBuildFile; fileRef = 3F3FFA2F1BF7C6A7004C89A1 /* pci_ahci.c */; }; + 3F3FFA6C1BF7C6A7004C89A1 /* pci_emul.c in Sources */ = {isa = PBXBuildFile; fileRef = 3F3FFA301BF7C6A7004C89A1 /* pci_emul.c */; }; + 3F3FFA6D1BF7C6A7004C89A1 /* pci_hostbridge.c in Sources */ = {isa = PBXBuildFile; fileRef = 3F3FFA311BF7C6A7004C89A1 /* pci_hostbridge.c */; }; + 3F3FFA6E1BF7C6A7004C89A1 /* pci_irq.c in Sources */ = {isa = PBXBuildFile; fileRef = 3F3FFA321BF7C6A7004C89A1 /* pci_irq.c */; }; + 3F3FFA6F1BF7C6A7004C89A1 /* pci_lpc.c in Sources */ = {isa = PBXBuildFile; fileRef = 3F3FFA331BF7C6A7004C89A1 /* pci_lpc.c */; }; + 3F3FFA701BF7C6A7004C89A1 /* pci_uart.c in Sources */ = {isa = PBXBuildFile; fileRef = 3F3FFA341BF7C6A7004C89A1 /* pci_uart.c */; }; + 3F3FFA711BF7C6A7004C89A1 /* pci_virtio_block.c in Sources */ = {isa = PBXBuildFile; fileRef = 3F3FFA351BF7C6A7004C89A1 /* pci_virtio_block.c */; }; + 3F3FFA721BF7C6A7004C89A1 /* pci_virtio_net_tap.c in Sources */ = {isa = PBXBuildFile; fileRef = 3F3FFA361BF7C6A7004C89A1 /* pci_virtio_net_tap.c */; }; + 3F3FFA731BF7C6A7004C89A1 /* pci_virtio_net_vmnet.c in Sources */ = {isa = PBXBuildFile; fileRef = 3F3FFA371BF7C6A7004C89A1 /* pci_virtio_net_vmnet.c */; }; + 3F3FFA741BF7C6A7004C89A1 /* pci_virtio_rnd.c in Sources */ = {isa = PBXBuildFile; fileRef = 3F3FFA381BF7C6A7004C89A1 /* pci_virtio_rnd.c */; }; + 3F3FFA751BF7C6A7004C89A1 /* pm.c in Sources */ = {isa = PBXBuildFile; fileRef = 3F3FFA391BF7C6A7004C89A1 /* pm.c */; }; + 3F3FFA761BF7C6A7004C89A1 /* post.c in Sources */ = {isa = PBXBuildFile; fileRef = 3F3FFA3A1BF7C6A7004C89A1 /* post.c */; }; + 3F3FFA771BF7C6A7004C89A1 /* rtc.c in Sources */ = {isa = PBXBuildFile; fileRef = 3F3FFA3B1BF7C6A7004C89A1 /* rtc.c */; }; + 3F3FFA781BF7C6A7004C89A1 /* smbiostbl.c in Sources */ = {isa = PBXBuildFile; fileRef = 3F3FFA3C1BF7C6A7004C89A1 /* smbiostbl.c */; }; + 3F3FFA791BF7C6A7004C89A1 /* task_switch.c in Sources */ = {isa = PBXBuildFile; fileRef = 3F3FFA3D1BF7C6A7004C89A1 /* task_switch.c */; }; + 3F3FFA7A1BF7C6A7004C89A1 /* uart_emul.c in Sources */ = {isa = PBXBuildFile; fileRef = 3F3FFA3E1BF7C6A7004C89A1 /* uart_emul.c */; }; + 3F3FFA7B1BF7C6A7004C89A1 /* virtio.c in Sources */ = {isa = PBXBuildFile; fileRef = 3F3FFA3F1BF7C6A7004C89A1 /* virtio.c */; }; + 3F3FFA7C1BF7C6A7004C89A1 /* vmcs.c in Sources */ = {isa = PBXBuildFile; fileRef = 3F3FFA421BF7C6A7004C89A1 /* vmcs.c */; }; + 3F3FFA7D1BF7C6A7004C89A1 /* vmx.c in Sources */ = {isa = PBXBuildFile; fileRef = 3F3FFA431BF7C6A7004C89A1 /* vmx.c */; }; + 3F3FFA7E1BF7C6A7004C89A1 /* vmx_msr.c in Sources */ = {isa = PBXBuildFile; fileRef = 3F3FFA441BF7C6A7004C89A1 /* vmx_msr.c */; }; + 3F3FFA7F1BF7C6A7004C89A1 /* vatpic.c in Sources */ = {isa = PBXBuildFile; fileRef = 3F3FFA461BF7C6A7004C89A1 /* vatpic.c */; }; + 3F3FFA801BF7C6A7004C89A1 /* vatpit.c in Sources */ = {isa = PBXBuildFile; fileRef = 3F3FFA471BF7C6A7004C89A1 /* vatpit.c */; }; + 3F3FFA811BF7C6A7004C89A1 /* vhpet.c in Sources */ = {isa = PBXBuildFile; fileRef = 3F3FFA481BF7C6A7004C89A1 /* vhpet.c */; }; + 3F3FFA821BF7C6A7004C89A1 /* vioapic.c in Sources */ = {isa = PBXBuildFile; fileRef = 3F3FFA491BF7C6A7004C89A1 /* vioapic.c */; }; + 3F3FFA831BF7C6A7004C89A1 /* vlapic.c in Sources */ = {isa = PBXBuildFile; fileRef = 3F3FFA4A1BF7C6A7004C89A1 /* vlapic.c */; }; + 3F3FFA841BF7C6A7004C89A1 /* vpmtmr.c in Sources */ = {isa = PBXBuildFile; fileRef = 3F3FFA4B1BF7C6A7004C89A1 /* vpmtmr.c */; }; + 3F3FFA851BF7C6A7004C89A1 /* vrtc.c in Sources */ = {isa = PBXBuildFile; fileRef = 3F3FFA4C1BF7C6A7004C89A1 /* vrtc.c */; }; + 3F3FFA861BF7C6A7004C89A1 /* vmm.c in Sources */ = {isa = PBXBuildFile; fileRef = 3F3FFA4D1BF7C6A7004C89A1 /* vmm.c */; }; + 3F3FFA871BF7C6A7004C89A1 /* vmm_api.c in Sources */ = {isa = PBXBuildFile; fileRef = 3F3FFA4E1BF7C6A7004C89A1 /* vmm_api.c */; }; + 3F3FFA881BF7C6A7004C89A1 /* vmm_callout.c in Sources */ = {isa = PBXBuildFile; fileRef = 3F3FFA4F1BF7C6A7004C89A1 /* vmm_callout.c */; }; + 3F3FFA891BF7C6A7004C89A1 /* vmm_host.c in Sources */ = {isa = PBXBuildFile; fileRef = 3F3FFA501BF7C6A7004C89A1 /* vmm_host.c */; }; + 3F3FFA8A1BF7C6A7004C89A1 /* vmm_instruction_emul.c in Sources */ = {isa = PBXBuildFile; fileRef = 3F3FFA511BF7C6A7004C89A1 /* vmm_instruction_emul.c */; }; + 3F3FFA8B1BF7C6A7004C89A1 /* vmm_ioport.c in Sources */ = {isa = PBXBuildFile; fileRef = 3F3FFA521BF7C6A7004C89A1 /* vmm_ioport.c */; }; + 3F3FFA8C1BF7C6A7004C89A1 /* vmm_lapic.c in Sources */ = {isa = PBXBuildFile; fileRef = 3F3FFA531BF7C6A7004C89A1 /* vmm_lapic.c */; }; + 3F3FFA8D1BF7C6A7004C89A1 /* vmm_mem.c in Sources */ = {isa = PBXBuildFile; fileRef = 3F3FFA541BF7C6A7004C89A1 /* vmm_mem.c */; }; + 3F3FFA8E1BF7C6A7004C89A1 /* vmm_stat.c in Sources */ = {isa = PBXBuildFile; fileRef = 3F3FFA551BF7C6A7004C89A1 /* vmm_stat.c */; }; + 3F3FFA8F1BF7C6A7004C89A1 /* vmm_util.c in Sources */ = {isa = PBXBuildFile; fileRef = 3F3FFA561BF7C6A7004C89A1 /* vmm_util.c */; }; + 3F3FFA901BF7C6A7004C89A1 /* x86.c in Sources */ = {isa = PBXBuildFile; fileRef = 3F3FFA571BF7C6A7004C89A1 /* x86.c */; }; + 3F3FFA911BF7C6A7004C89A1 /* xhyve.c in Sources */ = {isa = PBXBuildFile; fileRef = 3F3FFA5A1BF7C6A7004C89A1 /* xhyve.c */; }; + 3F3FFA921BF7C6A7004C89A1 /* xmsr.c in Sources */ = {isa = PBXBuildFile; fileRef = 3F3FFA5B1BF7C6A7004C89A1 /* xmsr.c */; }; + 3F3FFA971BF7CC0E004C89A1 /* xhyve.1 in Install Man Pages */ = {isa = PBXBuildFile; fileRef = 3F3FF9E41BF7C5DC004C89A1 /* xhyve.1 */; }; +/* End PBXBuildFile section */ + +/* Begin PBXCopyFilesBuildPhase section */ + 3F1934901BF7C0D40099CC46 /* Install Man Pages */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = "$(MAN_INSTALL_PATH)/man1"; + dstSubfolderSpec = 0; + files = ( + 3F3FFA971BF7CC0E004C89A1 /* xhyve.1 in Install Man Pages */, + ); + name = "Install Man Pages"; + runOnlyForDeploymentPostprocessing = 1; + }; +/* End PBXCopyFilesBuildPhase section */ + +/* Begin PBXFileReference section */ + 3F1934921BF7C0D40099CC46 /* xhyve */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = xhyve; sourceTree = BUILT_PRODUCTS_DIR; }; + 3F3FF9E01BF7C5D5004C89A1 /* common.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = common.xcconfig; sourceTree = ""; }; + 3F3FF9E11BF7C5D5004C89A1 /* common_asan.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = common_asan.xcconfig; sourceTree = ""; }; + 3F3FF9E21BF7C5D5004C89A1 /* common_debug.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = common_debug.xcconfig; sourceTree = ""; }; + 3F3FF9E31BF7C5D5004C89A1 /* xhyve.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = xhyve.xcconfig; sourceTree = ""; }; + 3F3FF9E41BF7C5DC004C89A1 /* xhyve.1 */ = {isa = PBXFileReference; lastKnownFileType = text.man; path = xhyve.1; sourceTree = SOURCE_ROOT; }; + 3F3FF9E61BF7C5F9004C89A1 /* README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; }; + 3F3FF9E81BF7C63A004C89A1 /* Hypervisor.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Hypervisor.framework; path = /System/Library/Frameworks/Hypervisor.framework; sourceTree = SDKROOT; }; + 3F3FFA1E1BF7C6A7004C89A1 /* acpi.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = acpi.c; sourceTree = ""; }; + 3F3FFA1F1BF7C6A7004C89A1 /* acpitbl.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = acpitbl.c; sourceTree = ""; }; + 3F3FFA201BF7C6A7004C89A1 /* atkbdc.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = atkbdc.c; sourceTree = ""; }; + 3F3FFA211BF7C6A7004C89A1 /* block_if.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = block_if.c; sourceTree = ""; }; + 3F3FFA221BF7C6A7004C89A1 /* consport.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = consport.c; sourceTree = ""; }; + 3F3FFA231BF7C6A7004C89A1 /* dbgport.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = dbgport.c; sourceTree = ""; }; + 3F3FFA241BF7C6A7004C89A1 /* dsdt.asl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = dsdt.asl; sourceTree = ""; }; + 3F3FFA261BF7C6A7004C89A1 /* fbsd.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = fbsd.c; sourceTree = ""; }; + 3F3FFA271BF7C6A7004C89A1 /* kexec.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = kexec.c; sourceTree = ""; }; + 3F3FFA281BF7C6A7004C89A1 /* inout.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = inout.c; sourceTree = ""; }; + 3F3FFA291BF7C6A7004C89A1 /* ioapic.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ioapic.c; sourceTree = ""; }; + 3F3FFA2A1BF7C6A7004C89A1 /* md5c.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = md5c.c; sourceTree = ""; }; + 3F3FFA2B1BF7C6A7004C89A1 /* mem.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = mem.c; sourceTree = ""; }; + 3F3FFA2C1BF7C6A7004C89A1 /* mevent.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = mevent.c; sourceTree = ""; }; + 3F3FFA2D1BF7C6A7004C89A1 /* mevent_test.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = mevent_test.c; sourceTree = ""; }; + 3F3FFA2E1BF7C6A7004C89A1 /* mptbl.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = mptbl.c; sourceTree = ""; }; + 3F3FFA2F1BF7C6A7004C89A1 /* pci_ahci.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = pci_ahci.c; sourceTree = ""; }; + 3F3FFA301BF7C6A7004C89A1 /* pci_emul.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = pci_emul.c; sourceTree = ""; }; + 3F3FFA311BF7C6A7004C89A1 /* pci_hostbridge.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = pci_hostbridge.c; sourceTree = ""; }; + 3F3FFA321BF7C6A7004C89A1 /* pci_irq.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = pci_irq.c; sourceTree = ""; }; + 3F3FFA331BF7C6A7004C89A1 /* pci_lpc.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = pci_lpc.c; sourceTree = ""; }; + 3F3FFA341BF7C6A7004C89A1 /* pci_uart.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = pci_uart.c; sourceTree = ""; }; + 3F3FFA351BF7C6A7004C89A1 /* pci_virtio_block.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = pci_virtio_block.c; sourceTree = ""; }; + 3F3FFA361BF7C6A7004C89A1 /* pci_virtio_net_tap.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = pci_virtio_net_tap.c; sourceTree = ""; }; + 3F3FFA371BF7C6A7004C89A1 /* pci_virtio_net_vmnet.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = pci_virtio_net_vmnet.c; sourceTree = ""; }; + 3F3FFA381BF7C6A7004C89A1 /* pci_virtio_rnd.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = pci_virtio_rnd.c; sourceTree = ""; }; + 3F3FFA391BF7C6A7004C89A1 /* pm.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = pm.c; sourceTree = ""; }; + 3F3FFA3A1BF7C6A7004C89A1 /* post.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = post.c; sourceTree = ""; }; + 3F3FFA3B1BF7C6A7004C89A1 /* rtc.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = rtc.c; sourceTree = ""; }; + 3F3FFA3C1BF7C6A7004C89A1 /* smbiostbl.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = smbiostbl.c; sourceTree = ""; }; + 3F3FFA3D1BF7C6A7004C89A1 /* task_switch.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = task_switch.c; sourceTree = ""; }; + 3F3FFA3E1BF7C6A7004C89A1 /* uart_emul.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = uart_emul.c; sourceTree = ""; }; + 3F3FFA3F1BF7C6A7004C89A1 /* virtio.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = virtio.c; sourceTree = ""; }; + 3F3FFA421BF7C6A7004C89A1 /* vmcs.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = vmcs.c; sourceTree = ""; }; + 3F3FFA431BF7C6A7004C89A1 /* vmx.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = vmx.c; sourceTree = ""; }; + 3F3FFA441BF7C6A7004C89A1 /* vmx_msr.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = vmx_msr.c; sourceTree = ""; }; + 3F3FFA461BF7C6A7004C89A1 /* vatpic.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = vatpic.c; sourceTree = ""; }; + 3F3FFA471BF7C6A7004C89A1 /* vatpit.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = vatpit.c; sourceTree = ""; }; + 3F3FFA481BF7C6A7004C89A1 /* vhpet.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = vhpet.c; sourceTree = ""; }; + 3F3FFA491BF7C6A7004C89A1 /* vioapic.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = vioapic.c; sourceTree = ""; }; + 3F3FFA4A1BF7C6A7004C89A1 /* vlapic.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = vlapic.c; sourceTree = ""; }; + 3F3FFA4B1BF7C6A7004C89A1 /* vpmtmr.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = vpmtmr.c; sourceTree = ""; }; + 3F3FFA4C1BF7C6A7004C89A1 /* vrtc.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = vrtc.c; sourceTree = ""; }; + 3F3FFA4D1BF7C6A7004C89A1 /* vmm.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = vmm.c; sourceTree = ""; }; + 3F3FFA4E1BF7C6A7004C89A1 /* vmm_api.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = vmm_api.c; sourceTree = ""; }; + 3F3FFA4F1BF7C6A7004C89A1 /* vmm_callout.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = vmm_callout.c; sourceTree = ""; }; + 3F3FFA501BF7C6A7004C89A1 /* vmm_host.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = vmm_host.c; sourceTree = ""; }; + 3F3FFA511BF7C6A7004C89A1 /* vmm_instruction_emul.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = vmm_instruction_emul.c; sourceTree = ""; }; + 3F3FFA521BF7C6A7004C89A1 /* vmm_ioport.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = vmm_ioport.c; sourceTree = ""; }; + 3F3FFA531BF7C6A7004C89A1 /* vmm_lapic.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = vmm_lapic.c; sourceTree = ""; }; + 3F3FFA541BF7C6A7004C89A1 /* vmm_mem.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = vmm_mem.c; sourceTree = ""; }; + 3F3FFA551BF7C6A7004C89A1 /* vmm_stat.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = vmm_stat.c; sourceTree = ""; }; + 3F3FFA561BF7C6A7004C89A1 /* vmm_util.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = vmm_util.c; sourceTree = ""; }; + 3F3FFA571BF7C6A7004C89A1 /* x86.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = x86.c; sourceTree = ""; }; + 3F3FFA581BF7C6A7004C89A1 /* xhyve-entitlements.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = "xhyve-entitlements.plist"; path = "src/xhyve-entitlements.plist"; sourceTree = ""; }; + 3F3FFA591BF7C6A7004C89A1 /* xhyve-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = "xhyve-Info.plist"; path = "src/xhyve-Info.plist"; sourceTree = ""; }; + 3F3FFA5A1BF7C6A7004C89A1 /* xhyve.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = xhyve.c; sourceTree = ""; }; + 3F3FFA5B1BF7C6A7004C89A1 /* xmsr.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = xmsr.c; sourceTree = ""; }; + 3F3FFA961BF7CBFF004C89A1 /* version.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = version.sh; sourceTree = ""; }; + 3FB6515C1BF7CD4500ED886F /* acpi.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = acpi.h; sourceTree = ""; }; + 3FB6515D1BF7CD4500ED886F /* ahci.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ahci.h; sourceTree = ""; }; + 3FB6515E1BF7CD4500ED886F /* block_if.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = block_if.h; sourceTree = ""; }; + 3FB6515F1BF7CD4500ED886F /* dbgport.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = dbgport.h; sourceTree = ""; }; + 3FB651611BF7CD4500ED886F /* fbsd.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = fbsd.h; sourceTree = ""; }; + 3FB651621BF7CD4500ED886F /* kexec.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = kexec.h; sourceTree = ""; }; + 3FB651631BF7CD4500ED886F /* inout.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = inout.h; sourceTree = ""; }; + 3FB651641BF7CD4500ED886F /* ioapic.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ioapic.h; sourceTree = ""; }; + 3FB651651BF7CD4500ED886F /* mem.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = mem.h; sourceTree = ""; }; + 3FB651661BF7CD4500ED886F /* mevent.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = mevent.h; sourceTree = ""; }; + 3FB651671BF7CD4500ED886F /* mptbl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = mptbl.h; sourceTree = ""; }; + 3FB651681BF7CD4500ED886F /* pci_emul.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pci_emul.h; sourceTree = ""; }; + 3FB651691BF7CD4500ED886F /* pci_irq.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pci_irq.h; sourceTree = ""; }; + 3FB6516A1BF7CD4500ED886F /* pci_lpc.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pci_lpc.h; sourceTree = ""; }; + 3FB6516B1BF7CD4500ED886F /* rtc.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = rtc.h; sourceTree = ""; }; + 3FB6516C1BF7CD4500ED886F /* smbiostbl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = smbiostbl.h; sourceTree = ""; }; + 3FB6516E1BF7CD4500ED886F /* acpi_hpet.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = acpi_hpet.h; sourceTree = ""; }; + 3FB6516F1BF7CD4500ED886F /* apicreg.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = apicreg.h; sourceTree = ""; }; + 3FB651701BF7CD4500ED886F /* ata.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ata.h; sourceTree = ""; }; + 3FB651711BF7CD4500ED886F /* atomic.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = atomic.h; sourceTree = ""; }; + 3FB651721BF7CD4500ED886F /* bitset.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = bitset.h; sourceTree = ""; }; + 3FB651731BF7CD4500ED886F /* cpuset.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = cpuset.h; sourceTree = ""; }; + 3FB651741BF7CD4500ED886F /* i8253reg.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = i8253reg.h; sourceTree = ""; }; + 3FB651751BF7CD4500ED886F /* i8259.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = i8259.h; sourceTree = ""; }; + 3FB651761BF7CD4500ED886F /* linker_set.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = linker_set.h; sourceTree = ""; }; + 3FB651771BF7CD4500ED886F /* md5.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = md5.h; sourceTree = ""; }; + 3FB651781BF7CD4500ED886F /* misc.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = misc.h; sourceTree = ""; }; + 3FB651791BF7CD4500ED886F /* mptable.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = mptable.h; sourceTree = ""; }; + 3FB6517A1BF7CD4500ED886F /* ns16550.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ns16550.h; sourceTree = ""; }; + 3FB6517B1BF7CD4500ED886F /* pcireg.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pcireg.h; sourceTree = ""; }; + 3FB6517C1BF7CD4500ED886F /* psl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = psl.h; sourceTree = ""; }; + 3FB6517D1BF7CD4500ED886F /* rtc.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = rtc.h; sourceTree = ""; }; + 3FB6517E1BF7CD4500ED886F /* segments.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = segments.h; sourceTree = ""; }; + 3FB6517F1BF7CD4500ED886F /* specialreg.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = specialreg.h; sourceTree = ""; }; + 3FB651801BF7CD4500ED886F /* timerreg.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = timerreg.h; sourceTree = ""; }; + 3FB651811BF7CD4500ED886F /* tree.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = tree.h; sourceTree = ""; }; + 3FB651821BF7CD4500ED886F /* uuid.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = uuid.h; sourceTree = ""; }; + 3FB651831BF7CD4500ED886F /* uart_emul.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = uart_emul.h; sourceTree = ""; }; + 3FB651841BF7CD4500ED886F /* virtio.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = virtio.h; sourceTree = ""; }; + 3FB651871BF7CD4500ED886F /* vmcs.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vmcs.h; sourceTree = ""; }; + 3FB651881BF7CD4500ED886F /* vmx.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vmx.h; sourceTree = ""; }; + 3FB651891BF7CD4500ED886F /* vmx_controls.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vmx_controls.h; sourceTree = ""; }; + 3FB6518A1BF7CD4500ED886F /* vmx_msr.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vmx_msr.h; sourceTree = ""; }; + 3FB6518C1BF7CD4500ED886F /* vatpic.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vatpic.h; sourceTree = ""; }; + 3FB6518D1BF7CD4500ED886F /* vatpit.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vatpit.h; sourceTree = ""; }; + 3FB6518E1BF7CD4500ED886F /* vhpet.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vhpet.h; sourceTree = ""; }; + 3FB6518F1BF7CD4500ED886F /* vioapic.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vioapic.h; sourceTree = ""; }; + 3FB651901BF7CD4500ED886F /* vlapic.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vlapic.h; sourceTree = ""; }; + 3FB651911BF7CD4500ED886F /* vlapic_priv.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vlapic_priv.h; sourceTree = ""; }; + 3FB651921BF7CD4500ED886F /* vpmtmr.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vpmtmr.h; sourceTree = ""; }; + 3FB651931BF7CD4500ED886F /* vrtc.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vrtc.h; sourceTree = ""; }; + 3FB651941BF7CD4500ED886F /* vmm.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vmm.h; sourceTree = ""; }; + 3FB651951BF7CD4500ED886F /* vmm_api.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vmm_api.h; sourceTree = ""; }; + 3FB651961BF7CD4500ED886F /* vmm_callout.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vmm_callout.h; sourceTree = ""; }; + 3FB651971BF7CD4500ED886F /* vmm_common.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vmm_common.h; sourceTree = ""; }; + 3FB651981BF7CD4500ED886F /* vmm_host.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vmm_host.h; sourceTree = ""; }; + 3FB651991BF7CD4500ED886F /* vmm_instruction_emul.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vmm_instruction_emul.h; sourceTree = ""; }; + 3FB6519A1BF7CD4500ED886F /* vmm_ioport.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vmm_ioport.h; sourceTree = ""; }; + 3FB6519B1BF7CD4500ED886F /* vmm_ktr.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vmm_ktr.h; sourceTree = ""; }; + 3FB6519C1BF7CD4500ED886F /* vmm_lapic.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vmm_lapic.h; sourceTree = ""; }; + 3FB6519D1BF7CD4500ED886F /* vmm_mem.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vmm_mem.h; sourceTree = ""; }; + 3FB6519E1BF7CD4500ED886F /* vmm_stat.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vmm_stat.h; sourceTree = ""; }; + 3FB6519F1BF7CD4500ED886F /* vmm_util.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vmm_util.h; sourceTree = ""; }; + 3FB651A01BF7CD4500ED886F /* x86.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = x86.h; sourceTree = ""; }; + 3FB651A11BF7CD4500ED886F /* xhyve.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = xhyve.h; sourceTree = ""; }; + 3FB651A21BF7CD4500ED886F /* xmsr.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = xmsr.h; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 3F19348F1BF7C0D40099CC46 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 3F3FF9E91BF7C63A004C89A1 /* Hypervisor.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 3F1934891BF7C0D40099CC46 = { + isa = PBXGroup; + children = ( + 3FB6515A1BF7CD4500ED886F /* include */, + 3F3FFA1D1BF7C6A7004C89A1 /* src */, + 3F3FF9E51BF7C5ED004C89A1 /* Documentation */, + 3F3FF9E71BF7C5FF004C89A1 /* Build Support */, + 3F1934931BF7C0D40099CC46 /* Products */, + ); + sourceTree = ""; + }; + 3F1934931BF7C0D40099CC46 /* Products */ = { + isa = PBXGroup; + children = ( + 3F1934921BF7C0D40099CC46 /* xhyve */, + ); + name = Products; + sourceTree = ""; + }; + 3F3FF9DF1BF7C5D5004C89A1 /* xcconfigs */ = { + isa = PBXGroup; + children = ( + 3F3FFA951BF7CBFF004C89A1 /* xcscripts */, + 3F3FF9E01BF7C5D5004C89A1 /* common.xcconfig */, + 3F3FF9E11BF7C5D5004C89A1 /* common_asan.xcconfig */, + 3F3FF9E21BF7C5D5004C89A1 /* common_debug.xcconfig */, + 3F3FF9E31BF7C5D5004C89A1 /* xhyve.xcconfig */, + ); + path = xcconfigs; + sourceTree = ""; + }; + 3F3FF9E51BF7C5ED004C89A1 /* Documentation */ = { + isa = PBXGroup; + children = ( + 3F3FF9E61BF7C5F9004C89A1 /* README.md */, + 3F3FF9E41BF7C5DC004C89A1 /* xhyve.1 */, + ); + name = Documentation; + sourceTree = ""; + }; + 3F3FF9E71BF7C5FF004C89A1 /* Build Support */ = { + isa = PBXGroup; + children = ( + 3F3FFA581BF7C6A7004C89A1 /* xhyve-entitlements.plist */, + 3F3FFA591BF7C6A7004C89A1 /* xhyve-Info.plist */, + 3F3FF9EA1BF7C64C004C89A1 /* Linked Frameworks */, + 3F3FF9DF1BF7C5D5004C89A1 /* xcconfigs */, + ); + name = "Build Support"; + sourceTree = ""; + }; + 3F3FF9EA1BF7C64C004C89A1 /* Linked Frameworks */ = { + isa = PBXGroup; + children = ( + 3F3FF9E81BF7C63A004C89A1 /* Hypervisor.framework */, + ); + name = "Linked Frameworks"; + sourceTree = ""; + }; + 3F3FFA1D1BF7C6A7004C89A1 /* src */ = { + isa = PBXGroup; + children = ( + 3F3FFA251BF7C6A7004C89A1 /* firmware */, + 3F3FFA401BF7C6A7004C89A1 /* vmm */, + 3F3FFA1E1BF7C6A7004C89A1 /* acpi.c */, + 3F3FFA1F1BF7C6A7004C89A1 /* acpitbl.c */, + 3F3FFA201BF7C6A7004C89A1 /* atkbdc.c */, + 3F3FFA211BF7C6A7004C89A1 /* block_if.c */, + 3F3FFA221BF7C6A7004C89A1 /* consport.c */, + 3F3FFA231BF7C6A7004C89A1 /* dbgport.c */, + 3F3FFA241BF7C6A7004C89A1 /* dsdt.asl */, + 3F3FFA281BF7C6A7004C89A1 /* inout.c */, + 3F3FFA291BF7C6A7004C89A1 /* ioapic.c */, + 3F3FFA2A1BF7C6A7004C89A1 /* md5c.c */, + 3F3FFA2B1BF7C6A7004C89A1 /* mem.c */, + 3F3FFA2C1BF7C6A7004C89A1 /* mevent.c */, + 3F3FFA2D1BF7C6A7004C89A1 /* mevent_test.c */, + 3F3FFA2E1BF7C6A7004C89A1 /* mptbl.c */, + 3F3FFA2F1BF7C6A7004C89A1 /* pci_ahci.c */, + 3F3FFA301BF7C6A7004C89A1 /* pci_emul.c */, + 3F3FFA311BF7C6A7004C89A1 /* pci_hostbridge.c */, + 3F3FFA321BF7C6A7004C89A1 /* pci_irq.c */, + 3F3FFA331BF7C6A7004C89A1 /* pci_lpc.c */, + 3F3FFA341BF7C6A7004C89A1 /* pci_uart.c */, + 3F3FFA351BF7C6A7004C89A1 /* pci_virtio_block.c */, + 3F3FFA361BF7C6A7004C89A1 /* pci_virtio_net_tap.c */, + 3F3FFA371BF7C6A7004C89A1 /* pci_virtio_net_vmnet.c */, + 3F3FFA381BF7C6A7004C89A1 /* pci_virtio_rnd.c */, + 3F3FFA391BF7C6A7004C89A1 /* pm.c */, + 3F3FFA3A1BF7C6A7004C89A1 /* post.c */, + 3F3FFA3B1BF7C6A7004C89A1 /* rtc.c */, + 3F3FFA3C1BF7C6A7004C89A1 /* smbiostbl.c */, + 3F3FFA3D1BF7C6A7004C89A1 /* task_switch.c */, + 3F3FFA3E1BF7C6A7004C89A1 /* uart_emul.c */, + 3F3FFA3F1BF7C6A7004C89A1 /* virtio.c */, + 3F3FFA5A1BF7C6A7004C89A1 /* xhyve.c */, + 3F3FFA5B1BF7C6A7004C89A1 /* xmsr.c */, + ); + path = src; + sourceTree = ""; + }; + 3F3FFA251BF7C6A7004C89A1 /* firmware */ = { + isa = PBXGroup; + children = ( + 3F3FFA261BF7C6A7004C89A1 /* fbsd.c */, + 3F3FFA271BF7C6A7004C89A1 /* kexec.c */, + ); + path = firmware; + sourceTree = ""; + }; + 3F3FFA401BF7C6A7004C89A1 /* vmm */ = { + isa = PBXGroup; + children = ( + 3F3FFA411BF7C6A7004C89A1 /* intel */, + 3F3FFA451BF7C6A7004C89A1 /* io */, + 3F3FFA4D1BF7C6A7004C89A1 /* vmm.c */, + 3F3FFA4E1BF7C6A7004C89A1 /* vmm_api.c */, + 3F3FFA4F1BF7C6A7004C89A1 /* vmm_callout.c */, + 3F3FFA501BF7C6A7004C89A1 /* vmm_host.c */, + 3F3FFA511BF7C6A7004C89A1 /* vmm_instruction_emul.c */, + 3F3FFA521BF7C6A7004C89A1 /* vmm_ioport.c */, + 3F3FFA531BF7C6A7004C89A1 /* vmm_lapic.c */, + 3F3FFA541BF7C6A7004C89A1 /* vmm_mem.c */, + 3F3FFA551BF7C6A7004C89A1 /* vmm_stat.c */, + 3F3FFA561BF7C6A7004C89A1 /* vmm_util.c */, + 3F3FFA571BF7C6A7004C89A1 /* x86.c */, + ); + path = vmm; + sourceTree = ""; + }; + 3F3FFA411BF7C6A7004C89A1 /* intel */ = { + isa = PBXGroup; + children = ( + 3F3FFA421BF7C6A7004C89A1 /* vmcs.c */, + 3F3FFA431BF7C6A7004C89A1 /* vmx.c */, + 3F3FFA441BF7C6A7004C89A1 /* vmx_msr.c */, + ); + path = intel; + sourceTree = ""; + }; + 3F3FFA451BF7C6A7004C89A1 /* io */ = { + isa = PBXGroup; + children = ( + 3F3FFA461BF7C6A7004C89A1 /* vatpic.c */, + 3F3FFA471BF7C6A7004C89A1 /* vatpit.c */, + 3F3FFA481BF7C6A7004C89A1 /* vhpet.c */, + 3F3FFA491BF7C6A7004C89A1 /* vioapic.c */, + 3F3FFA4A1BF7C6A7004C89A1 /* vlapic.c */, + 3F3FFA4B1BF7C6A7004C89A1 /* vpmtmr.c */, + 3F3FFA4C1BF7C6A7004C89A1 /* vrtc.c */, + ); + path = io; + sourceTree = ""; + }; + 3F3FFA951BF7CBFF004C89A1 /* xcscripts */ = { + isa = PBXGroup; + children = ( + 3F3FFA961BF7CBFF004C89A1 /* version.sh */, + ); + path = xcscripts; + sourceTree = SOURCE_ROOT; + }; + 3FB6515A1BF7CD4500ED886F /* include */ = { + isa = PBXGroup; + children = ( + 3FB6515B1BF7CD4500ED886F /* xhyve */, + ); + path = include; + sourceTree = ""; + }; + 3FB6515B1BF7CD4500ED886F /* xhyve */ = { + isa = PBXGroup; + children = ( + 3FB6515C1BF7CD4500ED886F /* acpi.h */, + 3FB6515D1BF7CD4500ED886F /* ahci.h */, + 3FB6515E1BF7CD4500ED886F /* block_if.h */, + 3FB6515F1BF7CD4500ED886F /* dbgport.h */, + 3FB651601BF7CD4500ED886F /* firmware */, + 3FB651631BF7CD4500ED886F /* inout.h */, + 3FB651641BF7CD4500ED886F /* ioapic.h */, + 3FB651651BF7CD4500ED886F /* mem.h */, + 3FB651661BF7CD4500ED886F /* mevent.h */, + 3FB651671BF7CD4500ED886F /* mptbl.h */, + 3FB651681BF7CD4500ED886F /* pci_emul.h */, + 3FB651691BF7CD4500ED886F /* pci_irq.h */, + 3FB6516A1BF7CD4500ED886F /* pci_lpc.h */, + 3FB6516B1BF7CD4500ED886F /* rtc.h */, + 3FB6516C1BF7CD4500ED886F /* smbiostbl.h */, + 3FB6516D1BF7CD4500ED886F /* support */, + 3FB651831BF7CD4500ED886F /* uart_emul.h */, + 3FB651841BF7CD4500ED886F /* virtio.h */, + 3FB651851BF7CD4500ED886F /* vmm */, + 3FB651A11BF7CD4500ED886F /* xhyve.h */, + 3FB651A21BF7CD4500ED886F /* xmsr.h */, + ); + path = xhyve; + sourceTree = ""; + }; + 3FB651601BF7CD4500ED886F /* firmware */ = { + isa = PBXGroup; + children = ( + 3FB651611BF7CD4500ED886F /* fbsd.h */, + 3FB651621BF7CD4500ED886F /* kexec.h */, + ); + path = firmware; + sourceTree = ""; + }; + 3FB6516D1BF7CD4500ED886F /* support */ = { + isa = PBXGroup; + children = ( + 3FB6516E1BF7CD4500ED886F /* acpi_hpet.h */, + 3FB6516F1BF7CD4500ED886F /* apicreg.h */, + 3FB651701BF7CD4500ED886F /* ata.h */, + 3FB651711BF7CD4500ED886F /* atomic.h */, + 3FB651721BF7CD4500ED886F /* bitset.h */, + 3FB651731BF7CD4500ED886F /* cpuset.h */, + 3FB651741BF7CD4500ED886F /* i8253reg.h */, + 3FB651751BF7CD4500ED886F /* i8259.h */, + 3FB651761BF7CD4500ED886F /* linker_set.h */, + 3FB651771BF7CD4500ED886F /* md5.h */, + 3FB651781BF7CD4500ED886F /* misc.h */, + 3FB651791BF7CD4500ED886F /* mptable.h */, + 3FB6517A1BF7CD4500ED886F /* ns16550.h */, + 3FB6517B1BF7CD4500ED886F /* pcireg.h */, + 3FB6517C1BF7CD4500ED886F /* psl.h */, + 3FB6517D1BF7CD4500ED886F /* rtc.h */, + 3FB6517E1BF7CD4500ED886F /* segments.h */, + 3FB6517F1BF7CD4500ED886F /* specialreg.h */, + 3FB651801BF7CD4500ED886F /* timerreg.h */, + 3FB651811BF7CD4500ED886F /* tree.h */, + 3FB651821BF7CD4500ED886F /* uuid.h */, + ); + path = support; + sourceTree = ""; + }; + 3FB651851BF7CD4500ED886F /* vmm */ = { + isa = PBXGroup; + children = ( + 3FB651861BF7CD4500ED886F /* intel */, + 3FB6518B1BF7CD4500ED886F /* io */, + 3FB651941BF7CD4500ED886F /* vmm.h */, + 3FB651951BF7CD4500ED886F /* vmm_api.h */, + 3FB651961BF7CD4500ED886F /* vmm_callout.h */, + 3FB651971BF7CD4500ED886F /* vmm_common.h */, + 3FB651981BF7CD4500ED886F /* vmm_host.h */, + 3FB651991BF7CD4500ED886F /* vmm_instruction_emul.h */, + 3FB6519A1BF7CD4500ED886F /* vmm_ioport.h */, + 3FB6519B1BF7CD4500ED886F /* vmm_ktr.h */, + 3FB6519C1BF7CD4500ED886F /* vmm_lapic.h */, + 3FB6519D1BF7CD4500ED886F /* vmm_mem.h */, + 3FB6519E1BF7CD4500ED886F /* vmm_stat.h */, + 3FB6519F1BF7CD4500ED886F /* vmm_util.h */, + 3FB651A01BF7CD4500ED886F /* x86.h */, + ); + path = vmm; + sourceTree = ""; + }; + 3FB651861BF7CD4500ED886F /* intel */ = { + isa = PBXGroup; + children = ( + 3FB651871BF7CD4500ED886F /* vmcs.h */, + 3FB651881BF7CD4500ED886F /* vmx.h */, + 3FB651891BF7CD4500ED886F /* vmx_controls.h */, + 3FB6518A1BF7CD4500ED886F /* vmx_msr.h */, + ); + path = intel; + sourceTree = ""; + }; + 3FB6518B1BF7CD4500ED886F /* io */ = { + isa = PBXGroup; + children = ( + 3FB6518C1BF7CD4500ED886F /* vatpic.h */, + 3FB6518D1BF7CD4500ED886F /* vatpit.h */, + 3FB6518E1BF7CD4500ED886F /* vhpet.h */, + 3FB6518F1BF7CD4500ED886F /* vioapic.h */, + 3FB651901BF7CD4500ED886F /* vlapic.h */, + 3FB651911BF7CD4500ED886F /* vlapic_priv.h */, + 3FB651921BF7CD4500ED886F /* vpmtmr.h */, + 3FB651931BF7CD4500ED886F /* vrtc.h */, + ); + path = io; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 3F1934911BF7C0D40099CC46 /* xhyve */ = { + isa = PBXNativeTarget; + buildConfigurationList = 3F1934991BF7C0D40099CC46 /* Build configuration list for PBXNativeTarget "xhyve" */; + buildPhases = ( + 3F3FFA981BF7CC1F004C89A1 /* xhyve-version.h */, + 3F19348E1BF7C0D40099CC46 /* Sources */, + 3F19348F1BF7C0D40099CC46 /* Frameworks */, + 3F1934901BF7C0D40099CC46 /* Install Man Pages */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = xhyve; + productName = xhyve; + productReference = 3F1934921BF7C0D40099CC46 /* xhyve */; + productType = "com.apple.product-type.tool"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 3F19348A1BF7C0D40099CC46 /* Project object */ = { + isa = PBXProject; + attributes = { + LastUpgradeCheck = 0730; + ORGANIZATIONNAME = "Jeremy Sequoia"; + TargetAttributes = { + 3F1934911BF7C0D40099CC46 = { + CreatedOnToolsVersion = 7.3; + }; + }; + }; + buildConfigurationList = 3F19348D1BF7C0D40099CC46 /* Build configuration list for PBXProject "xhyve" */; + compatibilityVersion = "Xcode 3.2"; + developmentRegion = English; + hasScannedForEncodings = 0; + knownRegions = ( + en, + ); + mainGroup = 3F1934891BF7C0D40099CC46; + productRefGroup = 3F1934931BF7C0D40099CC46 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 3F1934911BF7C0D40099CC46 /* xhyve */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXShellScriptBuildPhase section */ + 3F3FFA981BF7CC1F004C89A1 /* xhyve-version.h */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = "xhyve-version.h"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/bash; + shellScript = "${SRCROOT}/xcscripts/version.sh"; + }; +/* End PBXShellScriptBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 3F19348E1BF7C0D40099CC46 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 3F3FFA751BF7C6A7004C89A1 /* pm.c in Sources */, + 3F3FFA721BF7C6A7004C89A1 /* pci_virtio_net_tap.c in Sources */, + 3F3FFA6F1BF7C6A7004C89A1 /* pci_lpc.c in Sources */, + 3F3FFA7C1BF7C6A7004C89A1 /* vmcs.c in Sources */, + 3F3FFA851BF7C6A7004C89A1 /* vrtc.c in Sources */, + 3F3FFA921BF7C6A7004C89A1 /* xmsr.c in Sources */, + 3F3FFA7A1BF7C6A7004C89A1 /* uart_emul.c in Sources */, + 3F3FFA8A1BF7C6A7004C89A1 /* vmm_instruction_emul.c in Sources */, + 3F3FFA841BF7C6A7004C89A1 /* vpmtmr.c in Sources */, + 3F3FFA801BF7C6A7004C89A1 /* vatpit.c in Sources */, + 3F3FFA901BF7C6A7004C89A1 /* x86.c in Sources */, + 3F3FFA631BF7C6A7004C89A1 /* kexec.c in Sources */, + 3F3FFA5F1BF7C6A7004C89A1 /* block_if.c in Sources */, + 3F3FFA8E1BF7C6A7004C89A1 /* vmm_stat.c in Sources */, + 3F3FFA7F1BF7C6A7004C89A1 /* vatpic.c in Sources */, + 3F3FFA651BF7C6A7004C89A1 /* ioapic.c in Sources */, + 3F3FFA781BF7C6A7004C89A1 /* smbiostbl.c in Sources */, + 3F3FFA621BF7C6A7004C89A1 /* fbsd.c in Sources */, + 3F3FFA5E1BF7C6A7004C89A1 /* atkbdc.c in Sources */, + 3F3FFA661BF7C6A7004C89A1 /* md5c.c in Sources */, + 3F3FFA6C1BF7C6A7004C89A1 /* pci_emul.c in Sources */, + 3F3FFA701BF7C6A7004C89A1 /* pci_uart.c in Sources */, + 3F3FFA7E1BF7C6A7004C89A1 /* vmx_msr.c in Sources */, + 3F3FFA5D1BF7C6A7004C89A1 /* acpitbl.c in Sources */, + 3F3FFA641BF7C6A7004C89A1 /* inout.c in Sources */, + 3F3FFA771BF7C6A7004C89A1 /* rtc.c in Sources */, + 3F3FFA8B1BF7C6A7004C89A1 /* vmm_ioport.c in Sources */, + 3F3FFA671BF7C6A7004C89A1 /* mem.c in Sources */, + 3F3FFA8F1BF7C6A7004C89A1 /* vmm_util.c in Sources */, + 3F3FFA791BF7C6A7004C89A1 /* task_switch.c in Sources */, + 3F3FFA6B1BF7C6A7004C89A1 /* pci_ahci.c in Sources */, + 3F3FFA6E1BF7C6A7004C89A1 /* pci_irq.c in Sources */, + 3F3FFA8D1BF7C6A7004C89A1 /* vmm_mem.c in Sources */, + 3F3FFA7D1BF7C6A7004C89A1 /* vmx.c in Sources */, + 3F3FFA7B1BF7C6A7004C89A1 /* virtio.c in Sources */, + 3F3FFA611BF7C6A7004C89A1 /* dbgport.c in Sources */, + 3F3FFA6A1BF7C6A7004C89A1 /* mptbl.c in Sources */, + 3F3FFA6D1BF7C6A7004C89A1 /* pci_hostbridge.c in Sources */, + 3F3FFA881BF7C6A7004C89A1 /* vmm_callout.c in Sources */, + 3F3FFA811BF7C6A7004C89A1 /* vhpet.c in Sources */, + 3F3FFA861BF7C6A7004C89A1 /* vmm.c in Sources */, + 3F3FFA911BF7C6A7004C89A1 /* xhyve.c in Sources */, + 3F3FFA831BF7C6A7004C89A1 /* vlapic.c in Sources */, + 3F3FFA741BF7C6A7004C89A1 /* pci_virtio_rnd.c in Sources */, + 3F3FFA761BF7C6A7004C89A1 /* post.c in Sources */, + 3F3FFA601BF7C6A7004C89A1 /* consport.c in Sources */, + 3F3FFA681BF7C6A7004C89A1 /* mevent.c in Sources */, + 3F3FFA8C1BF7C6A7004C89A1 /* vmm_lapic.c in Sources */, + 3F3FFA731BF7C6A7004C89A1 /* pci_virtio_net_vmnet.c in Sources */, + 3F3FFA891BF7C6A7004C89A1 /* vmm_host.c in Sources */, + 3F3FFA821BF7C6A7004C89A1 /* vioapic.c in Sources */, + 3F3FFA711BF7C6A7004C89A1 /* pci_virtio_block.c in Sources */, + 3F3FFA871BF7C6A7004C89A1 /* vmm_api.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin XCBuildConfiguration section */ + 3F1934971BF7C0D40099CC46 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 3F3FF9E21BF7C5D5004C89A1 /* common_debug.xcconfig */; + buildSettings = { + }; + name = Debug; + }; + 3F1934981BF7C0D40099CC46 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 3F3FF9E01BF7C5D5004C89A1 /* common.xcconfig */; + buildSettings = { + }; + name = Release; + }; + 3F19349A1BF7C0D40099CC46 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 3F3FF9E31BF7C5D5004C89A1 /* xhyve.xcconfig */; + buildSettings = { + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Debug; + }; + 3F19349B1BF7C0D40099CC46 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 3F3FF9E31BF7C5D5004C89A1 /* xhyve.xcconfig */; + buildSettings = { + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Release; + }; + 3F3FFA931BF7C7B1004C89A1 /* ASan */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 3F3FF9E11BF7C5D5004C89A1 /* common_asan.xcconfig */; + buildSettings = { + }; + name = ASan; + }; + 3F3FFA941BF7C7B1004C89A1 /* ASan */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 3F3FF9E31BF7C5D5004C89A1 /* xhyve.xcconfig */; + buildSettings = { + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = ASan; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 3F19348D1BF7C0D40099CC46 /* Build configuration list for PBXProject "xhyve" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 3F1934971BF7C0D40099CC46 /* Debug */, + 3F3FFA931BF7C7B1004C89A1 /* ASan */, + 3F1934981BF7C0D40099CC46 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 3F1934991BF7C0D40099CC46 /* Build configuration list for PBXNativeTarget "xhyve" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 3F19349A1BF7C0D40099CC46 /* Debug */, + 3F3FFA941BF7C7B1004C89A1 /* ASan */, + 3F19349B1BF7C0D40099CC46 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 3F19348A1BF7C0D40099CC46 /* Project object */; +} From 6d474f19e13eb16817c3ec3fdec9233bdceb8554 Mon Sep 17 00:00:00 2001 From: Burke Libbey Date: Fri, 18 Dec 2015 15:26:30 -0500 Subject: [PATCH 07/11] Only return one error code on failure from setup_pidfile --- src/xhyve.c | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/src/xhyve.c b/src/xhyve.c index 5988060..73b6f32 100644 --- a/src/xhyve.c +++ b/src/xhyve.c @@ -802,29 +802,33 @@ setup_pidfile() error = sprintf(pid_str, "%d", pid); if (error < 0) - return -1; + goto fail; f = open(pidfile, O_CREAT|O_EXCL|O_WRONLY, 0644); if (f < 0) - return -2; + goto fail; error = atexit(remove_pidfile); if (error < 0) { close(f); remove_pidfile(); - return -3; + goto fail; } if (0 > (write(f, (void*)pid_str, strlen(pid_str)))) { close(f); - return -4; + goto fail; } error = close(f); if (error < 0) - return -5; + goto fail; return 0; + +fail: + fprintf(stderr, "Failed to set up pidfile\n"); + return -1; } int From f5f2296913897864b720f9eeb25a2fbb5506e81b Mon Sep 17 00:00:00 2001 From: Jeremy Huddleston Sequoia Date: Fri, 18 Dec 2015 12:32:04 -0800 Subject: [PATCH 08/11] Squash a -Wformat-pedantic warning that was added in recent clang src/vmm/io/vhpet.c:294:60: error: format specifies type 'void *' but the argument has type 'struct vhpet *' [-Werror,-Wformat-pedantic] xhyve_abort("vhpet(%p) callout with counter disabled\n", vhpet); ~~ ^~~~~ In file included from src/vmm/io/vhpet.c:35: include/xhyve/support/misc.h:22:19: note: expanded from macro 'xhyve_abort' fprintf(stderr, __VA_ARGS__); \ ^ 1 error generated. Signed-off-by: Jeremy Huddleston Sequoia --- src/vmm/io/vhpet.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/vmm/io/vhpet.c b/src/vmm/io/vhpet.c index 1d81861..5ca1e4c 100644 --- a/src/vmm/io/vhpet.c +++ b/src/vmm/io/vhpet.c @@ -291,7 +291,7 @@ vhpet_handler(void *a) callout_deactivate(callout); if (!vhpet_counter_enabled(vhpet)) - xhyve_abort("vhpet(%p) callout with counter disabled\n", vhpet); + xhyve_abort("vhpet(%p) callout with counter disabled\n", (void *)vhpet); counter = vhpet_counter(vhpet, &now); vhpet_start_timer(vhpet, n, counter, now); From fa6edefef060c86f28d8988e1c2ef1729a523a3d Mon Sep 17 00:00:00 2001 From: Jeremy Huddleston Sequoia Date: Mon, 21 Dec 2015 11:07:27 -0800 Subject: [PATCH 09/11] Update the homepage URL in show_version() Signed-off-by: Jeremy Huddleston Sequoia --- src/xhyve.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/xhyve.c b/src/xhyve.c index 61d76b8..df3c885 100644 --- a/src/xhyve.c +++ b/src/xhyve.c @@ -160,7 +160,7 @@ show_version() fprintf(stderr, "%s: %s\n\n%s\n",progname, VERSION, "xhyve is a port of FreeBSD's bhyve hypervisor to OS X that\n" "works entirely in userspace and has no other dependencies.\n\n" - "Homepage: https://github.com/mist64/xhyve\n" + "Homepage: http://www.xhyve.xyz\n" "License: BSD\n"); exit(0); } From d9681ceee841fc52d9b3a1a4cb2812fd96597d0b Mon Sep 17 00:00:00 2001 From: Dale Hamel Date: Sun, 6 Dec 2015 10:16:23 -0500 Subject: [PATCH 10/11] Add option to print MAC address and exit MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - picked from https://github.com/mist64/xhyve/pull/79 and rebased Signed-off-by: António Meireles --- include/xhyve/xhyve.h | 1 + src/pci_virtio_net_vmnet.c | 8 ++++++++ src/xhyve.c | 10 ++++++++-- 3 files changed, 17 insertions(+), 2 deletions(-) diff --git a/include/xhyve/xhyve.h b/include/xhyve/xhyve.h index 4f85664..5464b2e 100644 --- a/include/xhyve/xhyve.h +++ b/include/xhyve/xhyve.h @@ -41,6 +41,7 @@ #define VMEXIT_ABORT (-1) extern int guest_ncpus; +extern int print_mac; extern char *guest_uuid_str; extern char *vmname; diff --git a/src/pci_virtio_net_vmnet.c b/src/pci_virtio_net_vmnet.c index a309cb1..b2620d7 100644 --- a/src/pci_virtio_net_vmnet.c +++ b/src/pci_virtio_net_vmnet.c @@ -722,6 +722,14 @@ pci_vtnet_init(struct pci_devinst *pi, UNUSED char *opts) return (-1); } + if (print_mac == 1) + { + printf("MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", + sc->vms->mac[0], sc->vms->mac[1], sc->vms->mac[2], + sc->vms->mac[3], sc->vms->mac[4], sc->vms->mac[5]); + exit(0); + } + sc->vsc_config.mac[0] = sc->vms->mac[0]; sc->vsc_config.mac[1] = sc->vms->mac[1]; sc->vsc_config.mac[2] = sc->vms->mac[2]; diff --git a/src/xhyve.c b/src/xhyve.c index df3c885..7e25097 100644 --- a/src/xhyve.c +++ b/src/xhyve.c @@ -79,6 +79,7 @@ extern int vmexit_task_switch(struct vm_exit *, int *vcpu); char *vmname = "vm"; int guest_ncpus; +int print_mac; char *guest_uuid_str; static char *pidfile; @@ -126,7 +127,7 @@ usage(int code) { fprintf(stderr, - "Usage: %s [-behuwxACHPWY] [-c vcpus] [-F ] [-g ] [-l ]\n" + "Usage: %s [-behuwxMACHPWY] [-c vcpus] [-F ] [-g ] [-l ]\n" " %*s [-m mem] [-p vcpu:hostcpu] [-s ] [-U uuid] -f \n" " -A: create ACPI tables\n" " -c: # cpus (default 1)\n" @@ -139,6 +140,7 @@ usage(int code) " -H: vmexit from the guest on hlt\n" " -l: LPC device configuration. Ex: -l com1,stdio -l com2,autopty -l com2,/dev/myownpty\n" " -m: memory size in MB, may be suffixed with one of K, M, G or T\n" + " -M: print MAC address and exit if using vmnet\n" " -p: pin 'vcpu' to 'hostcpu'\n" " -P: vmexit from the guest on pause\n" " -s: PCI slot config\n" @@ -845,12 +847,13 @@ main(int argc, char *argv[]) progname = basename(argv[0]); gdb_port = 0; guest_ncpus = 1; + print_mac = 0; memsize = 256 * MB; mptgen = 1; rtc_localtime = 1; fw = 0; - while ((c = getopt(argc, argv, "behvuwxACHPWY:f:F:g:c:s:m:l:U:")) != -1) { + while ((c = getopt(argc, argv, "behvuwxMACHPWY:f:F:g:c:s:m:l:U:")) != -1) { switch (c) { case 'A': acpi = 1; @@ -893,6 +896,9 @@ main(int argc, char *argv[]) if (error) errx(EX_USAGE, "invalid memsize '%s'", optarg); break; + case 'M': + print_mac = 1; + break; case 'H': guest_vmexit_on_hlt = 1; break; From 5e720a3d3831b29c0fd64087e161c621e5103e22 Mon Sep 17 00:00:00 2001 From: Aaditya Chandrasekhar Date: Thu, 17 Mar 2016 16:11:12 -0700 Subject: [PATCH 11/11] Disable LTO for debug xhyve builds. LTO is enabled in the xcodeproject for xhyve. When targetting debug builds override to NO so that local variables and function arguments can be introspected in the debugger. --- xcconfigs/common_debug.xcconfig | 1 + 1 file changed, 1 insertion(+) diff --git a/xcconfigs/common_debug.xcconfig b/xcconfigs/common_debug.xcconfig index 617be63..4257e04 100644 --- a/xcconfigs/common_debug.xcconfig +++ b/xcconfigs/common_debug.xcconfig @@ -4,6 +4,7 @@ COPY_PHASE_STRIP = NO STRIP_INSTALLED_PRODUCT = NO GCC_OPTIMIZATION_LEVEL = 0 +LLVM_LTO = NO OTHER_CFLAGS_debug = $(OTHER_CFLAGS_common) -fno-inline OTHER_CFLAGS = $(inherited) $(OTHER_CFLAGS_debug)