aboutsummaryrefslogtreecommitdiffstats
path: root/xen/include/public/domctl.h
diff options
context:
space:
mode:
authorOlaf Hering <olaf@aepfle.de>2011-09-16 12:19:26 +0100
committerOlaf Hering <olaf@aepfle.de>2011-09-16 12:19:26 +0100
commit2c36185d4407f6932ecf3e8d5244049c816a8f91 (patch)
tree997b84c388238b9f9b12be38b704616d69ccb396 /xen/include/public/domctl.h
parentade1da50bcd9f686f32b5f92dc376260d650b396 (diff)
downloadxen-2c36185d4407f6932ecf3e8d5244049c816a8f91.tar.gz
xen-2c36185d4407f6932ecf3e8d5244049c816a8f91.tar.bz2
xen-2c36185d4407f6932ecf3e8d5244049c816a8f91.zip
mem_event: use different ringbuffers for share, paging and access
Up to now a single ring buffer was used for mem_share, xenpaging and xen-access. Each helper would have to cooperate and pull only its own requests from the ring. Unfortunately this was not implemented. And even if it was, it would make the whole concept fragile because a crash or early exit of one helper would stall the others. What happend up to now is that active xenpaging + memory_sharing would push memsharing requests in the buffer. xenpaging is not prepared for such requests. This patch creates an independet ring buffer for mem_share, xenpaging and xen-access and adds also new functions to enable xenpaging and xen-access. The xc_mem_event_enable/xc_mem_event_disable functions will be removed. The various XEN_DOMCTL_MEM_EVENT_* macros were cleaned up. Due to the removal the API changed, so the SONAME will be changed too. Signed-off-by: Olaf Hering <olaf@aepfle.de> Acked-by: Tim Deegan <tim@xen.org> Acked-by: Ian Jackson <ian.jackson@eu.citrix.com> Committed-by: Tim Deegan <tim@xen.org>
Diffstat (limited to 'xen/include/public/domctl.h')
-rw-r--r--xen/include/public/domctl.h43
1 files changed, 23 insertions, 20 deletions
diff --git a/xen/include/public/domctl.h b/xen/include/public/domctl.h
index c0dbc0234e..84f236d563 100644
--- a/xen/include/public/domctl.h
+++ b/xen/include/public/domctl.h
@@ -708,20 +708,18 @@ struct xen_domctl_gdbsx_domstatus {
/* XEN_DOMCTL_mem_event_op */
-/* Add and remove memory handlers */
-#define XEN_DOMCTL_MEM_EVENT_OP_ENABLE 0
-#define XEN_DOMCTL_MEM_EVENT_OP_DISABLE 1
-
/*
+* Domain memory paging
* Page memory in and out.
*/
#define XEN_DOMCTL_MEM_EVENT_OP_PAGING 1
-/* Domain memory paging */
-#define XEN_DOMCTL_MEM_EVENT_OP_PAGING_NOMINATE 0
-#define XEN_DOMCTL_MEM_EVENT_OP_PAGING_EVICT 1
-#define XEN_DOMCTL_MEM_EVENT_OP_PAGING_PREP 2
-#define XEN_DOMCTL_MEM_EVENT_OP_PAGING_RESUME 3
+#define XEN_DOMCTL_MEM_EVENT_OP_PAGING_ENABLE 0
+#define XEN_DOMCTL_MEM_EVENT_OP_PAGING_DISABLE 1
+#define XEN_DOMCTL_MEM_EVENT_OP_PAGING_NOMINATE 2
+#define XEN_DOMCTL_MEM_EVENT_OP_PAGING_EVICT 3
+#define XEN_DOMCTL_MEM_EVENT_OP_PAGING_PREP 4
+#define XEN_DOMCTL_MEM_EVENT_OP_PAGING_RESUME 5
/*
* Access permissions.
@@ -734,11 +732,14 @@ struct xen_domctl_gdbsx_domstatus {
* ACCESS_RESUME mode for the following domctl.
*/
#define XEN_DOMCTL_MEM_EVENT_OP_ACCESS 2
-#define XEN_DOMCTL_MEM_EVENT_OP_ACCESS_RESUME 0
+
+#define XEN_DOMCTL_MEM_EVENT_OP_ACCESS_ENABLE 0
+#define XEN_DOMCTL_MEM_EVENT_OP_ACCESS_DISABLE 1
+#define XEN_DOMCTL_MEM_EVENT_OP_ACCESS_RESUME 2
struct xen_domctl_mem_event_op {
- uint32_t op; /* XEN_DOMCTL_MEM_EVENT_OP_* */
- uint32_t mode; /* XEN_DOMCTL_MEM_EVENT_ENABLE_* */
+ uint32_t op; /* XEN_DOMCTL_MEM_EVENT_OP_*_* */
+ uint32_t mode; /* XEN_DOMCTL_MEM_EVENT_OP_* */
/* OP_ENABLE */
uint64_aligned_t shared_addr; /* IN: Virtual address of shared page */
@@ -755,14 +756,16 @@ DEFINE_XEN_GUEST_HANDLE(xen_domctl_mem_event_op_t);
*/
/* XEN_DOMCTL_mem_sharing_op */
-#define XEN_DOMCTL_MEM_SHARING_OP_CONTROL 0
-#define XEN_DOMCTL_MEM_SHARING_OP_NOMINATE_GFN 1
-#define XEN_DOMCTL_MEM_SHARING_OP_NOMINATE_GREF 2
-#define XEN_DOMCTL_MEM_SHARING_OP_SHARE 3
-#define XEN_DOMCTL_MEM_SHARING_OP_RESUME 4
-#define XEN_DOMCTL_MEM_SHARING_OP_DEBUG_GFN 5
-#define XEN_DOMCTL_MEM_SHARING_OP_DEBUG_MFN 6
-#define XEN_DOMCTL_MEM_SHARING_OP_DEBUG_GREF 7
+#define XEN_DOMCTL_MEM_EVENT_OP_SHARING 3
+
+#define XEN_DOMCTL_MEM_EVENT_OP_SHARING_CONTROL 0
+#define XEN_DOMCTL_MEM_EVENT_OP_SHARING_NOMINATE_GFN 1
+#define XEN_DOMCTL_MEM_EVENT_OP_SHARING_NOMINATE_GREF 2
+#define XEN_DOMCTL_MEM_EVENT_OP_SHARING_SHARE 3
+#define XEN_DOMCTL_MEM_EVENT_OP_SHARING_RESUME 4
+#define XEN_DOMCTL_MEM_EVENT_OP_SHARING_DEBUG_GFN 5
+#define XEN_DOMCTL_MEM_EVENT_OP_SHARING_DEBUG_MFN 6
+#define XEN_DOMCTL_MEM_EVENT_OP_SHARING_DEBUG_GREF 7
#define XEN_DOMCTL_MEM_SHARING_S_HANDLE_INVALID (-10)
#define XEN_DOMCTL_MEM_SHARING_C_HANDLE_INVALID (-9)