diff options
author | Keir Fraser <keir.fraser@citrix.com> | 2009-10-07 07:46:36 +0100 |
---|---|---|
committer | Keir Fraser <keir.fraser@citrix.com> | 2009-10-07 07:46:36 +0100 |
commit | a98dc13703e091bb94e86a537d5c7a0ef9ffb62f (patch) | |
tree | baddf36a6fe54f4d3ea1bc0238b69a3e5f0de4bc /tools/libxc/xc_linux.c | |
parent | 1766cdc32b025ecea48d880370ddd78ece9bfc71 (diff) | |
download | xen-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.c | 32 |
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 |