|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH 20/35] libxl: ao abort: Provide public ao abort request API
On Thu, Jun 25, 2015 at 06:44:20PM +0100, Ian Jackson wrote:
[...]
> + * It is possible to abort even an operation which is being performed
> + * synchronously, but since in that case how==NULL you had better only
> + * have one such operation, because it is not possible to tell them
> + * apart. (And, if you want to do this, obviously the abort would
> + * have to be requested on a different thread.)
> + */
> +int libxl_ao_abort(libxl_ctx *ctx, const libxl_asyncop_how *how)
> + LIBXL_EXTERNAL_CALLERS_ONLY;
> +
> +
> #define LIBXL_VERSION 0
>
[...]
> +
> +int libxl_ao_abort(libxl_ctx *ctx, const libxl_asyncop_how *how)
> +{
> + libxl__ao *search;
> + libxl__ctx_lock(ctx);
> + int rc;
> +
> + LIBXL_LIST_FOREACH(search, &ctx->aos_inprogress, inprogress_entry) {
> + if (how) {
> + /* looking for ao to be reported by callback or event */
> + if (search->poller)
> + /* sync */
> + continue;
> + if (how->callback != search->how.callback)
> + continue;
> + if (how->callback
> + ? (how->u.for_callback != search->how.u.for_callback)
> + : (how->u.for_event != search->how.u.for_event))
> + continue;
> + } else {
> + /* looking for synchronous call */
> + if (!search->poller)
> + /* async */
> + continue;
> + }
I interpreted the doc more like "it aborts all sync operations".
This function only aborts the first synchronous operation it finds.
The doc didn't make this clear.
Wei.
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |