Compare commits

..

No commits in common. "virtio-9p" and "master" have entirely different histories.

20 changed files with 35 additions and 1300 deletions

10
.gitignore vendored
View file

@ -1,9 +1 @@
build /build/
DerivedData
.DS_Store
*~
*.rej
*.orig
cscope.*
tags
TAGS

3
.gitmodules vendored
View file

@ -1,3 +0,0 @@
[submodule "lib9p"]
path = lib9p
url = https://github.com/jceel/lib9p.git

View file

@ -49,7 +49,6 @@ XHYVE_SRC := \
src/pci_irq.c \ src/pci_irq.c \
src/pci_lpc.c \ src/pci_lpc.c \
src/pci_uart.c \ src/pci_uart.c \
src/pci_virtio_9p.c \
src/pci_virtio_block.c \ src/pci_virtio_block.c \
src/pci_virtio_net_tap.c \ src/pci_virtio_net_tap.c \
src/pci_virtio_net_vmnet.c \ src/pci_virtio_net_vmnet.c \
@ -68,24 +67,14 @@ FIRMWARE_SRC := \
src/firmware/kexec.c \ src/firmware/kexec.c \
src/firmware/fbsd.c src/firmware/fbsd.c
LIB9P_SRC := \
lib9p/connection.c \
lib9p/hashtable.c \
lib9p/log.c \
lib9p/pack.c \
lib9p/request.c \
lib9p/utils.c \
lib9p/sbuf/sbuf.c \
lib9p/backend/fs.c
SRC := \ SRC := \
$(VMM_SRC) \ $(VMM_SRC) \
$(XHYVE_SRC) \ $(XHYVE_SRC) \
$(FIRMWARE_SRC) $(FIRMWARE_SRC)
OBJ := $(SRC:src/%.c=build/%.o) $(LIB9P_SRC:lib9p/%.c=build/lib9p/%.o) OBJ := $(SRC:src/%.c=build/%.o)
DEP := $(OBJ:%.o=%.d) DEP := $(OBJ:%.o=%.d)
INC := -Iinclude -Ilib9p INC := -Iinclude
CFLAGS += -DVERSION=\"$(GIT_VERSION)\" CFLAGS += -DVERSION=\"$(GIT_VERSION)\"
@ -106,11 +95,6 @@ build/%.o: src/%.c
@mkdir -p $(dir $@) @mkdir -p $(dir $@)
$(VERBOSE) $(ENV) $(CC) $(CFLAGS) $(INC) $(DEF) -MMD -MT $@ -MF build/$*.d -o $@ -c $< $(VERBOSE) $(ENV) $(CC) $(CFLAGS) $(INC) $(DEF) -MMD -MT $@ -MF build/$*.d -o $@ -c $<
build/lib9p/%.o: lib9p/%.c
@echo cc $<
@mkdir -p $(dir $@)
$(VERBOSE) $(ENV) $(CC) $(CFLAGS) $(CFLAGS_LIB9P) $(INC) $(DEF) -MMD -MT $@ -MF build/lib9p/$*.d -o $@ -c $<
$(TARGET).sym: $(OBJ) $(TARGET).sym: $(OBJ)
@echo ld $(notdir $@) @echo ld $(notdir $@)
$(VERBOSE) $(ENV) $(LD) $(LDFLAGS) -Xlinker $(TARGET).lto.o -o $@ $(OBJ) $(VERBOSE) $(ENV) $(LD) $(LDFLAGS) -Xlinker $(TARGET).lto.o -o $@ $(OBJ)
@ -123,4 +107,3 @@ $(TARGET): $(TARGET).sym
clean: clean:
@rm -rf build @rm -rf build

View file

@ -1,4 +1,4 @@
# [xhyve.xyz](http://www.xhyve.xyz) # [xhyve.org](http://www.xhyve.org)
![](./xhyve_logo.png) ![](./xhyve_logo.png)
<!-- https://thenounproject.com/term/squirrel/57718/ --> <!-- https://thenounproject.com/term/squirrel/57718/ -->
@ -28,15 +28,15 @@ If you have homebrew, then simply:
The `--HEAD` in the brew command ensures that you always get the latest changes, even if the homebrew database is not yet updated. If for any reason you don't want that simply do `brew install xhyve` . The `--HEAD` in the brew command ensures that you always get the latest changes, even if the homebrew database is not yet updated. If for any reason you don't want that simply do `brew install xhyve` .
if not then: if not then:
Building Building
-------- --------
$ git clone https://github.com/xhyve-xyz/xhyve.git $ git clone https://github.com/mist64/xhyve
$ cd xhyve $ cd xhyve
$ xcodebuild $ make
The resulting binary will be in build/Release/xhyve The resulting binary will be in build/xhyve
Usage Usage
----- -----
@ -66,7 +66,6 @@ It exposes the following peripherals to virtual machines:
- VirtIO block device - VirtIO block device
- VirtIO networking - VirtIO networking
- VirtIO RNG - VirtIO RNG
- VirtIO filesystem sharing
Notably absent are sound, USB, HID and any kind of graphics support. With a focus on server virtualization this is not strictly a requirement. bhyve may gain desktop virtualization capabilities in the future but this doesn't seem to be a priority. Notably absent are sound, USB, HID and any kind of graphics support. With a focus on server virtualization this is not strictly a requirement. bhyve may gain desktop virtualization capabilities in the future but this doesn't seem to be a priority.
@ -153,7 +152,7 @@ xhyve architecture
------------------------------┼------------------------------ ------------------------------┼------------------------------
|syscall xnu kernel |syscall xnu kernel
V V
VMX host VMX host
VMX nested paging VMX nested paging
@ -182,22 +181,6 @@ instead of:
Where *X* is your tap device, i.e. */dev/tapX*. Where *X* is your tap device, i.e. */dev/tapX*.
File Sharing
------
You can setup shared folders between OS X and your guest by using the `virtio-9p` device.
9P / VirtFS is a shared FS protocol introduced by Bell's Plan 9 OS.
More information is available in the [KVM wiki](http://www.linux-kvm.org/page/9p_virtio).
Adding a VirtFS device to your VM:
$ xhyve -s 5,virtio-9p,hostshare=/Users/example/shared,ro ...
Inside the Linux VM:
$ mount -t 9p -o trans=virtio,version=9p2000.L hostshare /tmp/host_files
The `hostshare` identifier can be changed to support multiple mounts.
Issues Issues
------ ------
If you are, or were, running any version of VirtualBox, prior to 4.3.30 or 5.0, If you are, or were, running any version of VirtualBox, prior to 4.3.30 or 5.0,

View file

@ -47,11 +47,6 @@ CFLAGS_DIAG := \
CFLAGS_DBG := \ CFLAGS_DBG := \
-g -g
CFLAGS_LIB9P := \
-Wno-padded \
-Wno-gnu-zero-variadic-macro-arguments \
-Wno-format-nonliteral
CFLAGS := \ CFLAGS := \
-arch x86_64 \ -arch x86_64 \
-x c \ -x c \

View file

@ -217,7 +217,6 @@ struct vring_used {
#define VIRTIO_DEV_NET 0x1000 #define VIRTIO_DEV_NET 0x1000
#define VIRTIO_DEV_BLOCK 0x1001 #define VIRTIO_DEV_BLOCK 0x1001
#define VIRTIO_DEV_RANDOM 0x1002 #define VIRTIO_DEV_RANDOM 0x1002
#define VIRTIO_DEV_9P 0x1009
/* /*
* PCI config space constants. * PCI config space constants.

1
lib9p

@ -1 +0,0 @@
Subproject commit ddfdba40793f4bd2e988d4832cfadbf71ab7d024

View file

@ -48,7 +48,7 @@
static int listen_fd, conn_fd; static int listen_fd, conn_fd;
static struct sockaddr_in saddrin; static struct sockaddr_in sin;
static int static int
dbg_handler(UNUSED int vcpu, int in, UNUSED int port, int bytes, uint32_t *eax, 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); exit(1);
} }
saddrin.sin_len = sizeof(saddrin); sin.sin_len = sizeof(sin);
saddrin.sin_family = AF_INET; sin.sin_family = AF_INET;
saddrin.sin_addr.s_addr = htonl(INADDR_ANY); sin.sin_addr.s_addr = htonl(INADDR_ANY);
saddrin.sin_port = htons(sport); sin.sin_port = htons(sport);
if (bind(listen_fd, (struct sockaddr *)&saddrin, sizeof(saddrin)) < 0) { if (bind(listen_fd, (struct sockaddr *)&sin, sizeof(sin)) < 0) {
perror("bind"); perror("bind");
exit(1); exit(1);
} }

View file

@ -1,276 +0,0 @@
/*-
* Copyright (c) 2016 Jakub Klama <jceel@FreeBSD.org>
* Copyright (c) 2016 iXsystems Inc.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer
* in this position and unchanged.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
/*
* virtio filesystem passtrough using 9p protocol.
*/
#include <sys/cdefs.h>
#include <sys/param.h>
#include <sys/uio.h>
#include <errno.h>
#include <fcntl.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <assert.h>
#include <pthread.h>
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wpadded"
#include <lib9p.h>
#pragma clang diagnostic pop
#include <xhyve/xhyve.h>
#include <xhyve/pci_emul.h>
#include <xhyve/virtio.h>
#define VT9P_RINGSZ 64
static int pci_vt9p_debug = 0;
#define DPRINTF(params) if (pci_vt9p_debug) printf params
/*
* Per-device softc
*/
struct pci_vt9p_softc {
struct virtio_softc vsc_vs;
struct vqueue_info vsc_vq;
pthread_mutex_t vsc_mtx;
uint64_t vsc_cfg;
uint64_t vsc_features;
char * vsc_rootpath;
struct pci_vt9p_config * vsc_config;
struct l9p_backend * vsc_fs_backend;
struct l9p_server * vsc_server;
struct l9p_connection * vsc_conn;
};
struct pci_vt9p_request {
struct iovec * vsr_iov;
size_t vsr_niov;
size_t vsr_respidx;
size_t vsr_iolen;
};
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wzero-length-array"
struct pci_vt9p_config {
uint16_t tag_len;
char tag[0];
};
#pragma clang diagnostic pop
static void pci_vt9p_reset(void *);
static void pci_vt9p_notify(void *, struct vqueue_info *);
static int pci_vt9p_cfgread(void *, int, int, uint32_t *);
static void pci_vt9p_neg_features(void *, uint64_t);
static struct virtio_consts vt9p_vi_consts = {
"vt9p", /* our name */
1, /* we support 1 virtqueue */
0, /* config reg size */
pci_vt9p_reset, /* reset */
pci_vt9p_notify, /* device-wide qnotify */
pci_vt9p_cfgread, /* read virtio config */
NULL, /* write virtio config */
pci_vt9p_neg_features, /* apply negotiated features */
(1 << 0), /* our capabilities */
};
static void
pci_vt9p_reset(void *vsc)
{
struct pci_vt9p_softc *sc;
sc = vsc;
DPRINTF(("vt9p: device reset requested !\n"));
vi_reset_dev(&sc->vsc_vs);
}
static void
pci_vt9p_neg_features(void *vsc, uint64_t negotiated_features)
{
struct pci_vt9p_softc *sc = vsc;
sc->vsc_features = negotiated_features;
}
static int
pci_vt9p_cfgread(void *vsc, int offset, int size, uint32_t *retval)
{
struct pci_vt9p_softc *sc = vsc;
void *ptr;
ptr = (uint8_t *)sc->vsc_config + offset;
memcpy(retval, ptr, size);
return (0);
}
static int
pci_vt9p_get_buffer(struct l9p_request *req, struct iovec *iov, size_t *niov,
void *arg __unused)
{
struct pci_vt9p_request *preq = req->lr_aux;
size_t n = preq->vsr_niov - preq->vsr_respidx;
memcpy(iov, preq->vsr_iov + preq->vsr_respidx, n * sizeof(struct iovec));
*niov = n;
return (0);
}
static int
pci_vt9p_send(struct l9p_request *req, const struct iovec *iov __unused,
const size_t niov __unused, const size_t iolen, void *arg __unused)
{
struct pci_vt9p_request *preq = req->lr_aux;
preq->vsr_iolen = iolen;
return (0);
}
static void
pci_vt9p_notify(void *vsc, struct vqueue_info *vq)
{
struct iovec iov[8];
struct pci_vt9p_softc *sc;
struct pci_vt9p_request preq;
uint16_t idx, i;
uint16_t flags[8];
int n;
sc = vsc;
while (vq_has_descs(vq)) {
n = vq_getchain(vq, &idx, iov, 8, flags);
preq.vsr_iov = iov;
preq.vsr_niov = (size_t)n;
preq.vsr_respidx = 0;
/* Count readable descriptors */
for (i = 0; i < n; i++) {
if (flags[i] & VRING_DESC_F_WRITE)
break;
preq.vsr_respidx++;
}
for (i = 0; i < n; i++)
DPRINTF(("vt9p: vt9p_notify(): desc%d base=%p, len=%zu, flags=0x%04x\r\n", i, iov[i].iov_base, iov[i].iov_len, flags[i]));
l9p_connection_recv(sc->vsc_conn, iov, preq.vsr_respidx, &preq);
/*
* Release this chain and handle more
*/
vq_relchain(vq, idx, (uint32_t)preq.vsr_iolen);
}
vq_endchains(vq, 1); /* Generate interrupt if appropriate. */
}
static int
pci_vt9p_init(struct pci_devinst *pi, char *opts)
{
struct pci_vt9p_softc *sc;
char *opt;
char *sharename = NULL;
char *rootpath = NULL;
if (opts == NULL) {
printf("virtio-9p: share name and path required\n");
return (1);
}
sc = calloc(1, sizeof(struct pci_vt9p_softc));
sc->vsc_config = calloc(1, sizeof(struct pci_vt9p_config) + 128);
while ((opt = strsep(&opts, ",")) != NULL) {
if (sharename == NULL) {
sharename = strsep(&opt, "=");
rootpath = strdup(opt);
continue;
}
if (strcmp(opt, "ro") == 0)
DPRINTF(("read-only mount requested\r\n"));
}
sc->vsc_config->tag_len = (uint16_t)strlen(sharename);
strncpy(sc->vsc_config->tag, sharename, strlen(sharename));
if (l9p_backend_fs_init(&sc->vsc_fs_backend, rootpath) != 0) {
errno = ENXIO;
return (1);
}
if (l9p_server_init(&sc->vsc_server, sc->vsc_fs_backend) != 0) {
errno = ENXIO;
return (1);
}
if (l9p_connection_init(sc->vsc_server, &sc->vsc_conn) != 0) {
errno = EIO;
return (1);
}
l9p_connection_on_send_response(sc->vsc_conn, pci_vt9p_send, NULL);
l9p_connection_on_get_response_buffer(sc->vsc_conn, pci_vt9p_get_buffer, NULL);
vi_softc_linkup(&sc->vsc_vs, &vt9p_vi_consts, sc, pi, &sc->vsc_vq);
sc->vsc_vs.vs_mtx = &sc->vsc_mtx;
sc->vsc_vq.vq_qsize = VT9P_RINGSZ;
/* initialize config space */
pci_set_cfgdata16(pi, PCIR_DEVICE, VIRTIO_DEV_9P);
pci_set_cfgdata16(pi, PCIR_VENDOR, VIRTIO_VENDOR);
pci_set_cfgdata8(pi, PCIR_CLASS, PCIC_STORAGE);
pci_set_cfgdata16(pi, PCIR_SUBDEV_0, VIRTIO_TYPE_9P);
pci_set_cfgdata16(pi, PCIR_SUBVEND_0, VIRTIO_VENDOR);
if (vi_intr_init(&sc->vsc_vs, 1, fbsdrun_virtio_msix()))
return (1);
vi_set_io_bar(&sc->vsc_vs, 0);
return (0);
}
static struct pci_devemu pci_dev_9p = {
.pe_emu = "virtio-9p",
.pe_init = pci_vt9p_init,
.pe_barwrite = vi_pci_write,
.pe_barread = vi_pci_read
};
PCI_EMUL_SET(pci_dev_9p);

View file

@ -90,7 +90,6 @@ struct fifo {
struct ttyfd { struct ttyfd {
bool opened; bool opened;
int fd; /* tty device file descriptor */ int fd; /* tty device file descriptor */
char *name; /* slave pty name when using autopty*/
struct termios tio_orig, tio_new; /* I/O Terminals */ struct termios tio_orig, tio_new; /* I/O Terminals */
}; };
@ -331,11 +330,11 @@ uart_drain(int fd, enum ev_type ev, void *arg)
struct uart_softc *sc; struct uart_softc *sc;
int ch; int ch;
sc = arg; sc = arg;
assert(fd == sc->tty.fd); assert(fd == sc->tty.fd);
assert(ev == EVF_READ); assert(ev == EVF_READ);
/* /*
* This routine is called in the context of the mevent thread * This routine is called in the context of the mevent thread
* to take out the softc lock to protect against concurrent * to take out the softc lock to protect against concurrent
@ -363,7 +362,7 @@ uart_write(struct uart_softc *sc, int offset, uint8_t value)
uint8_t msr; uint8_t msr;
pthread_mutex_lock(&sc->mtx); pthread_mutex_lock(&sc->mtx);
/* /*
* Take care of the special case DLAB accesses first * Take care of the special case DLAB accesses first
*/ */
@ -372,7 +371,7 @@ uart_write(struct uart_softc *sc, int offset, uint8_t value)
sc->dll = value; sc->dll = value;
goto done; goto done;
} }
if (offset == REG_DLH) { if (offset == REG_DLH) {
sc->dlh = value; sc->dlh = value;
goto done; goto done;
@ -502,7 +501,7 @@ uart_read(struct uart_softc *sc, int offset)
reg = sc->dll; reg = sc->dll;
goto done; goto done;
} }
if (offset == REG_DLH) { if (offset == REG_DLH) {
reg = sc->dlh; reg = sc->dlh;
goto done; goto done;
@ -520,7 +519,7 @@ uart_read(struct uart_softc *sc, int offset)
iir = (sc->fcr & FCR_ENABLE) ? IIR_FIFO_MASK : 0; iir = (sc->fcr & FCR_ENABLE) ? IIR_FIFO_MASK : 0;
intr_reason = (uint8_t) uart_intr_reason(sc); intr_reason = (uint8_t) uart_intr_reason(sc);
/* /*
* Deal with side effects of reading the IIR register * Deal with side effects of reading the IIR register
*/ */
@ -624,7 +623,7 @@ uart_tty_backend(struct uart_softc *sc, const char *opts)
sc->tty.opened = true; sc->tty.opened = true;
retval = 0; retval = 0;
} }
return (retval); return (retval);
} }
@ -632,49 +631,27 @@ int
uart_set_backend(struct uart_softc *sc, const char *opts) uart_set_backend(struct uart_softc *sc, const char *opts)
{ {
int retval; int retval;
int ptyfd;
char *ptyname;
retval = -1; retval = -1;
if (opts == NULL) if (opts == NULL)
return (0); return (0);
if (strcmp("stdio", opts) == 0 && !uart_stdio) { if (strcmp("stdio", opts) == 0) {
sc->tty.fd = STDIN_FILENO; if (!uart_stdio) {
sc->tty.opened = true; sc->tty.fd = STDIN_FILENO;
uart_stdio = true; sc->tty.opened = true;
retval = fcntl(sc->tty.fd, F_SETFL, O_NONBLOCK); uart_stdio = true;
} else if (strcmp("autopty", opts) == 0) { retval = 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 to 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) { } else if (uart_tty_backend(sc, opts) == 0) {
retval = 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) if (retval == 0)
uart_opentty(sc); uart_opentty(sc);

View file

@ -1,18 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>English</string>
<key>CFBundleIdentifier</key>
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleShortVersionString</key>
<string>$(CURRENT_PROJECT_VERSION)</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
<string>$(CURRENT_PROJECT_VERSION)</string>
</dict>
</plist>

View file

@ -1,10 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>com.apple.security.network.client</key>
<true/>
<key>com.apple.security.network.server</key>
<true/>
</dict>
</plist>

View file

@ -31,7 +31,6 @@
#include <stdlib.h> #include <stdlib.h>
#include <string.h> #include <string.h>
#include <err.h> #include <err.h>
#include <fcntl.h>
#include <libgen.h> #include <libgen.h>
#include <unistd.h> #include <unistd.h>
#include <assert.h> #include <assert.h>
@ -81,7 +80,6 @@ char *vmname = "vm";
int guest_ncpus; int guest_ncpus;
int print_mac; int print_mac;
char *guest_uuid_str; char *guest_uuid_str;
static char *pidfile;
static int guest_vmexit_on_hlt, guest_vmexit_on_pause; static int guest_vmexit_on_hlt, guest_vmexit_on_pause;
static int virtio_msix = 1; static int virtio_msix = 1;
@ -127,14 +125,13 @@ usage(int code)
{ {
fprintf(stderr, fprintf(stderr,
"Usage: %s [-behuwxMACHPWY] [-c vcpus] [-F <pidfile>] [-g <gdb port>] [-l <lpc>]\n" "Usage: %s [-behuwxMACHPWY] [-c vcpus] [-g <gdb port>] [-l <lpc>]\n"
" %*s [-m mem] [-p vcpu:hostcpu] [-s <pci>] [-U uuid] -f <fw>\n" " %*s [-m mem] [-p vcpu:hostcpu] [-s <pci>] [-U uuid] -f <fw>\n"
" -A: create ACPI tables\n" " -A: create ACPI tables\n"
" -c: # cpus (default 1)\n" " -c: # cpus (default 1)\n"
" -C: include guest memory in core file\n" " -C: include guest memory in core file\n"
" -e: exit on unhandled I/O access\n" " -e: exit on unhandled I/O access\n"
" -f: firmware\n" " -f: firmware\n"
" -F: pidfile\n"
" -g: gdb port\n" " -g: gdb port\n"
" -h: help\n" " -h: help\n"
" -H: vmexit from the guest on hlt\n" " -H: vmexit from the guest on hlt\n"
@ -162,7 +159,7 @@ show_version()
fprintf(stderr, "%s: %s\n\n%s\n",progname, 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" "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" "works entirely in userspace and has no other dependencies.\n\n"
"Homepage: http://www.xhyve.xyz\n" "Homepage: https://github.com/mist64/xhyve\n"
"License: BSD\n"); "License: BSD\n");
exit(0); exit(0);
} }
@ -778,61 +775,6 @@ fail:
return -1; 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)
goto fail;
f = open(pidfile, O_CREAT|O_EXCL|O_WRONLY, 0644);
if (f < 0)
goto fail;
error = atexit(remove_pidfile);
if (error < 0) {
close(f);
remove_pidfile();
goto fail;
}
if (0 > (write(f, (void*)pid_str, strlen(pid_str)))) {
close(f);
goto fail;
}
error = close(f);
if (error < 0)
goto fail;
return 0;
fail:
fprintf(stderr, "Failed to set up pidfile\n");
return -1;
}
int int
main(int argc, char *argv[]) main(int argc, char *argv[])
{ {
@ -853,7 +795,7 @@ main(int argc, char *argv[])
rtc_localtime = 1; rtc_localtime = 1;
fw = 0; fw = 0;
while ((c = getopt(argc, argv, "behvuwxMACHPWY:f:F:g:c:s:m:l:U:")) != -1) { while ((c = getopt(argc, argv, "behvuwxMACHPWY:f:g:c:s:m:l:U:")) != -1) {
switch (c) { switch (c) {
case 'A': case 'A':
acpi = 1; acpi = 1;
@ -874,9 +816,6 @@ main(int argc, char *argv[])
fw = 1; fw = 1;
break; break;
} }
case 'F':
pidfile = optarg;
break;
case 'g': case 'g':
gdb_port = atoi(optarg); gdb_port = atoi(optarg);
break; break;
@ -968,12 +907,6 @@ main(int argc, char *argv[])
exit(1); exit(1);
} }
error = setup_pidfile();
if (error) {
fprintf(stderr, "pidfile error %d\n", error);
exit(1);
}
init_mem(); init_mem();
init_inout(); init_inout();
pci_irq_init(); pci_irq_init();

View file

@ -1,51 +0,0 @@
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

View file

@ -1,10 +0,0 @@
#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)

View file

@ -1,17 +0,0 @@
#include "common.xcconfig"
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)
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)

View file

@ -1,12 +0,0 @@
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

View file

@ -1,11 +0,0 @@
#!/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"

View file

@ -1,2 +0,0 @@
project.xcworkspace
xcuserdata

View file

@ -1,716 +0,0 @@
// !$*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 = "<group>"; };
3F3FF9E11BF7C5D5004C89A1 /* common_asan.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = common_asan.xcconfig; sourceTree = "<group>"; };
3F3FF9E21BF7C5D5004C89A1 /* common_debug.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = common_debug.xcconfig; sourceTree = "<group>"; };
3F3FF9E31BF7C5D5004C89A1 /* xhyve.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = xhyve.xcconfig; sourceTree = "<group>"; };
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 = "<group>"; };
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 = "<group>"; };
3F3FFA1F1BF7C6A7004C89A1 /* acpitbl.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = acpitbl.c; sourceTree = "<group>"; };
3F3FFA201BF7C6A7004C89A1 /* atkbdc.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = atkbdc.c; sourceTree = "<group>"; };
3F3FFA211BF7C6A7004C89A1 /* block_if.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = block_if.c; sourceTree = "<group>"; };
3F3FFA221BF7C6A7004C89A1 /* consport.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = consport.c; sourceTree = "<group>"; };
3F3FFA231BF7C6A7004C89A1 /* dbgport.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = dbgport.c; sourceTree = "<group>"; };
3F3FFA241BF7C6A7004C89A1 /* dsdt.asl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = dsdt.asl; sourceTree = "<group>"; };
3F3FFA261BF7C6A7004C89A1 /* fbsd.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = fbsd.c; sourceTree = "<group>"; };
3F3FFA271BF7C6A7004C89A1 /* kexec.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = kexec.c; sourceTree = "<group>"; };
3F3FFA281BF7C6A7004C89A1 /* inout.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = inout.c; sourceTree = "<group>"; };
3F3FFA291BF7C6A7004C89A1 /* ioapic.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ioapic.c; sourceTree = "<group>"; };
3F3FFA2A1BF7C6A7004C89A1 /* md5c.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = md5c.c; sourceTree = "<group>"; };
3F3FFA2B1BF7C6A7004C89A1 /* mem.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = mem.c; sourceTree = "<group>"; };
3F3FFA2C1BF7C6A7004C89A1 /* mevent.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = mevent.c; sourceTree = "<group>"; };
3F3FFA2D1BF7C6A7004C89A1 /* mevent_test.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = mevent_test.c; sourceTree = "<group>"; };
3F3FFA2E1BF7C6A7004C89A1 /* mptbl.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = mptbl.c; sourceTree = "<group>"; };
3F3FFA2F1BF7C6A7004C89A1 /* pci_ahci.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = pci_ahci.c; sourceTree = "<group>"; };
3F3FFA301BF7C6A7004C89A1 /* pci_emul.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = pci_emul.c; sourceTree = "<group>"; };
3F3FFA311BF7C6A7004C89A1 /* pci_hostbridge.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = pci_hostbridge.c; sourceTree = "<group>"; };
3F3FFA321BF7C6A7004C89A1 /* pci_irq.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = pci_irq.c; sourceTree = "<group>"; };
3F3FFA331BF7C6A7004C89A1 /* pci_lpc.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = pci_lpc.c; sourceTree = "<group>"; };
3F3FFA341BF7C6A7004C89A1 /* pci_uart.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = pci_uart.c; sourceTree = "<group>"; };
3F3FFA351BF7C6A7004C89A1 /* pci_virtio_block.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = pci_virtio_block.c; sourceTree = "<group>"; };
3F3FFA361BF7C6A7004C89A1 /* pci_virtio_net_tap.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = pci_virtio_net_tap.c; sourceTree = "<group>"; };
3F3FFA371BF7C6A7004C89A1 /* pci_virtio_net_vmnet.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = pci_virtio_net_vmnet.c; sourceTree = "<group>"; };
3F3FFA381BF7C6A7004C89A1 /* pci_virtio_rnd.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = pci_virtio_rnd.c; sourceTree = "<group>"; };
3F3FFA391BF7C6A7004C89A1 /* pm.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = pm.c; sourceTree = "<group>"; };
3F3FFA3A1BF7C6A7004C89A1 /* post.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = post.c; sourceTree = "<group>"; };
3F3FFA3B1BF7C6A7004C89A1 /* rtc.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = rtc.c; sourceTree = "<group>"; };
3F3FFA3C1BF7C6A7004C89A1 /* smbiostbl.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = smbiostbl.c; sourceTree = "<group>"; };
3F3FFA3D1BF7C6A7004C89A1 /* task_switch.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = task_switch.c; sourceTree = "<group>"; };
3F3FFA3E1BF7C6A7004C89A1 /* uart_emul.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = uart_emul.c; sourceTree = "<group>"; };
3F3FFA3F1BF7C6A7004C89A1 /* virtio.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = virtio.c; sourceTree = "<group>"; };
3F3FFA421BF7C6A7004C89A1 /* vmcs.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = vmcs.c; sourceTree = "<group>"; };
3F3FFA431BF7C6A7004C89A1 /* vmx.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = vmx.c; sourceTree = "<group>"; };
3F3FFA441BF7C6A7004C89A1 /* vmx_msr.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = vmx_msr.c; sourceTree = "<group>"; };
3F3FFA461BF7C6A7004C89A1 /* vatpic.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = vatpic.c; sourceTree = "<group>"; };
3F3FFA471BF7C6A7004C89A1 /* vatpit.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = vatpit.c; sourceTree = "<group>"; };
3F3FFA481BF7C6A7004C89A1 /* vhpet.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = vhpet.c; sourceTree = "<group>"; };
3F3FFA491BF7C6A7004C89A1 /* vioapic.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = vioapic.c; sourceTree = "<group>"; };
3F3FFA4A1BF7C6A7004C89A1 /* vlapic.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = vlapic.c; sourceTree = "<group>"; };
3F3FFA4B1BF7C6A7004C89A1 /* vpmtmr.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = vpmtmr.c; sourceTree = "<group>"; };
3F3FFA4C1BF7C6A7004C89A1 /* vrtc.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = vrtc.c; sourceTree = "<group>"; };
3F3FFA4D1BF7C6A7004C89A1 /* vmm.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = vmm.c; sourceTree = "<group>"; };
3F3FFA4E1BF7C6A7004C89A1 /* vmm_api.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = vmm_api.c; sourceTree = "<group>"; };
3F3FFA4F1BF7C6A7004C89A1 /* vmm_callout.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = vmm_callout.c; sourceTree = "<group>"; };
3F3FFA501BF7C6A7004C89A1 /* vmm_host.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = vmm_host.c; sourceTree = "<group>"; };
3F3FFA511BF7C6A7004C89A1 /* vmm_instruction_emul.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = vmm_instruction_emul.c; sourceTree = "<group>"; };
3F3FFA521BF7C6A7004C89A1 /* vmm_ioport.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = vmm_ioport.c; sourceTree = "<group>"; };
3F3FFA531BF7C6A7004C89A1 /* vmm_lapic.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = vmm_lapic.c; sourceTree = "<group>"; };
3F3FFA541BF7C6A7004C89A1 /* vmm_mem.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = vmm_mem.c; sourceTree = "<group>"; };
3F3FFA551BF7C6A7004C89A1 /* vmm_stat.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = vmm_stat.c; sourceTree = "<group>"; };
3F3FFA561BF7C6A7004C89A1 /* vmm_util.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = vmm_util.c; sourceTree = "<group>"; };
3F3FFA571BF7C6A7004C89A1 /* x86.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = x86.c; sourceTree = "<group>"; };
3F3FFA581BF7C6A7004C89A1 /* xhyve-entitlements.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = "xhyve-entitlements.plist"; path = "src/xhyve-entitlements.plist"; sourceTree = "<group>"; };
3F3FFA591BF7C6A7004C89A1 /* xhyve-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = "xhyve-Info.plist"; path = "src/xhyve-Info.plist"; sourceTree = "<group>"; };
3F3FFA5A1BF7C6A7004C89A1 /* xhyve.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = xhyve.c; sourceTree = "<group>"; };
3F3FFA5B1BF7C6A7004C89A1 /* xmsr.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = xmsr.c; sourceTree = "<group>"; };
3F3FFA961BF7CBFF004C89A1 /* version.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = version.sh; sourceTree = "<group>"; };
3FB6515C1BF7CD4500ED886F /* acpi.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = acpi.h; sourceTree = "<group>"; };
3FB6515D1BF7CD4500ED886F /* ahci.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ahci.h; sourceTree = "<group>"; };
3FB6515E1BF7CD4500ED886F /* block_if.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = block_if.h; sourceTree = "<group>"; };
3FB6515F1BF7CD4500ED886F /* dbgport.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = dbgport.h; sourceTree = "<group>"; };
3FB651611BF7CD4500ED886F /* fbsd.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = fbsd.h; sourceTree = "<group>"; };
3FB651621BF7CD4500ED886F /* kexec.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = kexec.h; sourceTree = "<group>"; };
3FB651631BF7CD4500ED886F /* inout.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = inout.h; sourceTree = "<group>"; };
3FB651641BF7CD4500ED886F /* ioapic.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ioapic.h; sourceTree = "<group>"; };
3FB651651BF7CD4500ED886F /* mem.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = mem.h; sourceTree = "<group>"; };
3FB651661BF7CD4500ED886F /* mevent.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = mevent.h; sourceTree = "<group>"; };
3FB651671BF7CD4500ED886F /* mptbl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = mptbl.h; sourceTree = "<group>"; };
3FB651681BF7CD4500ED886F /* pci_emul.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pci_emul.h; sourceTree = "<group>"; };
3FB651691BF7CD4500ED886F /* pci_irq.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pci_irq.h; sourceTree = "<group>"; };
3FB6516A1BF7CD4500ED886F /* pci_lpc.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pci_lpc.h; sourceTree = "<group>"; };
3FB6516B1BF7CD4500ED886F /* rtc.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = rtc.h; sourceTree = "<group>"; };
3FB6516C1BF7CD4500ED886F /* smbiostbl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = smbiostbl.h; sourceTree = "<group>"; };
3FB6516E1BF7CD4500ED886F /* acpi_hpet.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = acpi_hpet.h; sourceTree = "<group>"; };
3FB6516F1BF7CD4500ED886F /* apicreg.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = apicreg.h; sourceTree = "<group>"; };
3FB651701BF7CD4500ED886F /* ata.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ata.h; sourceTree = "<group>"; };
3FB651711BF7CD4500ED886F /* atomic.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = atomic.h; sourceTree = "<group>"; };
3FB651721BF7CD4500ED886F /* bitset.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = bitset.h; sourceTree = "<group>"; };
3FB651731BF7CD4500ED886F /* cpuset.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = cpuset.h; sourceTree = "<group>"; };
3FB651741BF7CD4500ED886F /* i8253reg.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = i8253reg.h; sourceTree = "<group>"; };
3FB651751BF7CD4500ED886F /* i8259.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = i8259.h; sourceTree = "<group>"; };
3FB651761BF7CD4500ED886F /* linker_set.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = linker_set.h; sourceTree = "<group>"; };
3FB651771BF7CD4500ED886F /* md5.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = md5.h; sourceTree = "<group>"; };
3FB651781BF7CD4500ED886F /* misc.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = misc.h; sourceTree = "<group>"; };
3FB651791BF7CD4500ED886F /* mptable.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = mptable.h; sourceTree = "<group>"; };
3FB6517A1BF7CD4500ED886F /* ns16550.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ns16550.h; sourceTree = "<group>"; };
3FB6517B1BF7CD4500ED886F /* pcireg.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pcireg.h; sourceTree = "<group>"; };
3FB6517C1BF7CD4500ED886F /* psl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = psl.h; sourceTree = "<group>"; };
3FB6517D1BF7CD4500ED886F /* rtc.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = rtc.h; sourceTree = "<group>"; };
3FB6517E1BF7CD4500ED886F /* segments.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = segments.h; sourceTree = "<group>"; };
3FB6517F1BF7CD4500ED886F /* specialreg.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = specialreg.h; sourceTree = "<group>"; };
3FB651801BF7CD4500ED886F /* timerreg.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = timerreg.h; sourceTree = "<group>"; };
3FB651811BF7CD4500ED886F /* tree.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = tree.h; sourceTree = "<group>"; };
3FB651821BF7CD4500ED886F /* uuid.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = uuid.h; sourceTree = "<group>"; };
3FB651831BF7CD4500ED886F /* uart_emul.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = uart_emul.h; sourceTree = "<group>"; };
3FB651841BF7CD4500ED886F /* virtio.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = virtio.h; sourceTree = "<group>"; };
3FB651871BF7CD4500ED886F /* vmcs.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vmcs.h; sourceTree = "<group>"; };
3FB651881BF7CD4500ED886F /* vmx.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vmx.h; sourceTree = "<group>"; };
3FB651891BF7CD4500ED886F /* vmx_controls.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vmx_controls.h; sourceTree = "<group>"; };
3FB6518A1BF7CD4500ED886F /* vmx_msr.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vmx_msr.h; sourceTree = "<group>"; };
3FB6518C1BF7CD4500ED886F /* vatpic.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vatpic.h; sourceTree = "<group>"; };
3FB6518D1BF7CD4500ED886F /* vatpit.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vatpit.h; sourceTree = "<group>"; };
3FB6518E1BF7CD4500ED886F /* vhpet.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vhpet.h; sourceTree = "<group>"; };
3FB6518F1BF7CD4500ED886F /* vioapic.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vioapic.h; sourceTree = "<group>"; };
3FB651901BF7CD4500ED886F /* vlapic.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vlapic.h; sourceTree = "<group>"; };
3FB651911BF7CD4500ED886F /* vlapic_priv.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vlapic_priv.h; sourceTree = "<group>"; };
3FB651921BF7CD4500ED886F /* vpmtmr.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vpmtmr.h; sourceTree = "<group>"; };
3FB651931BF7CD4500ED886F /* vrtc.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vrtc.h; sourceTree = "<group>"; };
3FB651941BF7CD4500ED886F /* vmm.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vmm.h; sourceTree = "<group>"; };
3FB651951BF7CD4500ED886F /* vmm_api.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vmm_api.h; sourceTree = "<group>"; };
3FB651961BF7CD4500ED886F /* vmm_callout.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vmm_callout.h; sourceTree = "<group>"; };
3FB651971BF7CD4500ED886F /* vmm_common.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vmm_common.h; sourceTree = "<group>"; };
3FB651981BF7CD4500ED886F /* vmm_host.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vmm_host.h; sourceTree = "<group>"; };
3FB651991BF7CD4500ED886F /* vmm_instruction_emul.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vmm_instruction_emul.h; sourceTree = "<group>"; };
3FB6519A1BF7CD4500ED886F /* vmm_ioport.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vmm_ioport.h; sourceTree = "<group>"; };
3FB6519B1BF7CD4500ED886F /* vmm_ktr.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vmm_ktr.h; sourceTree = "<group>"; };
3FB6519C1BF7CD4500ED886F /* vmm_lapic.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vmm_lapic.h; sourceTree = "<group>"; };
3FB6519D1BF7CD4500ED886F /* vmm_mem.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vmm_mem.h; sourceTree = "<group>"; };
3FB6519E1BF7CD4500ED886F /* vmm_stat.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vmm_stat.h; sourceTree = "<group>"; };
3FB6519F1BF7CD4500ED886F /* vmm_util.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vmm_util.h; sourceTree = "<group>"; };
3FB651A01BF7CD4500ED886F /* x86.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = x86.h; sourceTree = "<group>"; };
3FB651A11BF7CD4500ED886F /* xhyve.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = xhyve.h; sourceTree = "<group>"; };
3FB651A21BF7CD4500ED886F /* xmsr.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = xmsr.h; sourceTree = "<group>"; };
/* 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 = "<group>";
};
3F1934931BF7C0D40099CC46 /* Products */ = {
isa = PBXGroup;
children = (
3F1934921BF7C0D40099CC46 /* xhyve */,
);
name = Products;
sourceTree = "<group>";
};
3F3FF9DF1BF7C5D5004C89A1 /* xcconfigs */ = {
isa = PBXGroup;
children = (
3F3FFA951BF7CBFF004C89A1 /* xcscripts */,
3F3FF9E01BF7C5D5004C89A1 /* common.xcconfig */,
3F3FF9E11BF7C5D5004C89A1 /* common_asan.xcconfig */,
3F3FF9E21BF7C5D5004C89A1 /* common_debug.xcconfig */,
3F3FF9E31BF7C5D5004C89A1 /* xhyve.xcconfig */,
);
path = xcconfigs;
sourceTree = "<group>";
};
3F3FF9E51BF7C5ED004C89A1 /* Documentation */ = {
isa = PBXGroup;
children = (
3F3FF9E61BF7C5F9004C89A1 /* README.md */,
3F3FF9E41BF7C5DC004C89A1 /* xhyve.1 */,
);
name = Documentation;
sourceTree = "<group>";
};
3F3FF9E71BF7C5FF004C89A1 /* Build Support */ = {
isa = PBXGroup;
children = (
3F3FFA581BF7C6A7004C89A1 /* xhyve-entitlements.plist */,
3F3FFA591BF7C6A7004C89A1 /* xhyve-Info.plist */,
3F3FF9EA1BF7C64C004C89A1 /* Linked Frameworks */,
3F3FF9DF1BF7C5D5004C89A1 /* xcconfigs */,
);
name = "Build Support";
sourceTree = "<group>";
};
3F3FF9EA1BF7C64C004C89A1 /* Linked Frameworks */ = {
isa = PBXGroup;
children = (
3F3FF9E81BF7C63A004C89A1 /* Hypervisor.framework */,
);
name = "Linked Frameworks";
sourceTree = "<group>";
};
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 = "<group>";
};
3F3FFA251BF7C6A7004C89A1 /* firmware */ = {
isa = PBXGroup;
children = (
3F3FFA261BF7C6A7004C89A1 /* fbsd.c */,
3F3FFA271BF7C6A7004C89A1 /* kexec.c */,
);
path = firmware;
sourceTree = "<group>";
};
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 = "<group>";
};
3F3FFA411BF7C6A7004C89A1 /* intel */ = {
isa = PBXGroup;
children = (
3F3FFA421BF7C6A7004C89A1 /* vmcs.c */,
3F3FFA431BF7C6A7004C89A1 /* vmx.c */,
3F3FFA441BF7C6A7004C89A1 /* vmx_msr.c */,
);
path = intel;
sourceTree = "<group>";
};
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 = "<group>";
};
3F3FFA951BF7CBFF004C89A1 /* xcscripts */ = {
isa = PBXGroup;
children = (
3F3FFA961BF7CBFF004C89A1 /* version.sh */,
);
path = xcscripts;
sourceTree = SOURCE_ROOT;
};
3FB6515A1BF7CD4500ED886F /* include */ = {
isa = PBXGroup;
children = (
3FB6515B1BF7CD4500ED886F /* xhyve */,
);
path = include;
sourceTree = "<group>";
};
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 = "<group>";
};
3FB651601BF7CD4500ED886F /* firmware */ = {
isa = PBXGroup;
children = (
3FB651611BF7CD4500ED886F /* fbsd.h */,
3FB651621BF7CD4500ED886F /* kexec.h */,
);
path = firmware;
sourceTree = "<group>";
};
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 = "<group>";
};
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 = "<group>";
};
3FB651861BF7CD4500ED886F /* intel */ = {
isa = PBXGroup;
children = (
3FB651871BF7CD4500ED886F /* vmcs.h */,
3FB651881BF7CD4500ED886F /* vmx.h */,
3FB651891BF7CD4500ED886F /* vmx_controls.h */,
3FB6518A1BF7CD4500ED886F /* vmx_msr.h */,
);
path = intel;
sourceTree = "<group>";
};
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 = "<group>";
};
/* 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 */;
}