[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [xen master] xenstore: move init-xenstore-domain to tools/helpers
commit 89bf86d1eb4a4f899c3c3ece758991f9bd361448 Author: Juergen Gross <jgross@xxxxxxxx> AuthorDate: Mon Jan 18 09:03:53 2016 +0100 Commit: Ian Campbell <ian.campbell@xxxxxxxxxx> CommitDate: Mon Jan 18 16:34:19 2016 +0000 xenstore: move init-xenstore-domain to tools/helpers The program init-xenstore-domain to start a xenstore domain instead of the xenstored daemon is built, but not installed. Change that. Move the program to a new tools subdirectory "helpers" to be able to use libxl in a later patch. Otherwise a dependency loop will be created. Signed-off-by: Juergen Gross <jgross@xxxxxxxx> Acked-by: Ian Campbell <ian.campbell@xxxxxxxxxx> --- .gitignore | 2 +- tools/Makefile | 1 + tools/helpers/Makefile | 34 +++++++++ tools/helpers/init-xenstore-domain.c | 119 +++++++++++++++++++++++++++++++++ tools/xenstore/Makefile | 9 --- tools/xenstore/init-xenstore-domain.c | 119 --------------------------------- 6 files changed, 155 insertions(+), 129 deletions(-) diff --git a/.gitignore b/.gitignore index 02b2100..01d3305 100644 --- a/.gitignore +++ b/.gitignore @@ -133,6 +133,7 @@ tools/flask/utils/flask-loadpolicy tools/flask/utils/flask-setenforce tools/flask/utils/flask-set-bool tools/flask/utils/flask-label-pci +tools/helpers/init-xenstore-domain tools/hotplug/common/hotplugpath.sh tools/hotplug/FreeBSD/rc.d/xencommons tools/hotplug/FreeBSD/rc.d/xendriverdomain @@ -201,7 +202,6 @@ tools/xenmon/xenbaked tools/xenpaging/xenpaging tools/xenpmd/xenpmd tools/xenstat/xentop/xentop -tools/xenstore/init-xenstore-domain tools/xenstore/xenstore tools/xenstore/xenstore-chmod tools/xenstore/xenstore-exists diff --git a/tools/Makefile b/tools/Makefile index 3f9289b..ccd0ae7 100644 --- a/tools/Makefile +++ b/tools/Makefile @@ -30,6 +30,7 @@ endif SUBDIRS-y += xenpmd SUBDIRS-y += libxl +SUBDIRS-y += helpers SUBDIRS-$(CONFIG_X86) += xenpaging SUBDIRS-$(CONFIG_X86) += debugger/gdbsx SUBDIRS-$(CONFIG_X86) += debugger/kdd diff --git a/tools/helpers/Makefile b/tools/helpers/Makefile new file mode 100644 index 0000000..52347fd --- /dev/null +++ b/tools/helpers/Makefile @@ -0,0 +1,34 @@ +# +# tools/helpers/Makefile +# + +XEN_ROOT = $(CURDIR)/../.. +include $(XEN_ROOT)/tools/Rules.mk + +ifeq ($(CONFIG_Linux),y) +PROGS += init-xenstore-domain +endif + +INIT_XENSTORE_DOMAIN_OBJS = init-xenstore-domain.o +$(INIT_XENSTORE_DOMAIN_OBJS): CFLAGS += $(CFLAGS_libxenguest) +$(INIT_XENSTORE_DOMAIN_OBJS): CFLAGS += $(CFLAGS_libxenctrl) +$(INIT_XENSTORE_DOMAIN_OBJS): CFLAGS += $(CFLAGS_libxenstore) + +.PHONY: all +all: $(PROGS) + +init-xenstore-domain: $(INIT_XENSTORE_DOMAIN_OBJS) + $(CC) $(LDFLAGS) -o $@ $(INIT_XENSTORE_DOMAIN_OBJS) $(LDLIBS_libxenstore) $(LDLIBS_libxenctrl) $(LDLIBS_libxenguest) $(APPEND_LDFLAGS) + +.PHONY: install +install: all + $(INSTALL_DIR) $(DESTDIR)$(LIBEXEC_BIN) +ifeq ($(CONFIG_Linux),y) + $(INSTALL_PROG) init-xenstore-domain $(DESTDIR)$(LIBEXEC_BIN) +endif + +.PHONY: clean +clean: + $(RM) -f *.o $(PROGS) $(DEPS) + +distclean: clean diff --git a/tools/helpers/init-xenstore-domain.c b/tools/helpers/init-xenstore-domain.c new file mode 100644 index 0000000..297afe5 --- /dev/null +++ b/tools/helpers/init-xenstore-domain.c @@ -0,0 +1,119 @@ +#include <fcntl.h> +#include <unistd.h> +#include <stdio.h> +#include <string.h> +#include <stdint.h> +#include <stdlib.h> +#include <sys/ioctl.h> +#include <sys/mman.h> +#include <xenctrl.h> +#include <xc_dom.h> +#include <xenstore.h> +#include <xen/sys/xenbus_dev.h> + +static uint32_t domid = -1; + +static int build(xc_interface *xch, int argc, char** argv) +{ + char cmdline[512]; + uint32_t ssid; + xen_domain_handle_t handle = { 0 }; + int rv, xs_fd; + struct xc_dom_image *dom = NULL; + int maxmem = atoi(argv[2]); + int limit_kb = (maxmem + 1)*1024; + + xs_fd = open("/dev/xen/xenbus_backend", O_RDWR); + if (xs_fd == -1) return -1; + + rv = xc_flask_context_to_sid(xch, argv[3], strlen(argv[3]), &ssid); + if (rv) goto err; + rv = xc_domain_create(xch, ssid, handle, 0, &domid, NULL); + if (rv) goto err; + rv = xc_domain_max_vcpus(xch, domid, 1); + if (rv) goto err; + rv = xc_domain_setmaxmem(xch, domid, limit_kb); + if (rv) goto err; + rv = xc_domain_set_memmap_limit(xch, domid, limit_kb); + if (rv) goto err; + + rv = ioctl(xs_fd, IOCTL_XENBUS_BACKEND_SETUP, domid); + if (rv < 0) goto err; + snprintf(cmdline, 512, "--event %d --internal-db", rv); + + dom = xc_dom_allocate(xch, cmdline, NULL); + rv = xc_dom_kernel_file(dom, argv[1]); + if (rv) goto err; + + if (argc > 4) { + rv = xc_dom_ramdisk_file(dom, argv[4]); + if (rv) goto err; + } + + rv = xc_dom_boot_xen_init(dom, xch, domid); + if (rv) goto err; + rv = xc_dom_parse_image(dom); + if (rv) goto err; + rv = xc_dom_mem_init(dom, maxmem); + if (rv) goto err; + rv = xc_dom_boot_mem_init(dom); + if (rv) goto err; + rv = xc_dom_build_image(dom); + if (rv) goto err; + rv = xc_dom_boot_image(dom); + if (rv) goto err; + + xc_dom_release(dom); + dom = NULL; + + rv = xc_domain_set_virq_handler(xch, domid, VIRQ_DOM_EXC); + if (rv) goto err; + rv = xc_domain_unpause(xch, domid); + if (rv) goto err; + + return 0; + +err: + if (dom) + xc_dom_release(dom); + close(xs_fd); + return rv; +} + +int main(int argc, char** argv) +{ + xc_interface *xch; + struct xs_handle *xsh; + char buf[16]; + int rv, fd; + + if (argc < 4 || argc > 5) { + printf("Use: %s <xenstore-kernel> <memory_mb> <flask-label> [<ramdisk-file>]\n", argv[0]); + return 2; + } + + xch = xc_interface_open(NULL, NULL, 0); + if (!xch) return 1; + + rv = build(xch, argc, argv); + + xc_interface_close(xch); + + if (rv) return 1; + + xsh = xs_open(0); + rv = snprintf(buf, 16, "%d", domid); + xs_write(xsh, XBT_NULL, "/tool/xenstored/domid", buf, rv); + xs_daemon_close(xsh); + + fd = creat("/var/run/xenstored.pid", 0666); + if (fd < 0) + return 3; + rv = snprintf(buf, 16, "domid:%d\n", domid); + rv = write(fd, buf, rv); + close(fd); + if (rv < 0) + return 3; + + return 0; +} diff --git a/tools/xenstore/Makefile b/tools/xenstore/Makefile index 1b4a494..404d4cb 100644 --- a/tools/xenstore/Makefile +++ b/tools/xenstore/Makefile @@ -46,10 +46,6 @@ ifeq ($(XENSTORE_XENSTORED),y) ALL_TARGETS += xs_tdb_dump xenstored endif -ifeq ($(CONFIG_Linux),y) -ALL_TARGETS += init-xenstore-domain -endif - ifdef CONFIG_STUBDOM CFLAGS += -DNO_SOCKETS=1 endif @@ -72,11 +68,6 @@ xenstored_probes.o: xenstored_solaris.o CFLAGS += -DHAVE_DTRACE=1 endif -init-xenstore-domain.o: CFLAGS += $(CFLAGS_libxenguest) - -init-xenstore-domain: init-xenstore-domain.o $(LIBXENSTORE) - $(CC) $^ $(LDFLAGS) $(LDLIBS_libxenctrl) $(LDLIBS_libxenguest) $(LDLIBS_libxenstore) -o $@ $(APPEND_LDFLAGS) - xenstored: $(XENSTORED_OBJS) $(CC) $^ $(LDFLAGS) $(LDLIBS_libxenctrl) $(SOCKET_LIBS) -o $@ $(APPEND_LDFLAGS) diff --git a/tools/xenstore/init-xenstore-domain.c b/tools/xenstore/init-xenstore-domain.c deleted file mode 100644 index 297afe5..0000000 --- a/tools/xenstore/init-xenstore-domain.c +++ /dev/null @@ -1,119 +0,0 @@ -#include <fcntl.h> -#include <unistd.h> -#include <stdio.h> -#include <string.h> -#include <stdint.h> -#include <stdlib.h> -#include <sys/ioctl.h> -#include <sys/mman.h> -#include <xenctrl.h> -#include <xc_dom.h> -#include <xenstore.h> -#include <xen/sys/xenbus_dev.h> - -static uint32_t domid = -1; - -static int build(xc_interface *xch, int argc, char** argv) -{ - char cmdline[512]; - uint32_t ssid; - xen_domain_handle_t handle = { 0 }; - int rv, xs_fd; - struct xc_dom_image *dom = NULL; - int maxmem = atoi(argv[2]); - int limit_kb = (maxmem + 1)*1024; - - xs_fd = open("/dev/xen/xenbus_backend", O_RDWR); - if (xs_fd == -1) return -1; - - rv = xc_flask_context_to_sid(xch, argv[3], strlen(argv[3]), &ssid); - if (rv) goto err; - rv = xc_domain_create(xch, ssid, handle, 0, &domid, NULL); - if (rv) goto err; - rv = xc_domain_max_vcpus(xch, domid, 1); - if (rv) goto err; - rv = xc_domain_setmaxmem(xch, domid, limit_kb); - if (rv) goto err; - rv = xc_domain_set_memmap_limit(xch, domid, limit_kb); - if (rv) goto err; - - rv = ioctl(xs_fd, IOCTL_XENBUS_BACKEND_SETUP, domid); - if (rv < 0) goto err; - snprintf(cmdline, 512, "--event %d --internal-db", rv); - - dom = xc_dom_allocate(xch, cmdline, NULL); - rv = xc_dom_kernel_file(dom, argv[1]); - if (rv) goto err; - - if (argc > 4) { - rv = xc_dom_ramdisk_file(dom, argv[4]); - if (rv) goto err; - } - - rv = xc_dom_boot_xen_init(dom, xch, domid); - if (rv) goto err; - rv = xc_dom_parse_image(dom); - if (rv) goto err; - rv = xc_dom_mem_init(dom, maxmem); - if (rv) goto err; - rv = xc_dom_boot_mem_init(dom); - if (rv) goto err; - rv = xc_dom_build_image(dom); - if (rv) goto err; - rv = xc_dom_boot_image(dom); - if (rv) goto err; - - xc_dom_release(dom); - dom = NULL; - - rv = xc_domain_set_virq_handler(xch, domid, VIRQ_DOM_EXC); - if (rv) goto err; - rv = xc_domain_unpause(xch, domid); - if (rv) goto err; - - return 0; - -err: - if (dom) - xc_dom_release(dom); - close(xs_fd); - return rv; -} - -int main(int argc, char** argv) -{ - xc_interface *xch; - struct xs_handle *xsh; - char buf[16]; - int rv, fd; - - if (argc < 4 || argc > 5) { - printf("Use: %s <xenstore-kernel> <memory_mb> <flask-label> [<ramdisk-file>]\n", argv[0]); - return 2; - } - - xch = xc_interface_open(NULL, NULL, 0); - if (!xch) return 1; - - rv = build(xch, argc, argv); - - xc_interface_close(xch); - - if (rv) return 1; - - xsh = xs_open(0); - rv = snprintf(buf, 16, "%d", domid); - xs_write(xsh, XBT_NULL, "/tool/xenstored/domid", buf, rv); - xs_daemon_close(xsh); - - fd = creat("/var/run/xenstored.pid", 0666); - if (fd < 0) - return 3; - rv = snprintf(buf, 16, "domid:%d\n", domid); - rv = write(fd, buf, rv); - close(fd); - if (rv < 0) - return 3; - - return 0; -} -- generated by git-patchbot for /home/xen/git/xen.git#master _______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxx http://lists.xensource.com/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |