⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 xenstore

📁 xen虚拟机源代码安装包
💻
字号:
Index: ioemu/xenstore.c===================================================================--- /dev/null	1970-01-01 00:00:00.000000000 +0000+++ ioemu/xenstore.c	2007-05-10 15:19:05.000000000 +0100@@ -0,0 +1,139 @@+/*+ * This file is subject to the terms and conditions of the GNU General+ * Public License.  See the file "COPYING" in the main directory of+ * this archive for more details.+ *+ * Copyright (C) 2006 Christian Limpach+ * Copyright (C) 2006 XenSource Ltd.+ *+ */++#include "vl.h"++static struct xs_handle *xsh = NULL;++static int pasprintf(char **buf, const char *fmt, ...)+{+    va_list ap;+    int ret = 0;++    if (*buf)+        free(*buf);+    va_start(ap, fmt);+    if (vasprintf(buf, fmt, ap) == -1) {+        buf = NULL;+        ret = -1;+    }+    va_end(ap);+    return ret;+}++void xenstore_parse_domain_config(int domid)+{+    char *path;++    xsh = xs_daemon_open();+    if (xsh == NULL) {+        fprintf(logfile, "Could not contact xenstore for domain config\n");+        return;+    }++    path = xs_get_domain_path(xsh, domid);+    if (path == NULL) {+        fprintf(logfile, "xs_get_domain_path() error\n");+        goto out;+    }++ out:+    free(path);+    return;+}++int xenstore_fd(void)+{+    if (xsh)+        return xs_fileno(xsh);+    return -1;+}++void xenstore_process_event(void *opaque)+{+    char **vec;+    unsigned int num;++    vec = xs_read_watch(xsh, &num);+    if (!vec)+        return;++ out:+    free(vec);+}++char *xenstore_vm_read(int domid, char *key, int *len)+{+    char *buf = NULL, *path = NULL, *value = NULL;++    if (xsh == NULL)+        goto out;++    path = xs_get_domain_path(xsh, domid);+    if (path == NULL) {+        fprintf(logfile, "xs_get_domain_path(%d): error\n", domid);+        goto out;+    }++    pasprintf(&buf, "%s/vm", path);+    free(path);+    path = xs_read(xsh, XBT_NULL, buf, NULL);+    if (path == NULL) {+        fprintf(logfile, "xs_read(%s): read error\n", buf);+        goto out;+    }++    pasprintf(&buf, "%s/%s", path, key);+    value = xs_read(xsh, XBT_NULL, buf, len);+    if (value == NULL) {+        fprintf(logfile, "xs_read(%s): read error\n", buf);+        goto out;+    }++ out:+    free(path);+    free(buf);+    return value;+}++int xenstore_vm_write(int domid, char *key, char *value)+{+    char *buf = NULL, *path = NULL;+    int rc = -1;++    if (xsh == NULL)+        goto out;++    path = xs_get_domain_path(xsh, domid);+    if (path == NULL) {+        fprintf(logfile, "xs_get_domain_path: error\n");+        goto out;+    }++    pasprintf(&buf, "%s/vm", path);+    free(path);+    path = xs_read(xsh, XBT_NULL, buf, NULL);+    if (path == NULL) {+        fprintf(logfile, "xs_read(%s): read error\n", buf);+        goto out;+    }++    pasprintf(&buf, "%s/%s", path, key);+    rc = xs_write(xsh, XBT_NULL, buf, value, strlen(value));+    if (rc) {+        fprintf(logfile, "xs_write(%s, %s): write error\n", buf, key);+        goto out;+    }++ out:+    free(path);+    free(buf);+    return rc;+}Index: ioemu/vl.h===================================================================--- ioemu.orig/vl.h	2007-05-10 15:18:58.000000000 +0100+++ ioemu/vl.h	2007-05-10 15:19:05.000000000 +0100@@ -1421,6 +1421,12 @@ void readline_start(const char *prompt, int is_password,                     ReadLineFunc *readline_func, void *opaque); +/* xenstore.c */+void xenstore_parse_domain_config(int domid);++int xenstore_vm_write(int domid, char *key, char *val);+char *xenstore_vm_read(int domid, char *key, int *len);+ void kqemu_record_dump(void);  extern char domain_name[];Index: ioemu/Makefile.target===================================================================--- ioemu.orig/Makefile.target	2007-05-10 15:17:54.000000000 +0100+++ ioemu/Makefile.target	2007-05-10 15:19:05.000000000 +0100@@ -390,6 +390,7 @@ VL_OBJS+= cirrus_vga.o mixeng.o parallel.o acpi.o piix_pci.o VL_OBJS+= usb-uhci.o smbus_eeprom.o VL_OBJS+= piix4acpi.o+VL_OBJS+= xenstore.o CPPFLAGS += -DHAS_AUDIO endif ifeq ($(TARGET_BASE_ARCH), ppc)Index: ioemu/vl.c===================================================================--- ioemu.orig/vl.c	2007-05-10 15:18:58.000000000 +0100+++ ioemu/vl.c	2007-05-10 15:19:05.000000000 +0100@@ -7338,6 +7338,10 @@     } #endif +#ifdef CONFIG_DM+    xenstore_parse_domain_config(domid);+#endif /* CONFIG_DM */+ #ifdef USE_KQEMU     if (smp_cpus > 1)         kqemu_allowed = 0;@@ -7627,6 +7631,8 @@         }     } +    qemu_set_fd_handler(xenstore_fd(), xenstore_process_event, NULL, NULL);+     machine->init(ram_size, vga_ram_size, boot_device,                   ds, fd_filename, snapshot,                   kernel_filename, kernel_cmdline, initrd_filename);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -