aboutsummaryrefslogtreecommitdiffstats
path: root/tools
diff options
context:
space:
mode:
authorKeir Fraser <keir.fraser@citrix.com>2008-03-18 15:00:33 +0000
committerKeir Fraser <keir.fraser@citrix.com>2008-03-18 15:00:33 +0000
commit86d8fe5e6a886883cbbf15fb8c5d7399fd50bba6 (patch)
tree4ed5324001904721d4d5e084cd17c7baad9f2572 /tools
parent0de39e40277b50f7bca390602216e19a809cc45c (diff)
downloadxen-86d8fe5e6a886883cbbf15fb8c5d7399fd50bba6.tar.gz
xen-86d8fe5e6a886883cbbf15fb8c5d7399fd50bba6.tar.bz2
xen-86d8fe5e6a886883cbbf15fb8c5d7399fd50bba6.zip
libxc: Variable-size gntdev support
This patch adds the ability to set the number of slots that may be used for mapping grant references, using the gntdev user-space grant reference mapping driver. Signed-off-by: Derek Murray <Derek.Murray@cl.cam.ac.uk>
Diffstat (limited to 'tools')
-rw-r--r--tools/include/xen-sys/Linux/gntdev.h14
-rw-r--r--tools/libxc/xc_linux.c15
-rw-r--r--tools/libxc/xenctrl.h16
3 files changed, 43 insertions, 2 deletions
diff --git a/tools/include/xen-sys/Linux/gntdev.h b/tools/include/xen-sys/Linux/gntdev.h
index c95e46b663..8bd1467893 100644
--- a/tools/include/xen-sys/Linux/gntdev.h
+++ b/tools/include/xen-sys/Linux/gntdev.h
@@ -102,4 +102,18 @@ struct ioctl_gntdev_get_offset_for_vaddr {
uint32_t pad;
};
+/*
+ * Sets the maximum number of grants that may mapped at once by this gntdev
+ * instance.
+ *
+ * N.B. This must be called before any other ioctl is performed on the device.
+ */
+#define IOCTL_GNTDEV_SET_MAX_GRANTS \
+_IOC(_IOC_NONE, 'G', 3, sizeof(struct ioctl_gntdev_set_max_grants))
+struct ioctl_gntdev_set_max_grants {
+ /* IN parameter */
+ /* The maximum number of grants that may be mapped at once. */
+ uint32_t count;
+};
+
#endif /* __LINUX_PUBLIC_GNTDEV_H__ */
diff --git a/tools/libxc/xc_linux.c b/tools/libxc/xc_linux.c
index 32aaab819b..b6f9b82a52 100644
--- a/tools/libxc/xc_linux.c
+++ b/tools/libxc/xc_linux.c
@@ -4,7 +4,7 @@
* Use is subject to license terms.
*
* xc_gnttab functions:
- * Copyright (c) 2007, D G Murray <Derek.Murray@cl.cam.ac.uk>
+ * Copyright (c) 2007-2008, D G Murray <Derek.Murray@cl.cam.ac.uk>
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
@@ -505,6 +505,19 @@ int xc_gnttab_munmap(int xcg_handle,
return 0;
}
+int xc_gnttab_set_max_grants(int xcg_handle,
+ uint32_t count)
+{
+ struct ioctl_gntdev_set_max_grants set_max;
+ int rc;
+
+ set_max.count = count;
+ if ( (rc = ioctl(xcg_handle, IOCTL_GNTDEV_SET_MAX_GRANTS, &set_max)) )
+ return rc;
+
+ return 0;
+}
+
/*
* Local variables:
* mode: C
diff --git a/tools/libxc/xenctrl.h b/tools/libxc/xenctrl.h
index b22497c01e..8eb3f5ef6f 100644
--- a/tools/libxc/xenctrl.h
+++ b/tools/libxc/xenctrl.h
@@ -6,7 +6,7 @@
* Copyright (c) 2003-2004, K A Fraser.
*
* xc_gnttab functions:
- * Copyright (c) 2007, D G Murray <Derek.Murray@cl.cam.ac.uk>
+ * Copyright (c) 2007-2008, D G Murray <Derek.Murray@cl.cam.ac.uk>
*/
#ifndef XENCTRL_H
@@ -832,6 +832,20 @@ int xc_gnttab_munmap(int xcg_handle,
void *start_address,
uint32_t count);
+/*
+ * Sets the maximum number of grants that may be mapped by the given instance
+ * to @count.
+ *
+ * N.B. This function must be called after opening the handle, and before any
+ * other functions are invoked on it.
+ *
+ * N.B. When variable-length grants are mapped, fragmentation may be observed,
+ * and it may not be possible to satisfy requests up to the maximum number
+ * of grants.
+ */
+int xc_gnttab_set_max_grants(int xcg_handle,
+ uint32_t count);
+
int xc_hvm_set_pci_intx_level(
int xc_handle, domid_t dom,
uint8_t domain, uint8_t bus, uint8_t device, uint8_t intx,