[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH RFC 10/23] xenstored: add the FreeBSD xenstored interface
This patch adds FreeBSD support to xenstored, by implementing the FreeBSD interface to /dev/xen/xenstored. Signed-off-by: Roger Pau Monnà <roger.pau@xxxxxxxxxx> Cc: Ian Jackson <Ian.Jackson@xxxxxxxxxxxxx> Cc: Ian Campbell <ian.campbell@xxxxxxxxxx> --- tools/xenstore/Makefile | 1 + tools/xenstore/xenstored_freebsd.c | 72 ++++++++++++++++++++++++++++++++++++ tools/xenstore/xs_lib.c | 2 + 3 files changed, 75 insertions(+), 0 deletions(-) create mode 100644 tools/xenstore/xenstored_freebsd.c diff --git a/tools/xenstore/Makefile b/tools/xenstore/Makefile index 262f401..0b2b2c7 100644 --- a/tools/xenstore/Makefile +++ b/tools/xenstore/Makefile @@ -14,6 +14,7 @@ CLIENTS += xenstore-write xenstore-ls xenstore-watch XENSTORED_OBJS = xenstored_core.o xenstored_watch.o xenstored_domain.o xenstored_transaction.o xs_lib.o talloc.o utils.o tdb.o hashtable.o XENSTORED_OBJS_$(CONFIG_Linux) = xenstored_linux.o xenstored_posix.o +XENSTORED_OBJS_$(CONFIG_FreeBSD) = xenstored_freebsd.o xenstored_posix.o XENSTORED_OBJS_$(CONFIG_SunOS) = xenstored_solaris.o xenstored_posix.o xenstored_probes.o XENSTORED_OBJS_$(CONFIG_NetBSD) = xenstored_netbsd.o xenstored_posix.o XENSTORED_OBJS_$(CONFIG_MiniOS) = xenstored_minios.o diff --git a/tools/xenstore/xenstored_freebsd.c b/tools/xenstore/xenstored_freebsd.c new file mode 100644 index 0000000..f4e5fc2 --- /dev/null +++ b/tools/xenstore/xenstored_freebsd.c @@ -0,0 +1,72 @@ +/****************************************************************************** + * + * Copyright 2006 Sun Microsystems, Inc. All rights reserved. + * Use is subject to license terms. + * + * Copyright (C) 2005 Rusty Russell IBM Corporation + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation, version 2 of the + * License. + */ + +#include <fcntl.h> +#include <unistd.h> +#include <stdlib.h> +#include <sys/mman.h> + +#include "xenstored_core.h" + +#define XENSTORED_DEV "/dev/xen/xenstored" + +evtchn_port_t xenbus_evtchn(void) +{ + int fd; + int rc; + evtchn_port_t port; + char str[20]; + + fd = open(XENSTORED_DEV, O_RDONLY); + if (fd == -1) + return -1; + + rc = read(fd, str, sizeof(str) - 1); + if (rc == -1) + { + int err = errno; + close(fd); + errno = err; + return -1; + } + + str[rc] = '\0'; + port = strtoul(str, NULL, 0); + + close(fd); + return port; +} + +void *xenbus_map(void) +{ + int fd; + void *addr; + + fd = open(XENSTORED_DEV, O_RDWR); + if (fd == -1) + return NULL; + + addr = mmap(NULL, getpagesize(), PROT_READ|PROT_WRITE, + MAP_SHARED, fd, 0); + + if (addr == MAP_FAILED) + addr = NULL; + + close(fd); + + return addr; +} + +void xenbus_notify_running(void) +{ +} diff --git a/tools/xenstore/xs_lib.c b/tools/xenstore/xs_lib.c index f7076cc..dfbeff1 100644 --- a/tools/xenstore/xs_lib.c +++ b/tools/xenstore/xs_lib.c @@ -84,6 +84,8 @@ const char *xs_domain_dev(void) return "/proc/xen/xenbus"; #elif defined(__NetBSD__) return "/kern/xen/xenbus"; +#elif defined(__FreeBSD__) + return "/dev/xen/xenstore"; #else return "/dev/xen/xenbus"; #endif -- 1.7.7.5 (Apple Git-26) _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |