]> xenbits.xensource.com Git - xen.git/commitdiff
libxl: ao abort: Provide explicit internal abort check API
authorIan Jackson <ian.jackson@eu.citrix.com>
Tue, 10 Feb 2015 19:16:08 +0000 (19:16 +0000)
committerIan Jackson <Ian.Jackson@eu.citrix.com>
Fri, 26 Jun 2015 15:53:50 +0000 (16:53 +0100)
Some places in libxl which can't handle abort via a
libxl__ao_abortable callback might nevertheless benefit from being
able to explicitly check whether abort has been requested.

Provide the (fairly trivial) internal API function to do this.

Signed-off-by: Ian Jackson <Ian.Jackson@eu.citrix.com>
Acked-by: Ian Campbell <ian.campbell@citrix.com>
---
v2: New in this version of the series.

tools/libxl/libxl_event.c
tools/libxl/libxl_internal.h

index f9daa55d32f8cb932cff2278f6150e955330ab89..50155636f2622e619bdf66624b5c16cf8b852134 100644 (file)
@@ -2033,6 +2033,17 @@ int libxl_ao_abort(libxl_ctx *ctx, const libxl_asyncop_how *how)
     return rc;
 }
 
+int libxl__ao_aborting(libxl__ao *ao)
+{
+    libxl__ao *root = ao_nested_root(ao);
+    if (root->aborting) {
+        DBG("ao=%p: aborting at explicit check (root=%p)", ao, root);
+        return ERROR_ABORTED;
+    }
+
+    return 0;
+}
+
 int libxl__ao_abortable_register(libxl__ao_abortable *abrt)
 {
     libxl__ao *ao = abrt->ao;
index 411f7ad7326a17da7fd35ee4a5f897e9f8108a54..4150071d5c79937636186d558158822378528f5a 100644 (file)
@@ -226,6 +226,8 @@ static inline void libxl__ao_abortable_init
 static inline bool libxl__ao_abortable_isregistered
   (const libxl__ao_abortable *c) { return c->registered; }
 
+int libxl__ao_aborting(libxl__ao *ao); /* -> 0 or ERROR_ABORTED */
+
 
 typedef struct libxl__ev_time libxl__ev_time;
 typedef void libxl__ev_time_callback(libxl__egc *egc, libxl__ev_time *ev,