[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [XEN][RFC PATCH V2 13/17] xl: add device model id to qmp functions
With the support of multiple device model, the qmp library need to know which device models is currently used. Signed-off-by: Julien Grall <julien.grall@xxxxxxxxxx> --- tools/libxl/libxl_internal.h | 24 ++++++++++++------- tools/libxl/libxl_qmp.c | 49 ++++++++++++++++++++++++------------------ 2 files changed, 43 insertions(+), 30 deletions(-) diff --git a/tools/libxl/libxl_internal.h b/tools/libxl/libxl_internal.h index 7c3b179..71e4970 100644 --- a/tools/libxl/libxl_internal.h +++ b/tools/libxl/libxl_internal.h @@ -1384,26 +1384,32 @@ typedef struct libxl__qmp_handler libxl__qmp_handler; * Return an handler or NULL if there is an error */ _hidden libxl__qmp_handler *libxl__qmp_initialize(libxl__gc *gc, - uint32_t domid); + libxl_domid domid, + libxl_dmid dmid); /* ask to QEMU the serial port information and store it in xenstore. */ _hidden int libxl__qmp_query_serial(libxl__qmp_handler *qmp); -_hidden int libxl__qmp_pci_add(libxl__gc *gc, int d, libxl_device_pci *pcidev); -_hidden int libxl__qmp_pci_del(libxl__gc *gc, int domid, - libxl_device_pci *pcidev); +_hidden int libxl__qmp_pci_add(libxl__gc *gc, libxl_domid d, + libxl_dmid dmid, libxl_device_pci *pcidev); +_hidden int libxl__qmp_pci_del(libxl__gc *gc, libxl_domid domid, + libxl_dmid dmid, libxl_device_pci *pcidev); /* Suspend QEMU. */ -_hidden int libxl__qmp_stop(libxl__gc *gc, int domid); +_hidden int libxl__qmp_stop(libxl__gc *gc, libxl_domid domid, libxl_dmid dmid); /* Resume QEMU. */ -_hidden int libxl__qmp_resume(libxl__gc *gc, int domid); +_hidden int libxl__qmp_resume(libxl__gc *gc, libxl_domid domid, + libxl_dmid dmid); /* Save current QEMU state into fd. */ -_hidden int libxl__qmp_save(libxl__gc *gc, int domid, const char *filename); +_hidden int libxl__qmp_save(libxl__gc *gc, libxl_domid domid, + libxl_dmid dmid, const char *filename); /* close and free the QMP handler */ _hidden void libxl__qmp_close(libxl__qmp_handler *qmp); /* remove the socket file, if the file has already been removed, * nothing happen */ -_hidden void libxl__qmp_cleanup(libxl__gc *gc, uint32_t domid); +_hidden void libxl__qmp_cleanup(libxl__gc *gc, libxl_domid domid, + libxl_dmid dmid); /* this helper calls qmp_initialize, query_serial and qmp_close */ -_hidden int libxl__qmp_initializations(libxl__gc *gc, uint32_t domid, +_hidden int libxl__qmp_initializations(libxl__gc *gc, libxl_domid domid, + libxl_dmid dmid, const libxl_domain_config *guest_config); /* on failure, logs */ diff --git a/tools/libxl/libxl_qmp.c b/tools/libxl/libxl_qmp.c index e33b130..3c3cccf 100644 --- a/tools/libxl/libxl_qmp.c +++ b/tools/libxl/libxl_qmp.c @@ -627,7 +627,8 @@ static void qmp_free_handler(libxl__qmp_handler *qmp) * API */ -libxl__qmp_handler *libxl__qmp_initialize(libxl__gc *gc, uint32_t domid) +libxl__qmp_handler *libxl__qmp_initialize(libxl__gc *gc, libxl_domid domid, + libxl_dmid dmid) { int ret = 0; libxl__qmp_handler *qmp = NULL; @@ -635,8 +636,8 @@ libxl__qmp_handler *libxl__qmp_initialize(libxl__gc *gc, uint32_t domid) qmp = qmp_init_handler(gc, domid); - qmp_socket = libxl__sprintf(gc, "%s/qmp-libxl-%d", - libxl__run_dir_path(), domid); + qmp_socket = libxl__sprintf(gc, "%s/qmp-libxl-%u-%u", + libxl__run_dir_path(), domid, dmid); if ((ret = qmp_open(qmp, qmp_socket, QMP_SOCKET_CONNECT_TIMEOUT)) < 0) { LIBXL__LOG_ERRNO(qmp->ctx, LIBXL__LOG_ERROR, "Connection error"); qmp_free_handler(qmp); @@ -668,13 +669,13 @@ void libxl__qmp_close(libxl__qmp_handler *qmp) qmp_free_handler(qmp); } -void libxl__qmp_cleanup(libxl__gc *gc, uint32_t domid) +void libxl__qmp_cleanup(libxl__gc *gc, libxl_domid domid, libxl_dmid dmid) { libxl_ctx *ctx = libxl__gc_owner(gc); char *qmp_socket; - qmp_socket = libxl__sprintf(gc, "%s/qmp-libxl-%d", - libxl__run_dir_path(), domid); + qmp_socket = libxl__sprintf(gc, "%s/qmp-libxl-%u-%u", + libxl__run_dir_path(), domid, dmid); if (unlink(qmp_socket) == -1) { if (errno != ENOENT) { LIBXL__LOG_ERRNO(ctx, LIBXL__LOG_ERROR, @@ -746,7 +747,9 @@ out: return rc; } -int libxl__qmp_pci_add(libxl__gc *gc, int domid, libxl_device_pci *pcidev) +int libxl__qmp_pci_add(libxl__gc *gc, libxl_domid domid, + libxl_dmid dmid, + libxl_device_pci *pcidev) { libxl__qmp_handler *qmp = NULL; flexarray_t *parameters = NULL; @@ -754,7 +757,7 @@ int libxl__qmp_pci_add(libxl__gc *gc, int domid, libxl_device_pci *pcidev) char *hostaddr = NULL; int rc = 0; - qmp = libxl__qmp_initialize(gc, domid); + qmp = libxl__qmp_initialize(gc, domid, 0); if (!qmp) return -1; @@ -792,14 +795,15 @@ int libxl__qmp_pci_add(libxl__gc *gc, int domid, libxl_device_pci *pcidev) return rc; } -static int qmp_device_del(libxl__gc *gc, int domid, char *id) +static int qmp_device_del(libxl__gc *gc, libxl_domid domid, + libxl_dmid dmid, char *id) { libxl__qmp_handler *qmp = NULL; flexarray_t *parameters = NULL; libxl_key_value_list args = NULL; int rc = 0; - qmp = libxl__qmp_initialize(gc, domid); + qmp = libxl__qmp_initialize(gc, domid, 0); if (!qmp) return ERROR_FAIL; @@ -817,24 +821,26 @@ static int qmp_device_del(libxl__gc *gc, int domid, char *id) return rc; } -int libxl__qmp_pci_del(libxl__gc *gc, int domid, libxl_device_pci *pcidev) +int libxl__qmp_pci_del(libxl__gc *gc, libxl_domid domid, + libxl_domid dmid, libxl_device_pci *pcidev) { char *id = NULL; id = libxl__sprintf(gc, PCI_PT_QDEV_ID, pcidev->bus, pcidev->dev, pcidev->func); - return qmp_device_del(gc, domid, id); + return qmp_device_del(gc, domid, dmid, id); } -int libxl__qmp_save(libxl__gc *gc, int domid, const char *filename) +int libxl__qmp_save(libxl__gc *gc, libxl_domid domid, + libxl_dmid dmid, const char *filename) { libxl__qmp_handler *qmp = NULL; flexarray_t *parameters = NULL; libxl_key_value_list args = NULL; int rc = 0; - qmp = libxl__qmp_initialize(gc, domid); + qmp = libxl__qmp_initialize(gc, domid, dmid); if (!qmp) return ERROR_FAIL; @@ -883,12 +889,12 @@ static int qmp_change(libxl__gc *gc, libxl__qmp_handler *qmp, return rc; } -int libxl__qmp_stop(libxl__gc *gc, int domid) +int libxl__qmp_stop(libxl__gc *gc, libxl_domid domid, libxl_dmid dmid) { libxl__qmp_handler *qmp = NULL; int rc = 0; - qmp = libxl__qmp_initialize(gc, domid); + qmp = libxl__qmp_initialize(gc, domid, dmid); if (!qmp) return ERROR_FAIL; @@ -899,12 +905,12 @@ int libxl__qmp_stop(libxl__gc *gc, int domid) return rc; } -int libxl__qmp_resume(libxl__gc *gc, int domid) +int libxl__qmp_resume(libxl__gc *gc, libxl_domid domid, libxl_dmid dmid) { libxl__qmp_handler *qmp = NULL; int rc = 0; - qmp = libxl__qmp_initialize(gc, domid); + qmp = libxl__qmp_initialize(gc, domid, dmid); if (!qmp) return ERROR_FAIL; @@ -915,14 +921,15 @@ int libxl__qmp_resume(libxl__gc *gc, int domid) return rc; } -int libxl__qmp_initializations(libxl__gc *gc, uint32_t domid, +int libxl__qmp_initializations(libxl__gc *gc, libxl_domid domid, + libxl_dmid dmid, const libxl_domain_config *guest_config) { - const libxl_vnc_info *vnc = libxl__dm_vnc(guest_config); + const libxl_vnc_info *vnc = libxl__dm_vnc(dmid, guest_config); libxl__qmp_handler *qmp = NULL; int ret = 0; - qmp = libxl__qmp_initialize(gc, domid); + qmp = libxl__qmp_initialize(gc, domid, dmid); if (!qmp) return -1; ret = libxl__qmp_query_serial(qmp); -- Julien Grall _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |