|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH 8/9] libxl: Introduce libxl__ev_devstate
On Fri, 2012-01-13 at 19:25 +0000, Ian Jackson wrote:
> Provide a new-style asynchronous facility for waiting for device
> states on xenbus. This will replace libxl__wait_for_device_state,
> after the callers have been updated in later patches.
Is event-with-timeout likely to be a useful/common enough pattern to be
worth baking into the infrastructure/helpers rather than implementing
just for this one event type? (if yes then, "I will refactor for the
second user is a valid response").
> Signed-off-by: Ian Jackson <ian.jackson@xxxxxxxxxxxxx>
> ---
> tools/libxl/libxl_event.c | 75
> ++++++++++++++++++++++++++++++++++++++++++
> tools/libxl/libxl_internal.h | 41 +++++++++++++++++++++++
> 2 files changed, 116 insertions(+), 0 deletions(-)
>
> diff --git a/tools/libxl/libxl_event.c b/tools/libxl/libxl_event.c
> index b99049a..1d271b8 100644
> --- a/tools/libxl/libxl_event.c
> +++ b/tools/libxl/libxl_event.c
> @@ -507,6 +507,81 @@ void libxl__ev_xswatch_deregister(libxl__gc *gc,
> libxl__ev_xswatch *w)
[...]
> + libxl__ev_devstate_cancel(gc, ds);
> + ds->callback(egc, ds, rc);
> +}
> +
> +static void devstate_timeout(libxl__egc *egc, libxl__ev_time *ev,
> + const struct timeval *requested_abs)
> +{
> + EGC_GC;
> + libxl__ev_devstate *ds = CONTAINER_OF(ev, *ds, timeout);
> + LIBXL__LOG(CTX, LIBXL__LOG_DEBUG, "backend %s wanted state %d "
> + " timed out", ds->watch.path, ds->wanted);
> + libxl__ev_devstate_cancel(gc, ds);
What prevents racing here with the watch happening? Might the caller see
two callbacks?
> + ds->callback(egc, ds, ERROR_TIMEDOUT);
> +}
> +
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |