These are used as part of the Xen hypercall interfaces.
Signed-off-by: Daniel Castro evil.dani@gmail.com --- src/xen.h | 61 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--- 1 files changed, 58 insertions(+), 3 deletions(-)
diff --git a/src/xen.h b/src/xen.h index 0ed1e9f..f65078a 100644 --- a/src/xen.h +++ b/src/xen.h @@ -17,6 +17,8 @@ static inline int usingXen(void) { }
unsigned long xen_hypercall_page; +typedef unsigned long xen_ulong_t; +typedef unsigned long xen_pfn_t;
#define _hypercall0(type, name) \ ({ \ @@ -121,15 +123,68 @@ unsigned long xen_hypercall_page; * DEALINGS IN THE SOFTWARE. */
-/* xen.h */ +/****************************************************************************** + * arch-x86/xen.h + * + * Guest OS interface to x86 Xen. + * + * Copyright (c) 2004-2006, K A Fraser + */
-#define __HYPERVISOR_xen_version 17
-/* version.h */ +/* Structural guest handles introduced in 0x00030201. */ +#define ___DEFINE_XEN_GUEST_HANDLE(name, type) \ + typedef struct { type *p; } __guest_handle_ ## name + +#define __DEFINE_XEN_GUEST_HANDLE(name, type) \ + ___DEFINE_XEN_GUEST_HANDLE(name, type); \ + ___DEFINE_XEN_GUEST_HANDLE(const_##name, const type) +#define DEFINE_XEN_GUEST_HANDLE(name) __DEFINE_XEN_GUEST_HANDLE(name, name) +#define __XEN_GUEST_HANDLE(name) __guest_handle_ ## name +#define XEN_GUEST_HANDLE(name) __XEN_GUEST_HANDLE(name) +#define set_xen_guest_handle_raw(hnd, val) do { (hnd).p = val; } while (0) +#define set_xen_guest_handle(hnd, val) set_xen_guest_handle_raw(hnd, val) + +/****************************************************************************** + * version.h + * + * Xen version, type, and compile information. + * + * Copyright (c) 2005, Nguyen Anh Quynh aquynh@gmail.com + * Copyright (c) 2005, Keir Fraser keir@xensource.com + */
/* arg == xen_extraversion_t. */ #define XENVER_extraversion 1 typedef char xen_extraversion_t[16]; #define XEN_EXTRAVERSION_LEN (sizeof(xen_extraversion_t))
+/****************************************************************************** + * xen.h + * + * Guest OS interface to Xen. + * + * Copyright (c) 2004, K A Fraser + */ + +#define DOMID_SELF (0x7FF0U) + +/* Guest handles for primitive C types. */ +DEFINE_XEN_GUEST_HANDLE(char); +__DEFINE_XEN_GUEST_HANDLE(uchar, unsigned char); +DEFINE_XEN_GUEST_HANDLE(int); +__DEFINE_XEN_GUEST_HANDLE(uint, unsigned int); +DEFINE_XEN_GUEST_HANDLE(long); +__DEFINE_XEN_GUEST_HANDLE(ulong, unsigned long); +DEFINE_XEN_GUEST_HANDLE(void); + +DEFINE_XEN_GUEST_HANDLE(u64); +DEFINE_XEN_GUEST_HANDLE(xen_pfn_t); + +__DEFINE_XEN_GUEST_HANDLE(u8, u8); +__DEFINE_XEN_GUEST_HANDLE(u16, u16); +__DEFINE_XEN_GUEST_HANDLE(u32, u32); + +#define __HYPERVISOR_xen_version 17 + #endif