[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [XEN][RFC PATCH 13/15] xl-qmp: add device model id to qmp function
With the support of multiple device, the qmp library needs to know which device model is currently used. Signed-off-by: Julien Grall <julien.grall@xxxxxxxxxx> --- tools/libxl/libxl_internal.h | 9 +++++---- tools/libxl/libxl_qmp.c | 24 +++++++++++++----------- 2 files changed, 18 insertions(+), 15 deletions(-) diff --git a/tools/libxl/libxl_internal.h b/tools/libxl/libxl_internal.h index 247bdb9..52a2429 100644 --- a/tools/libxl/libxl_internal.h +++ b/tools/libxl/libxl_internal.h @@ -1022,7 +1022,8 @@ 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); + uint32_t domid, + uint32_t 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); @@ -1034,12 +1035,12 @@ _hidden int libxl__qmp_migrate(libxl__gc *gc, int domid, int fd); _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, uint32_t domid, uint32_t deamonid); /* this helper calls qmp_initialize, query_serial and qmp_close */ _hidden int libxl__qmp_initializations(libxl__gc *gc, uint32_t domid, - const libxl_domain_config *guest_config); - + const libxl_domain_config *guest_config, + uint32_t dmid); /* from libxl_json */ #include <yajl/yajl_gen.h> diff --git a/tools/libxl/libxl_qmp.c b/tools/libxl/libxl_qmp.c index f5a3edc..89d3f48 100644 --- a/tools/libxl/libxl_qmp.c +++ b/tools/libxl/libxl_qmp.c @@ -624,7 +624,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, uint32_t domid, + uint32_t dmid) { int ret = 0; libxl__qmp_handler *qmp = NULL; @@ -632,8 +633,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); @@ -665,13 +666,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, uint32_t domid, uint32_t 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, @@ -744,7 +745,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; @@ -789,7 +790,7 @@ static int qmp_device_del(libxl__gc *gc, int domid, char *id) 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; @@ -850,7 +851,7 @@ int libxl__qmp_migrate(libxl__gc *gc, int domid, int fd) 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; @@ -904,13 +905,14 @@ static int qmp_change(libxl__gc *gc, libxl__qmp_handler *qmp, } int libxl__qmp_initializations(libxl__gc *gc, uint32_t domid, - const libxl_domain_config *guest_config) + const libxl_domain_config *guest_config, + uint32_t dmid) { const libxl_vnc_info *vnc = libxl__dm_vnc(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 |