|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH 22/24] libxl: clarify definition of "slow" operation
On Mon, 2012-04-16 at 18:18 +0100, Ian Jackson wrote:
> Update the comment in libxl_internal.h to be clearer about which
> application-facing libxl operations need to take an ao_how.
>
> Reported-by: Dan Magenheimer <dan.magenheimer@xxxxxxxxxx>
> Signed-off-by: Ian Jackson <ian.jackson@xxxxxxxxxxxxx>
Acked-by: Ian Campbell <ian.campbell@xxxxxxxxxx>
> ---
> tools/libxl/libxl_internal.h | 29 +++++++++++++++++++++++------
> 1 files changed, 23 insertions(+), 6 deletions(-)
>
> diff --git a/tools/libxl/libxl_internal.h b/tools/libxl/libxl_internal.h
> index b77a891..fb4dee8 100644
> --- a/tools/libxl/libxl_internal.h
> +++ b/tools/libxl/libxl_internal.h
> @@ -1399,17 +1399,34 @@ _hidden void libxl__egc_cleanup(libxl__egc *egc);
> /*
> * Machinery for asynchronous operations ("ao")
> *
> - * All "slow" functions (includes anything that might block on a
> - * guest or an external script) need to use the asynchronous
> - * operation ("ao") machinery. The function should take a parameter
> - * const libxl_asyncop_how *ao_how and must start with a call to
> - * AO_INITIATOR_ENTRY. These functions MAY NOT be called from
> - * inside libxl, because they can cause reentrancy callbacks.
> + * All "slow" functions (see below for the exact definition) need to
> + * use the asynchronous operation ("ao") machinery. The function
> + * should take a parameter const libxl_asyncop_how *ao_how and must
> + * start with a call to AO_INITIATOR_ENTRY. These functions MAY NOT
> + * be called from inside libxl, because they can cause reentrancy
> + * callbacks.
> *
> * For the same reason functions taking an ao_how may make themselves
> * an egc with EGC_INIT (and they will generally want to, to be able
> * to immediately complete an ao during its setup).
> *
> + *
> + * "Slow" functions includes any that might block on a guest or an
> + * external script. More broadly, it includes any operations which
> + * are sufficiently slow that an application might reasonably want to
> + * initiate them, and then carry on doing something else, while the
> + * operation completes. That is, a "fast" function must be fast
> + * enough that we do not mind blocking all other management operations
> + * on the same host while it completes.
> + *
> + * There are certain primitive functions which make a libxl operation
> + * necessarily "slow" for API reasons. These are:
> + * - awaiting xenstore watches (although read-modify-write xenstore
> + * transactions are OK for fast functions)
> + * - spawning subprocesses
> + * - anything with a timeout
> + *
> + *
> * Lifecycle of an ao:
> *
> * - Created by libxl__ao_create (or the AO_CREATE convenience macro).
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |