aboutsummaryrefslogtreecommitdiffstats
path: root/tools/libxc/xc_linux.c
diff options
context:
space:
mode:
authorKeir Fraser <keir.fraser@citrix.com>2009-10-07 07:46:36 +0100
committerKeir Fraser <keir.fraser@citrix.com>2009-10-07 07:46:36 +0100
commita98dc13703e091bb94e86a537d5c7a0ef9ffb62f (patch)
treebaddf36a6fe54f4d3ea1bc0238b69a3e5f0de4bc /tools/libxc/xc_linux.c
parent1766cdc32b025ecea48d880370ddd78ece9bfc71 (diff)
downloadxen-a98dc13703e091bb94e86a537d5c7a0ef9ffb62f.tar.gz
xen-a98dc13703e091bb94e86a537d5c7a0ef9ffb62f.tar.bz2
xen-a98dc13703e091bb94e86a537d5c7a0ef9ffb62f.zip
Introduce a grant_entry_v2 structure.
Signed-off-by: Steven Smith <steven.smith@citrix.com>
Diffstat (limited to 'tools/libxc/xc_linux.c')
-rw-r--r--tools/libxc/xc_linux.c32
1 files changed, 31 insertions, 1 deletions
diff --git a/tools/libxc/xc_linux.c b/tools/libxc/xc_linux.c
index fcddda3c1c..91dda1dec0 100644
--- a/tools/libxc/xc_linux.c
+++ b/tools/libxc/xc_linux.c
@@ -558,7 +558,21 @@ int xc_gnttab_op(int xc_handle, int cmd,
return ret;
}
-struct grant_entry_v1 *xc_gnttab_map_table(int xc_handle, int domid, int *gnt_num)
+int xc_gnttab_get_version(int xc_handle, int domid)
+{
+ struct gnttab_get_version query;
+ int rc;
+
+ query.dom = domid;
+ rc = xc_gnttab_op(xc_handle, GNTTABOP_get_version,
+ &query, sizeof(query), 1);
+ if (rc < 0)
+ return rc;
+ else
+ return query.version;
+}
+
+static void *_gnttab_map_table(int xc_handle, int domid, int *gnt_num)
{
int rc, i;
struct gnttab_query_size query;
@@ -638,6 +652,22 @@ err:
return gnt;
}
+struct grant_entry_v1 *xc_gnttab_map_table_v1(int xc_handle, int domid,
+ int *gnt_num)
+{
+ if (xc_gnttab_get_version(xc_handle, domid) == 2)
+ return NULL;
+ return _gnttab_map_table(xc_handle, domid, gnt_num);
+}
+
+struct grant_entry_v2 *xc_gnttab_map_table_v2(int xc_handle, int domid,
+ int *gnt_num)
+{
+ if (xc_gnttab_get_version(xc_handle, domid) != 2)
+ return NULL;
+ return _gnttab_map_table(xc_handle, domid, gnt_num);
+}
+
/*
* Local variables:
* mode: C