diff --git a/tools/libxl/libxl_aoutils.c b/tools/libxl/libxl_aoutils.c index ef679dd553..1502ffe105 100644 --- a/tools/libxl/libxl_aoutils.c +++ b/tools/libxl/libxl_aoutils.c @@ -46,7 +46,7 @@ int libxl__xswait_start(libxl__gc *gc, libxl__xswait_state *xswa) { int rc; - rc = libxl__ev_time_register_rel(gc, &xswa->time_ev, + rc = libxl__ev_time_register_rel(xswa->ao, &xswa->time_ev, xswait_timeout_callback, xswa->timeout_ms); if (rc) goto err; @@ -547,16 +547,18 @@ void libxl__async_exec_init(libxl__async_exec_state *aes) libxl__ev_child_init(&aes->child); } -int libxl__async_exec_start(libxl__gc *gc, libxl__async_exec_state *aes) +int libxl__async_exec_start(libxl__async_exec_state *aes) { pid_t pid; /* Convenience aliases */ + libxl__ao *ao = aes->ao; + AO_GC; libxl__ev_child *const child = &aes->child; char ** const args = aes->args; /* Set execution timeout */ - if (libxl__ev_time_register_rel(gc, &aes->time, + if (libxl__ev_time_register_rel(ao, &aes->time, async_exec_timeout, aes->timeout_ms)) { LOG(ERROR, "unable to register timeout for executing: %s", aes->what); diff --git a/tools/libxl/libxl_device.c b/tools/libxl/libxl_device.c index 951d125b84..b6276f6068 100644 --- a/tools/libxl/libxl_device.c +++ b/tools/libxl/libxl_device.c @@ -808,7 +808,7 @@ void libxl__initiate_device_remove(libxl__egc *egc, * TODO: 4.2 Bodge due to QEMU, see comment on top of * libxl__initiate_device_remove in libxl_internal.h */ - rc = libxl__ev_time_register_rel(gc, &aodev->timeout, + rc = libxl__ev_time_register_rel(ao, &aodev->timeout, device_qemu_timeout, LIBXL_QEMU_BODGE_TIMEOUT * 1000); if (rc) { @@ -1034,7 +1034,7 @@ static void device_hotplug(libxl__egc *egc, libxl__ao_device *aodev) aes->stdfds[1] = 2; aes->stdfds[2] = -1; - rc = libxl__async_exec_start(gc, aes); + rc = libxl__async_exec_start(aes); if (rc) goto out; diff --git a/tools/libxl/libxl_dom.c b/tools/libxl/libxl_dom.c index ccbcb6e3fb..40a2d79b33 100644 --- a/tools/libxl/libxl_dom.c +++ b/tools/libxl/libxl_dom.c @@ -1200,7 +1200,7 @@ static void domain_suspend_switch_qemu_xen_traditional_logdirty switch_logdirty_xswatch, lds->ret_path); if (rc) goto out; - rc = libxl__ev_time_register_rel(gc, &lds->timeout, + rc = libxl__ev_time_register_rel(ao, &lds->timeout, switch_logdirty_timeout, 10*1000); if (rc) goto out; @@ -1480,7 +1480,7 @@ static void domain_suspend_callback_common(libxl__egc *egc, rc = libxl__ev_evtchn_wait(gc, &dss->guest_evtchn); if (rc) goto err; - rc = libxl__ev_time_register_rel(gc, &dss->guest_timeout, + rc = libxl__ev_time_register_rel(ao, &dss->guest_timeout, suspend_common_wait_guest_timeout, 60*1000); if (rc) goto err; @@ -1611,7 +1611,7 @@ static void domain_suspend_common_wait_guest(libxl__egc *egc, "@releaseDomain"); if (rc) goto err; - rc = libxl__ev_time_register_rel(gc, &dss->guest_timeout, + rc = libxl__ev_time_register_rel(ao, &dss->guest_timeout, suspend_common_wait_guest_timeout, 60*1000); if (rc) goto err; @@ -1990,7 +1990,7 @@ static void remus_devices_commit_cb(libxl__egc *egc, */ /* Set checkpoint interval timeout */ - rc = libxl__ev_time_register_rel(gc, &dss->checkpoint_timeout, + rc = libxl__ev_time_register_rel(ao, &dss->checkpoint_timeout, remus_next_checkpoint, dss->interval); diff --git a/tools/libxl/libxl_event.c b/tools/libxl/libxl_event.c index 4b234a328b..217fe974e1 100644 --- a/tools/libxl/libxl_event.c +++ b/tools/libxl/libxl_event.c @@ -332,10 +332,11 @@ static void time_done_debug(libxl__gc *gc, const char *func, #endif } -int libxl__ev_time_register_abs(libxl__gc *gc, libxl__ev_time *ev, +int libxl__ev_time_register_abs(libxl__ao *ao, libxl__ev_time *ev, libxl__ev_time_callback *func, struct timeval absolute) { + AO_GC; int rc; CTX_LOCK; @@ -356,10 +357,11 @@ int libxl__ev_time_register_abs(libxl__gc *gc, libxl__ev_time *ev, } -int libxl__ev_time_register_rel(libxl__gc *gc, libxl__ev_time *ev, +int libxl__ev_time_register_rel(libxl__ao *ao, libxl__ev_time *ev, libxl__ev_time_callback *func, int milliseconds /* as for poll(2) */) { + AO_GC; struct timeval absolute; int rc; diff --git a/tools/libxl/libxl_internal.h b/tools/libxl/libxl_internal.h index 5004ef3c60..44b662c9eb 100644 --- a/tools/libxl/libxl_internal.h +++ b/tools/libxl/libxl_internal.h @@ -791,10 +791,10 @@ static inline void libxl__ev_fd_init(libxl__ev_fd *efd) static inline int libxl__ev_fd_isregistered(const libxl__ev_fd *efd) { return efd->fd >= 0; } -_hidden int libxl__ev_time_register_rel(libxl__gc*, libxl__ev_time *ev_out, +_hidden int libxl__ev_time_register_rel(libxl__ao*, libxl__ev_time *ev_out, libxl__ev_time_callback*, int milliseconds /* as for poll(2) */); -_hidden int libxl__ev_time_register_abs(libxl__gc*, libxl__ev_time *ev_out, +_hidden int libxl__ev_time_register_abs(libxl__ao*, libxl__ev_time *ev_out, libxl__ev_time_callback*, struct timeval); _hidden int libxl__ev_time_modify_rel(libxl__gc*, libxl__ev_time *ev, @@ -2166,7 +2166,7 @@ struct libxl__async_exec_state { }; void libxl__async_exec_init(libxl__async_exec_state *aes); -int libxl__async_exec_start(libxl__gc *gc, libxl__async_exec_state *aes); +int libxl__async_exec_start(libxl__async_exec_state *aes); bool libxl__async_exec_inuse(const libxl__async_exec_state *aes); /*----- device addition/removal -----*/ diff --git a/tools/libxl/libxl_remus_disk_drbd.c b/tools/libxl/libxl_remus_disk_drbd.c index afe9b61d56..5e0c9a68a1 100644 --- a/tools/libxl/libxl_remus_disk_drbd.c +++ b/tools/libxl/libxl_remus_disk_drbd.c @@ -120,7 +120,7 @@ static void match_async_exec(libxl__egc *egc, libxl__remus_device *dev) aes->stdfds[1] = -1; aes->stdfds[2] = -1; - rc = libxl__async_exec_start(gc, aes); + rc = libxl__async_exec_start(aes); if (rc) goto out; diff --git a/tools/libxl/libxl_test_timedereg.c b/tools/libxl/libxl_test_timedereg.c index a44639fece..e2cc27d9e5 100644 --- a/tools/libxl/libxl_test_timedereg.c +++ b/tools/libxl/libxl_test_timedereg.c @@ -30,12 +30,13 @@ static int seq; static void occurs(libxl__egc *egc, libxl__ev_time *ev, const struct timeval *requested_abs); -static void regs(libxl__gc *gc, int j) +static void regs(libxl__ao *ao, int j) { + AO_GC; int rc, i; LOG(DEBUG,"regs(%d)", j); for (i=0; i