summaryrefslogtreecommitdiffstats
path: root/src/include
diff options
context:
space:
mode:
authorMichael Brown2016-03-16 22:27:07 +0100
committerMichael Brown2016-03-16 23:46:05 +0100
commitc14971bf887dc7aaa85788f71f8c4bdf93d2b7a5 (patch)
tree96f8fada3bfb72f784189308a5ae0c0da701678c /src/include
parent[hyperv] Use generic set_bit() function (diff)
downloadipxe-c14971bf887dc7aaa85788f71f8c4bdf93d2b7a5.tar.gz
ipxe-c14971bf887dc7aaa85788f71f8c4bdf93d2b7a5.tar.xz
ipxe-c14971bf887dc7aaa85788f71f8c4bdf93d2b7a5.zip
[xen] Use generic test_and_clear_bit() function
Signed-off-by: Michael Brown <mcb30@ipxe.org>
Diffstat (limited to 'src/include')
-rw-r--r--src/include/ipxe/xen.h14
1 files changed, 14 insertions, 0 deletions
diff --git a/src/include/ipxe/xen.h b/src/include/ipxe/xen.h
index eac1145ad..0fb8b7625 100644
--- a/src/include/ipxe/xen.h
+++ b/src/include/ipxe/xen.h
@@ -13,6 +13,7 @@ FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
#define __XEN_INTERFACE_VERSION__ 0x00040400
#include <stdint.h>
+#include <ipxe/bitops.h>
#include <ipxe/uaccess.h>
#include <xen/xen.h>
#include <xen/event_channel.h>
@@ -58,6 +59,19 @@ struct xen_hypervisor {
struct xen_store store;
};
+/**
+ * Test and clear pending event
+ *
+ * @v xen Xen hypervisor
+ * @v port Event channel port
+ * @ret pending Event was pending
+ */
+static inline __attribute__ (( always_inline )) int
+xenevent_pending ( struct xen_hypervisor *xen, evtchn_port_t port ) {
+
+ return test_and_clear_bit ( port, xen->shared->evtchn_pending );
+}
+
#include <bits/xen.h>
/**