|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH 24 of 29 RFC] libxl: add libxl_setup_hotplug_listener
# HG changeset patch
# User Roger Pau Monne <roger.pau@xxxxxxxxxxxxx>
# Date 1328179503 -3600
# Node ID 1506b1f2ab0fe5f4cd5bcd86a566d5a7be5f838b
# Parent 2708343292be6facb6a2d8aaf9a9d95afa61b7f6
libxl: add libxl_setup_hotplug_listener
Setup a xenstore watch on /hotplug/<domid> to react to hotplug
changes.
Signed-off-by: Roger Pau Monne <roger.pau@xxxxxxxxxxxxx>
diff -r 2708343292be -r 1506b1f2ab0f tools/libxl/libxl.c
--- a/tools/libxl/libxl.c Thu Feb 02 11:42:13 2012 +0100
+++ b/tools/libxl/libxl.c Thu Feb 02 11:45:03 2012 +0100
@@ -949,6 +949,40 @@ int libxl_vncviewer_exec(libxl_ctx *ctx,
}
/******************************************************************************/
+/*
+ * Hotplug functions
+ *
+ */
+
+int libxl_setup_hotplug_listener(libxl_ctx *ctx)
+{
+ GC_INIT(ctx);
+ char *hotplug_path, *id;
+ int rc;
+
+ id = libxl__xs_read(gc, XBT_NULL, "domid");
+ if (!id) {
+ LIBXL__LOG(ctx, LIBXL__LOG_ERROR, "unable to get domid");
+ rc = -1;
+ goto out;
+ }
+ hotplug_path = libxl__sprintf(gc, "/hotplug/%s", id);
+
+ xs_mkdir(ctx->xsh, XBT_NULL, hotplug_path);
+
+ if (!xs_watch(ctx->xsh, hotplug_path, hotplug_path)) {
+ LIBXL__LOG(ctx, LIBXL__LOG_ERROR, "unable to watch /hotplug/%s", id);
+ rc = -1;
+ goto out;
+ }
+
+ rc = 0;
+out:
+ GC_FREE;
+ return rc;
+}
+
+/******************************************************************************/
int libxl_device_disk_init(libxl_ctx *ctx, libxl_device_disk *disk)
{
diff -r 2708343292be -r 1506b1f2ab0f tools/libxl/libxl.h
--- a/tools/libxl/libxl.h Thu Feb 02 11:42:13 2012 +0100
+++ b/tools/libxl/libxl.h Thu Feb 02 11:45:03 2012 +0100
@@ -456,6 +456,14 @@ libxl_vminfo * libxl_list_vm(libxl_ctx *
*
* Requests de destruction of the given device and waits for the result.
*
+ * Hotplug
+ * -------
+ *
+ * libxl_setup_hotplug_listener(ctx):
+ *
+ * Set the necessary watches to start monitoring /hotplug/ entries for
+ * the caller domain.
+ *
*/
/* Disks */
@@ -523,6 +531,9 @@ int libxl_device_pci_remove(libxl_ctx *c
int libxl_device_pci_destroy(libxl_ctx *ctx, uint32_t domid, libxl_device_pci
*pcidev);
libxl_device_pci *libxl_device_pci_list(libxl_ctx *ctx, uint32_t domid, int
*num);
+/* Hotplug */
+int libxl_setup_hotplug_listener(libxl_ctx *ctx);
+
/*
* Parse a PCI BDF into a PCI device structure.
*/
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |