aboutsummaryrefslogtreecommitdiffstats
path: root/xen/include/xsm
diff options
context:
space:
mode:
authorDaniel De Graaf <dgdegra@tycho.nsa.gov>2013-01-11 10:40:58 +0000
committerDaniel De Graaf <dgdegra@tycho.nsa.gov>2013-01-11 10:40:58 +0000
commit58632b5b140c35e8003a4efbe1eabe936c602490 (patch)
tree11ef5d938d4e9b82cd0469e350b896169d9f6a49 /xen/include/xsm
parentaaba7a677dfc5e42aa4064565948cb2632f83dd5 (diff)
downloadxen-58632b5b140c35e8003a4efbe1eabe936c602490.tar.gz
xen-58632b5b140c35e8003a4efbe1eabe936c602490.tar.bz2
xen-58632b5b140c35e8003a4efbe1eabe936c602490.zip
xen: add XSM hook for XENMEM_exchange
Signed-off-by: Daniel De Graaf <dgdegra@tycho.nsa.gov> Committed-by: Keir Fraser <keir@xen.org>
Diffstat (limited to 'xen/include/xsm')
-rw-r--r--xen/include/xsm/dummy.h7
-rw-r--r--xen/include/xsm/xsm.h6
2 files changed, 13 insertions, 0 deletions
diff --git a/xen/include/xsm/dummy.h b/xen/include/xsm/dummy.h
index 6648739c38..9894d8d6d5 100644
--- a/xen/include/xsm/dummy.h
+++ b/xen/include/xsm/dummy.h
@@ -235,6 +235,13 @@ static XSM_INLINE int xsm_grant_query_size(struct domain *d1, struct domain *d2)
return 0;
}
+static XSM_INLINE int xsm_memory_exchange(struct domain *d)
+{
+ if ( d != current->domain && !IS_PRIV_FOR(current->domain, d) )
+ return -EPERM;
+ return 0;
+}
+
static XSM_INLINE int xsm_memory_adjust_reservation(struct domain *d1,
struct domain *d2)
{
diff --git a/xen/include/xsm/xsm.h b/xen/include/xsm/xsm.h
index d41eb549bc..a8c1d875cc 100644
--- a/xen/include/xsm/xsm.h
+++ b/xen/include/xsm/xsm.h
@@ -96,6 +96,7 @@ struct xsm_operations {
int (*get_pod_target) (struct domain *d);
int (*set_pod_target) (struct domain *d);
+ int (*memory_exchange) (struct domain *d);
int (*memory_adjust_reservation) (struct domain *d1, struct domain *d2);
int (*memory_stat_reservation) (struct domain *d1, struct domain *d2);
int (*memory_pin_page) (struct domain *d1, struct domain *d2, struct page_info *page);
@@ -453,6 +454,11 @@ static inline int xsm_set_pod_target (struct domain *d)
return xsm_ops->set_pod_target(d);
}
+static inline int xsm_memory_exchange (struct domain *d)
+{
+ return xsm_ops->memory_exchange(d);
+}
+
static inline int xsm_memory_adjust_reservation (struct domain *d1, struct
domain *d2)
{