mirror of
https://github.com/xen-project/xen.git
synced 2026-10-28 02:01:24 +01:00
libxl: Make libxl_qemu_monitor_command async
.. because it makes QMP calls which are going to be async. Signed-off-by: Anthony PERARD <anthony.perard@citrix.com> Acked-by: Ian Jackson <ian.jackson@eu.citrix.com>
This commit is contained in:
1 parent
1e3304005e
commit
8efef84cf2
3 files changed
+19
-6
No files matched your search
+13
-1
@@ -1222,6 +1222,7 @@ void libxl_mac_copy(libxl_ctx *ctx, libxl_mac *dst, const libxl_mac *src);
|
||||
* libxl_send_trigger()
|
||||
* libxl_set_vcpuonline()
|
||||
* libxl_retrieve_domain_configuration()
|
||||
* libxl_qemu_monitor_command()
|
||||
*/
|
||||
#define LIBXL_HAVE_FN_USING_QMP_ASYNC 1
|
||||
|
||||
@@ -2571,7 +2572,18 @@ int libxl_fd_set_nonblock(libxl_ctx *ctx, int fd, int nonblock);
|
||||
* via output.
|
||||
*/
|
||||
int libxl_qemu_monitor_command(libxl_ctx *ctx, uint32_t domid,
|
||||
const char *command_line, char **output);
|
||||
const char *command_line, char **output,
|
||||
const libxl_asyncop_how *ao_how)
|
||||
LIBXL_EXTERNAL_CALLERS_ONLY;
|
||||
#if defined(LIBXL_API_VERSION) && LIBXL_API_VERSION < 0x041300
|
||||
static inline int libxl_qemu_monitor_command_0x041200(libxl_ctx *ctx,
|
||||
uint32_t domid, const char *command_line, char **output)
|
||||
{
|
||||
return libxl_qemu_monitor_command(ctx, domid, command_line, output,
|
||||
NULL);
|
||||
}
|
||||
#define libxl_qemu_monitor_command libxl_qemu_monitor_command_0x041200
|
||||
#endif
|
||||
|
||||
#include <libxl_event.h>
|
||||
|
||||
|
||||
@@ -1291,15 +1291,16 @@ int libxl__qmp_hmp(libxl__gc *gc, int domid, const char *command_line,
|
||||
}
|
||||
|
||||
int libxl_qemu_monitor_command(libxl_ctx *ctx, uint32_t domid,
|
||||
const char *command_line, char **output)
|
||||
const char *command_line, char **output,
|
||||
const libxl_asyncop_how *ao_how)
|
||||
{
|
||||
GC_INIT(ctx);
|
||||
AO_CREATE(ctx, domid, ao_how);
|
||||
int rc;
|
||||
|
||||
rc = libxl__qmp_hmp(gc, domid, command_line, output);
|
||||
|
||||
GC_FREE;
|
||||
return rc;
|
||||
libxl__ao_complete(egc, ao, rc);
|
||||
return AO_INPROGRESS;
|
||||
}
|
||||
|
||||
int libxl__qmp_initializations(libxl__gc *gc, uint32_t domid,
|
||||
|
||||
+1
-1
@@ -228,7 +228,7 @@ int main_qemu_monitor_command(int argc, char **argv)
|
||||
return EXIT_FAILURE;
|
||||
}
|
||||
|
||||
ret = libxl_qemu_monitor_command(ctx, domid, cmd, &output);
|
||||
ret = libxl_qemu_monitor_command(ctx, domid, cmd, &output, NULL);
|
||||
if (!ret && output) {
|
||||
printf("%s\n", output);
|
||||
free(output);
|
||||
|
||||