mirror of
https://github.com/Zenithsiz/ftmemsim-valgrind.git
synced 2026-02-04 02:18:37 +00:00
Remove build dependency on Xen header files - closes #308495
From: Ian Campbell <ian.campbell@citrix.com> git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13081
This commit is contained in:
parent
eab0663602
commit
3fd464fbf3
19
configure.in
19
configure.in
@ -2012,25 +2012,6 @@ AC_ARG_WITH(mpicc,
|
||||
)
|
||||
AC_SUBST(MPI_CC)
|
||||
|
||||
#----------------------------------------------------------------------------
|
||||
# Xen checks
|
||||
#----------------------------------------------------------------------------
|
||||
AC_ARG_ENABLE(xen,
|
||||
[ --enable-xen Enable support for Xen hypervisor],
|
||||
[vg_cv_xen=$enableval],
|
||||
[vg_cv_xen=no])
|
||||
|
||||
AC_ARG_WITH(xen,
|
||||
[ --with-xen= Specify location of Xen headers],
|
||||
XEN_CFLAGS=-I$withval
|
||||
)
|
||||
AC_SUBST(XEN_CFLAGS)
|
||||
|
||||
AM_CONDITIONAL([ENABLE_XEN], [test x$vg_cv_xen = xyes])
|
||||
if test x"$vg_cv_xen" = xyes; then
|
||||
AC_DEFINE([ENABLE_XEN], 1, [configured to support Xen])
|
||||
fi
|
||||
|
||||
## We AM_COND_IF here instead of automake "if" in mpi/Makefile.am so that we can
|
||||
## use these values in the check for a functioning mpicc.
|
||||
##
|
||||
|
||||
@ -368,16 +368,12 @@ COREGRIND_SOURCES_COMMON = \
|
||||
m_syswrap/syswrap-mips32-linux.c \
|
||||
m_syswrap/syswrap-x86-darwin.c \
|
||||
m_syswrap/syswrap-amd64-darwin.c \
|
||||
m_syswrap/syswrap-xen.c \
|
||||
m_ume/elf.c \
|
||||
m_ume/macho.c \
|
||||
m_ume/main.c \
|
||||
m_ume/script.c
|
||||
|
||||
if ENABLE_XEN
|
||||
COREGRIND_SOURCES_COMMON += m_syswrap/syswrap-xen.c
|
||||
CFLAGS += @XEN_CFLAGS@
|
||||
endif
|
||||
|
||||
libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_SOURCES = \
|
||||
$(COREGRIND_SOURCES_COMMON)
|
||||
nodist_libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_SOURCES = \
|
||||
@ -385,7 +381,7 @@ nodist_libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_SOURCES = \
|
||||
libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS = \
|
||||
$(AM_CPPFLAGS_@VGCONF_PLATFORM_PRI_CAPS@)
|
||||
libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS = \
|
||||
$(AM_CFLAGS_@VGCONF_PLATFORM_PRI_CAPS@) @XEN_CFLAGS@
|
||||
$(AM_CFLAGS_@VGCONF_PLATFORM_PRI_CAPS@)
|
||||
libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CCASFLAGS = \
|
||||
$(AM_CCASFLAGS_@VGCONF_PLATFORM_PRI_CAPS@)
|
||||
if ENABLE_LINUX_TICKET_LOCK_PRIMARY
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@ -47,13 +47,17 @@
|
||||
|
||||
#if defined(VGO_linux)
|
||||
# include "vki/vki-linux.h"
|
||||
# include "vki/vki-xen.h"
|
||||
#elif defined(VGO_darwin)
|
||||
# include "vki/vki-darwin.h"
|
||||
#else
|
||||
# error Unknown Plat/OS
|
||||
#endif
|
||||
|
||||
#if defined(VGP_amd64_linux) || defined(VGP_x86_linux)
|
||||
# include "vki/vki-xen.h"
|
||||
#endif
|
||||
|
||||
|
||||
#endif // __PUB_TOOL_VKI_H
|
||||
|
||||
/*--------------------------------------------------------------------*/
|
||||
|
||||
@ -224,11 +224,13 @@ typedef unsigned int vki_uint;
|
||||
//----------------------------------------------------------------------
|
||||
|
||||
typedef __vki_s32 vki_int32_t;
|
||||
typedef __vki_s16 vki_int16_t;
|
||||
typedef __vki_s64 vki_int64_t;
|
||||
|
||||
typedef __vki_u8 vki_uint8_t;
|
||||
typedef __vki_u16 vki_uint16_t;
|
||||
typedef __vki_u32 vki_uint32_t;
|
||||
typedef __vki_u64 vki_uint64_t;
|
||||
|
||||
typedef __vki_u16 __vki_le16;
|
||||
|
||||
|
||||
293
include/vki/vki-xen-domctl.h
Normal file
293
include/vki/vki-xen-domctl.h
Normal file
@ -0,0 +1,293 @@
|
||||
#ifndef __VKI_XEN_DOMCTL_H
|
||||
#define __VKI_XEN_DOMCTL_H
|
||||
|
||||
/*
|
||||
* The domctl interface is versioned via the interface_version
|
||||
* field. This structures in this header supports domctl interfaces:
|
||||
*
|
||||
* - 00000007: Xen 4.1
|
||||
* - 00000008: Xen 4.2
|
||||
*
|
||||
* When adding a new subop be sure to include the variants used by all
|
||||
* of the above, both here and in syswrap-xen.c
|
||||
*
|
||||
* Structs which are identical in all supported versions have no
|
||||
* version suffix. Structs which do differ are defined multiple times
|
||||
* and use the suffix of the latest version to contain that particular
|
||||
* variant.
|
||||
*/
|
||||
|
||||
#define VKI_XEN_DOMCTL_createdomain 1
|
||||
#define VKI_XEN_DOMCTL_destroydomain 2
|
||||
#define VKI_XEN_DOMCTL_pausedomain 3
|
||||
#define VKI_XEN_DOMCTL_unpausedomain 4
|
||||
#define VKI_XEN_DOMCTL_getdomaininfo 5
|
||||
#define VKI_XEN_DOMCTL_getmemlist 6
|
||||
#define VKI_XEN_DOMCTL_getpageframeinfo 7
|
||||
#define VKI_XEN_DOMCTL_getpageframeinfo2 8
|
||||
#define VKI_XEN_DOMCTL_setvcpuaffinity 9
|
||||
#define VKI_XEN_DOMCTL_shadow_op 10
|
||||
#define VKI_XEN_DOMCTL_max_mem 11
|
||||
#define VKI_XEN_DOMCTL_setvcpucontext 12
|
||||
#define VKI_XEN_DOMCTL_getvcpucontext 13
|
||||
#define VKI_XEN_DOMCTL_getvcpuinfo 14
|
||||
#define VKI_XEN_DOMCTL_max_vcpus 15
|
||||
#define VKI_XEN_DOMCTL_scheduler_op 16
|
||||
#define VKI_XEN_DOMCTL_setdomainhandle 17
|
||||
#define VKI_XEN_DOMCTL_setdebugging 18
|
||||
#define VKI_XEN_DOMCTL_irq_permission 19
|
||||
#define VKI_XEN_DOMCTL_iomem_permission 20
|
||||
#define VKI_XEN_DOMCTL_ioport_permission 21
|
||||
#define VKI_XEN_DOMCTL_hypercall_init 22
|
||||
#define VKI_XEN_DOMCTL_arch_setup 23
|
||||
#define VKI_XEN_DOMCTL_settimeoffset 24
|
||||
#define VKI_XEN_DOMCTL_getvcpuaffinity 25
|
||||
#define VKI_XEN_DOMCTL_real_mode_area 26
|
||||
#define VKI_XEN_DOMCTL_resumedomain 27
|
||||
#define VKI_XEN_DOMCTL_sendtrigger 28
|
||||
#define VKI_XEN_DOMCTL_subscribe 29
|
||||
#define VKI_XEN_DOMCTL_gethvmcontext 33
|
||||
#define VKI_XEN_DOMCTL_sethvmcontext 34
|
||||
#define VKI_XEN_DOMCTL_set_address_size 35
|
||||
#define VKI_XEN_DOMCTL_get_address_size 36
|
||||
#define VKI_XEN_DOMCTL_assign_device 37
|
||||
#define VKI_XEN_DOMCTL_bind_pt_irq 38
|
||||
#define VKI_XEN_DOMCTL_memory_mapping 39
|
||||
#define VKI_XEN_DOMCTL_ioport_mapping 40
|
||||
#define VKI_XEN_DOMCTL_pin_mem_cacheattr 41
|
||||
#define VKI_XEN_DOMCTL_set_ext_vcpucontext 42
|
||||
#define VKI_XEN_DOMCTL_get_ext_vcpucontext 43
|
||||
#define VKI_XEN_DOMCTL_set_opt_feature 44
|
||||
#define VKI_XEN_DOMCTL_test_assign_device 45
|
||||
#define VKI_XEN_DOMCTL_set_target 46
|
||||
#define VKI_XEN_DOMCTL_deassign_device 47
|
||||
#define VKI_XEN_DOMCTL_unbind_pt_irq 48
|
||||
#define VKI_XEN_DOMCTL_set_cpuid 49
|
||||
#define VKI_XEN_DOMCTL_get_device_group 50
|
||||
#define VKI_XEN_DOMCTL_set_machine_address_size 51
|
||||
#define VKI_XEN_DOMCTL_get_machine_address_size 52
|
||||
#define VKI_XEN_DOMCTL_suppress_spurious_page_faults 53
|
||||
#define VKI_XEN_DOMCTL_debug_op 54
|
||||
#define VKI_XEN_DOMCTL_gethvmcontext_partial 55
|
||||
#define VKI_XEN_DOMCTL_mem_event_op 56
|
||||
#define VKI_XEN_DOMCTL_mem_sharing_op 57
|
||||
#define VKI_XEN_DOMCTL_disable_migrate 58
|
||||
#define VKI_XEN_DOMCTL_gettscinfo 59
|
||||
#define VKI_XEN_DOMCTL_settscinfo 60
|
||||
#define VKI_XEN_DOMCTL_getpageframeinfo3 61
|
||||
#define VKI_XEN_DOMCTL_setvcpuextstate 62
|
||||
#define VKI_XEN_DOMCTL_getvcpuextstate 63
|
||||
#define VKI_XEN_DOMCTL_set_access_required 64
|
||||
#define VKI_XEN_DOMCTL_audit_p2m 65
|
||||
#define VKI_XEN_DOMCTL_set_virq_handler 66
|
||||
#define VKI_XEN_DOMCTL_gdbsx_guestmemio 1000
|
||||
#define VKI_XEN_DOMCTL_gdbsx_pausevcpu 1001
|
||||
#define VKI_XEN_DOMCTL_gdbsx_unpausevcpu 1002
|
||||
#define VKI_XEN_DOMCTL_gdbsx_domstatus 1003
|
||||
|
||||
struct vki_xen_domctl_createdomain {
|
||||
/* IN parameters */
|
||||
vki_uint32_t ssidref;
|
||||
vki_xen_domain_handle_t handle;
|
||||
vki_uint32_t flags;
|
||||
};
|
||||
|
||||
struct vki_xen_domctl_getdomaininfo_00000007 {
|
||||
/* OUT variables. */
|
||||
vki_xen_domid_t domain;
|
||||
vki_uint32_t flags;
|
||||
vki_xen_uint64_aligned_t tot_pages;
|
||||
vki_xen_uint64_aligned_t max_pages;
|
||||
vki_xen_uint64_aligned_t shr_pages;
|
||||
vki_xen_uint64_aligned_t paged_pages;
|
||||
vki_xen_uint64_aligned_t shared_info_frame;
|
||||
vki_xen_uint64_aligned_t cpu_time;
|
||||
vki_uint32_t nr_online_vcpus;
|
||||
vki_uint32_t max_vcpu_id;
|
||||
vki_uint32_t ssidref;
|
||||
vki_xen_domain_handle_t handle;
|
||||
vki_uint32_t cpupool;
|
||||
};
|
||||
typedef struct vki_xen_domctl_getdomaininfo_00000007 vki_xen_domctl_getdomaininfo_00000007_t;
|
||||
DEFINE_VKI_XEN_GUEST_HANDLE(vki_xen_domctl_getdomaininfo_00000007_t);
|
||||
|
||||
struct vki_xen_domctl_getdomaininfo_00000008 {
|
||||
/* OUT variables. */
|
||||
vki_xen_domid_t domain;
|
||||
vki_uint32_t flags;
|
||||
vki_xen_uint64_aligned_t tot_pages;
|
||||
vki_xen_uint64_aligned_t max_pages;
|
||||
vki_xen_uint64_aligned_t shr_pages;
|
||||
vki_xen_uint64_aligned_t paged_pages;
|
||||
vki_xen_uint64_aligned_t shared_info_frame;
|
||||
vki_xen_uint64_aligned_t cpu_time;
|
||||
vki_uint32_t nr_online_vcpus;
|
||||
vki_uint32_t max_vcpu_id;
|
||||
vki_uint32_t ssidref;
|
||||
vki_xen_domain_handle_t handle;
|
||||
vki_uint32_t cpupool;
|
||||
};
|
||||
typedef struct vki_xen_domctl_getdomaininfo_00000008 vki_xen_domctl_getdomaininfo_00000008_t;
|
||||
DEFINE_VKI_XEN_GUEST_HANDLE(vki_xen_domctl_getdomaininfo_00000008_t);
|
||||
|
||||
struct vki_xen_domctl_vcpuaffinity {
|
||||
vki_uint32_t vcpu; /* IN */
|
||||
struct vki_xenctl_cpumap cpumap; /* IN/OUT */
|
||||
};
|
||||
|
||||
struct vki_xen_domctl_max_mem {
|
||||
/* IN variables. */
|
||||
vki_xen_uint64_aligned_t max_memkb;
|
||||
};
|
||||
|
||||
struct vki_xen_domctl_vcpucontext {
|
||||
vki_uint32_t vcpu; /* IN */
|
||||
VKI_XEN_GUEST_HANDLE_64(vki_xen_vcpu_guest_context_t) ctxt; /* IN/OUT */
|
||||
};
|
||||
|
||||
struct vki_xen_domctl_getvcpuinfo {
|
||||
/* IN variables. */
|
||||
vki_uint32_t vcpu;
|
||||
/* OUT variables. */
|
||||
vki_uint8_t online; /* currently online (not hotplugged)? */
|
||||
vki_uint8_t blocked; /* blocked waiting for an event? */
|
||||
vki_uint8_t running; /* currently scheduled on its CPU? */
|
||||
vki_xen_uint64_aligned_t cpu_time;/* total cpu time consumed (ns) */
|
||||
vki_uint32_t cpu; /* current mapping */
|
||||
};
|
||||
|
||||
struct vki_xen_domctl_scheduler_op {
|
||||
vki_uint32_t sched_id; /* VKI_XEN_SCHEDULER_* */
|
||||
#define VKI_XEN_SCHEDULER_SEDF 4
|
||||
#define VKI_XEN_SCHEDULER_CREDIT 5
|
||||
#define VKI_XEN_SCHEDULER_CREDIT2 6
|
||||
#define VKI_XEN_SCHEDULER_ARINC653 7
|
||||
vki_uint32_t cmd; /* VKI_XEN_DOMCTL_SCHEDOP_* */
|
||||
#define VKI_XEN_DOMCTL_SCHEDOP_putinfo 0
|
||||
#define VKI_XEN_DOMCTL_SCHEDOP_getinfo 1
|
||||
union {
|
||||
struct xen_domctl_sched_sedf {
|
||||
vki_xen_uint64_aligned_t period;
|
||||
vki_xen_uint64_aligned_t slice;
|
||||
vki_xen_uint64_aligned_t latency;
|
||||
vki_uint32_t extratime;
|
||||
vki_uint32_t weight;
|
||||
} sedf;
|
||||
struct xen_domctl_sched_credit {
|
||||
vki_uint16_t weight;
|
||||
vki_uint16_t cap;
|
||||
} credit;
|
||||
struct xen_domctl_sched_credit2 {
|
||||
vki_uint16_t weight;
|
||||
} credit2;
|
||||
} u;
|
||||
};
|
||||
|
||||
struct vki_xen_domctl_max_vcpus {
|
||||
vki_uint32_t max; /* maximum number of vcpus */
|
||||
};
|
||||
|
||||
struct vki_xen_domctl_hypercall_init {
|
||||
vki_xen_uint64_aligned_t gmfn; /* GMFN to be initialised */
|
||||
};
|
||||
|
||||
struct vki_xen_domctl_cpuid {
|
||||
vki_uint32_t input[2];
|
||||
vki_uint32_t eax;
|
||||
vki_uint32_t ebx;
|
||||
vki_uint32_t ecx;
|
||||
vki_uint32_t edx;
|
||||
};
|
||||
|
||||
struct vki_xen_guest_tsc_info {
|
||||
vki_uint32_t tsc_mode;
|
||||
vki_uint32_t gtsc_khz;
|
||||
vki_uint32_t incarnation;
|
||||
vki_uint32_t pad;
|
||||
vki_xen_uint64_aligned_t elapsed_nsec;
|
||||
};
|
||||
typedef struct vki_xen_guest_tsc_info vki_xen_guest_tsc_info_t;
|
||||
DEFINE_VKI_XEN_GUEST_HANDLE(vki_xen_guest_tsc_info_t);
|
||||
|
||||
struct vki_xen_domctl_tsc_info {
|
||||
VKI_XEN_GUEST_HANDLE_64(vki_xen_guest_tsc_info_t) out_info; /* OUT */
|
||||
vki_xen_guest_tsc_info_t info; /* IN */
|
||||
};
|
||||
|
||||
struct vki_xen_domctl_vcpuextstate {
|
||||
vki_uint32_t vcpu;
|
||||
vki_xen_uint64_aligned_t xfeature_mask;
|
||||
vki_xen_uint64_aligned_t size;
|
||||
VKI_XEN_GUEST_HANDLE_64(vki_uint64) buffer;
|
||||
};
|
||||
|
||||
struct vki_xen_domctl_address_size {
|
||||
vki_uint32_t size;
|
||||
};
|
||||
|
||||
struct vki_xen_domctl {
|
||||
vki_uint32_t cmd;
|
||||
vki_uint32_t interface_version; /* XEN_DOMCTL_INTERFACE_VERSION */
|
||||
vki_xen_domid_t domain;
|
||||
union {
|
||||
struct vki_xen_domctl_createdomain createdomain;
|
||||
struct vki_xen_domctl_getdomaininfo_00000007 getdomaininfo_00000007;
|
||||
struct vki_xen_domctl_getdomaininfo_00000008 getdomaininfo_00000008;
|
||||
//struct vki_xen_domctl_getmemlist getmemlist;
|
||||
//struct vki_xen_domctl_getpageframeinfo getpageframeinfo;
|
||||
//struct vki_xen_domctl_getpageframeinfo2 getpageframeinfo2;
|
||||
//struct vki_xen_domctl_getpageframeinfo3 getpageframeinfo3;
|
||||
struct vki_xen_domctl_vcpuaffinity vcpuaffinity;
|
||||
//struct vki_xen_domctl_shadow_op shadow_op;
|
||||
struct vki_xen_domctl_max_mem max_mem;
|
||||
struct vki_xen_domctl_vcpucontext vcpucontext;
|
||||
struct vki_xen_domctl_getvcpuinfo getvcpuinfo;
|
||||
struct vki_xen_domctl_max_vcpus max_vcpus;
|
||||
struct vki_xen_domctl_scheduler_op scheduler_op;
|
||||
//struct vki_xen_domctl_setdomainhandle setdomainhandle;
|
||||
//struct vki_xen_domctl_setdebugging setdebugging;
|
||||
//struct vki_xen_domctl_irq_permission irq_permission;
|
||||
//struct vki_xen_domctl_iomem_permission iomem_permission;
|
||||
//struct vki_xen_domctl_ioport_permission ioport_permission;
|
||||
struct vki_xen_domctl_hypercall_init hypercall_init;
|
||||
//struct vki_xen_domctl_arch_setup arch_setup;
|
||||
//struct vki_xen_domctl_settimeoffset settimeoffset;
|
||||
//struct vki_xen_domctl_disable_migrate disable_migrate;
|
||||
struct vki_xen_domctl_tsc_info tsc_info;
|
||||
//struct vki_xen_domctl_real_mode_area real_mode_area;
|
||||
//struct vki_xen_domctl_hvmcontext hvmcontext;
|
||||
//struct vki_xen_domctl_hvmcontext_partial hvmcontext_partial;
|
||||
struct vki_xen_domctl_address_size address_size;
|
||||
//struct vki_xen_domctl_sendtrigger sendtrigger;
|
||||
//struct vki_xen_domctl_get_device_group get_device_group;
|
||||
//struct vki_xen_domctl_assign_device assign_device;
|
||||
//struct vki_xen_domctl_bind_pt_irq bind_pt_irq;
|
||||
//struct vki_xen_domctl_memory_mapping memory_mapping;
|
||||
//struct vki_xen_domctl_ioport_mapping ioport_mapping;
|
||||
//struct vki_xen_domctl_pin_mem_cacheattr pin_mem_cacheattr;
|
||||
//struct vki_xen_domctl_ext_vcpucontext ext_vcpucontext;
|
||||
//struct vki_xen_domctl_set_opt_feature set_opt_feature;
|
||||
//struct vki_xen_domctl_set_target set_target;
|
||||
//struct vki_xen_domctl_subscribe subscribe;
|
||||
//struct vki_xen_domctl_debug_op debug_op;
|
||||
//struct vki_xen_domctl_mem_event_op mem_event_op;
|
||||
//struct vki_xen_domctl_mem_sharing_op mem_sharing_op;
|
||||
#if defined(__i386__) || defined(__x86_64__)
|
||||
struct vki_xen_domctl_cpuid cpuid;
|
||||
struct vki_xen_domctl_vcpuextstate vcpuextstate;
|
||||
#endif
|
||||
//struct vki_xen_domctl_set_access_required access_required;
|
||||
//struct vki_xen_domctl_audit_p2m audit_p2m;
|
||||
//struct vki_xen_domctl_set_virq_handler set_virq_handler;
|
||||
//struct vki_xen_domctl_gdbsx_memio gdbsx_guest_memio;
|
||||
//struct vki_xen_domctl_gdbsx_pauseunp_vcpu gdbsx_pauseunp_vcpu;
|
||||
//struct vki_xen_domctl_gdbsx_domstatus gdbsx_domstatus;
|
||||
vki_uint8_t pad[128];
|
||||
} u;
|
||||
};
|
||||
|
||||
#endif // __VKI_XEN_DOMCTL_H
|
||||
|
||||
/*--------------------------------------------------------------------*/
|
||||
/*--- end ---*/
|
||||
/*--------------------------------------------------------------------*/
|
||||
46
include/vki/vki-xen-evtchn.h
Normal file
46
include/vki/vki-xen-evtchn.h
Normal file
@ -0,0 +1,46 @@
|
||||
#ifndef __VKI_XEN_EVTCHN_H
|
||||
#define __VKI_XEN_EVTCHN_H
|
||||
|
||||
#define VKI_XEN_EVTCHNOP_bind_interdomain 0
|
||||
#define VKI_XEN_EVTCHNOP_bind_virq 1
|
||||
#define VKI_XEN_EVTCHNOP_bind_pirq 2
|
||||
#define VKI_XEN_EVTCHNOP_close 3
|
||||
#define VKI_XEN_EVTCHNOP_send 4
|
||||
#define VKI_XEN_EVTCHNOP_status 5
|
||||
#define VKI_XEN_EVTCHNOP_alloc_unbound 6
|
||||
#define VKI_XEN_EVTCHNOP_bind_ipi 7
|
||||
#define VKI_XEN_EVTCHNOP_bind_vcpu 8
|
||||
#define VKI_XEN_EVTCHNOP_unmask 9
|
||||
#define VKI_XEN_EVTCHNOP_reset 10
|
||||
|
||||
typedef vki_uint32_t vki_xen_evtchn_port_t;
|
||||
DEFINE_VKI_XEN_GUEST_HANDLE(vki_xen_evtchn_port_t);
|
||||
|
||||
struct vki_xen_evtchn_alloc_unbound {
|
||||
/* IN parameters */
|
||||
vki_xen_domid_t dom, remote_dom;
|
||||
/* OUT parameters */
|
||||
vki_xen_evtchn_port_t port;
|
||||
};
|
||||
|
||||
struct vki_xen_evtchn_op {
|
||||
vki_uint32_t cmd; /* enum event_channel_op */
|
||||
union {
|
||||
struct vki_xen_evtchn_alloc_unbound alloc_unbound;
|
||||
//struct vki_xen_evtchn_bind_interdomain bind_interdomain;
|
||||
//struct vki_xen_evtchn_bind_virq bind_virq;
|
||||
//struct vki_xen_evtchn_bind_pirq bind_pirq;
|
||||
//struct vki_xen_evtchn_bind_ipi bind_ipi;
|
||||
//struct vki_xen_evtchn_close close;
|
||||
//struct vki_xen_evtchn_send send;
|
||||
//struct vki_xen_evtchn_status status;
|
||||
//struct vki_xen_evtchn_bind_vcpu bind_vcpu;
|
||||
//struct vki_xen_evtchn_unmask unmask;
|
||||
} u;
|
||||
};
|
||||
|
||||
#endif // __VKI_XEN_EVTCHN_H
|
||||
|
||||
/*--------------------------------------------------------------------*/
|
||||
/*--- end ---*/
|
||||
/*--------------------------------------------------------------------*/
|
||||
32
include/vki/vki-xen-gnttab.h
Normal file
32
include/vki/vki-xen-gnttab.h
Normal file
@ -0,0 +1,32 @@
|
||||
#ifndef __VKI_XEN_GNTTAB_H
|
||||
#define __VKI_XEN_GNTTAB_H
|
||||
|
||||
typedef vki_uint32_t vki_xen_grant_ref_t;
|
||||
|
||||
#define VKI_XEN_GNTTABOP_map_grant_ref 0
|
||||
#define VKI_XEN_GNTTABOP_unmap_grant_ref 1
|
||||
#define VKI_XEN_GNTTABOP_setup_table 2
|
||||
#define VKI_XEN_GNTTABOP_dump_table 3
|
||||
#define VKI_XEN_GNTTABOP_transfer 4
|
||||
#define VKI_XEN_GNTTABOP_copy 5
|
||||
#define VKI_XEN_GNTTABOP_query_size 6
|
||||
#define VKI_XEN_GNTTABOP_unmap_and_replace 7
|
||||
#define VKI_XEN_GNTTABOP_set_version 8
|
||||
#define VKI_XEN_GNTTABOP_get_status_frames 9
|
||||
#define VKI_XEN_GNTTABOP_get_version 10
|
||||
#define VKI_XEN_GNTTABOP_swap_grant_ref 11
|
||||
|
||||
struct vki_xen_gnttab_setup_table {
|
||||
/* IN parameters. */
|
||||
vki_xen_domid_t dom;
|
||||
vki_uint32_t nr_frames;
|
||||
/* OUT parameters. */
|
||||
vki_int16_t status; /* => enum grant_status */
|
||||
VKI_XEN_GUEST_HANDLE(vki_ulong) frame_list;
|
||||
};
|
||||
|
||||
#endif // __VKI_XEN_GNTTAB_H
|
||||
|
||||
/*--------------------------------------------------------------------*/
|
||||
/*--- end ---*/
|
||||
/*--------------------------------------------------------------------*/
|
||||
17
include/vki/vki-xen-hvm.h
Normal file
17
include/vki/vki-xen-hvm.h
Normal file
@ -0,0 +1,17 @@
|
||||
#ifndef __VKI_XEN_HVM_H
|
||||
#define __VKI_XEN_HVM_H
|
||||
|
||||
/* Get/set subcommands: extra argument == pointer to xen_hvm_param struct. */
|
||||
#define VKI_XEN_HVMOP_set_param 0
|
||||
#define VKI_XEN_HVMOP_get_param 1
|
||||
struct vki_xen_hvm_param {
|
||||
vki_xen_domid_t domid; /* IN */
|
||||
vki_uint32_t index; /* IN */
|
||||
vki_uint64_t value; /* IN/OUT */
|
||||
};
|
||||
|
||||
#endif // __VKI_XEN_HVM_H
|
||||
|
||||
/*--------------------------------------------------------------------*/
|
||||
/*--- end ---*/
|
||||
/*--------------------------------------------------------------------*/
|
||||
46
include/vki/vki-xen-memory.h
Normal file
46
include/vki/vki-xen-memory.h
Normal file
@ -0,0 +1,46 @@
|
||||
#ifndef __VKI_XEN_MEMORY_H
|
||||
#define __VKI_XEN_MEMORY_H
|
||||
|
||||
#define VKI_XENMEM_increase_reservation 0
|
||||
#define VKI_XENMEM_decrease_reservation 1
|
||||
#define VKI_XENMEM_maximum_ram_page 2
|
||||
#define VKI_XENMEM_current_reservation 3
|
||||
#define VKI_XENMEM_maximum_reservation 4
|
||||
#define VKI_XENMEM_machphys_mfn_list 5
|
||||
#define VKI_XENMEM_populate_physmap 6
|
||||
#define VKI_XENMEM_add_to_physmap 7
|
||||
#define VKI_XENMEM_memory_map 9
|
||||
#define VKI_XENMEM_machine_memory_map 10
|
||||
#define VKI_XENMEM_exchange 11
|
||||
#define VKI_XENMEM_machphys_mapping 12
|
||||
#define VKI_XENMEM_set_memory_map 13
|
||||
#define VKI_XENMEM_maximum_gpfn 14
|
||||
#define VKI_XENMEM_remove_from_physmap 15
|
||||
#define VKI_XENMEM_set_pod_target 16
|
||||
#define VKI_XENMEM_get_pod_target 17
|
||||
#define VKI_XENMEM_get_sharing_freed_pages 18
|
||||
#define VKI_XENMEM_get_sharing_shared_pages 19
|
||||
|
||||
struct vki_xen_memory_map {
|
||||
unsigned int nr_entries;
|
||||
VKI_XEN_GUEST_HANDLE(void) buffer;
|
||||
};
|
||||
|
||||
struct vki_xen_foreign_memory_map {
|
||||
vki_xen_domid_t domid;
|
||||
struct vki_xen_memory_map map;
|
||||
};
|
||||
|
||||
struct xen_memory_reservation {
|
||||
VKI_XEN_GUEST_HANDLE(vki_xen_pfn_t) extent_start;
|
||||
vki_xen_ulong_t nr_extents;
|
||||
unsigned int extent_order;
|
||||
unsigned int mem_flags;
|
||||
vki_xen_domid_t domid;
|
||||
};
|
||||
|
||||
#endif // __VKI_XEN_MEMORY_H
|
||||
|
||||
/*--------------------------------------------------------------------*/
|
||||
/*--- end ---*/
|
||||
/*--------------------------------------------------------------------*/
|
||||
48
include/vki/vki-xen-mmuext.h
Normal file
48
include/vki/vki-xen-mmuext.h
Normal file
@ -0,0 +1,48 @@
|
||||
#ifndef __VKI_XEN_MMUEXT_H
|
||||
#define __VKI_XEN_MMUEXT_H
|
||||
|
||||
#define VKI_XEN_MMUEXT_PIN_L1_TABLE 0
|
||||
#define VKI_XEN_MMUEXT_PIN_L2_TABLE 1
|
||||
#define VKI_XEN_MMUEXT_PIN_L3_TABLE 2
|
||||
#define VKI_XEN_MMUEXT_PIN_L4_TABLE 3
|
||||
#define VKI_XEN_MMUEXT_UNPIN_TABLE 4
|
||||
#define VKI_XEN_MMUEXT_NEW_BASEPTR 5
|
||||
#define VKI_XEN_MMUEXT_TLB_FLUSH_LOCAL 6
|
||||
#define VKI_XEN_MMUEXT_INVLPG_LOCAL 7
|
||||
#define VKI_XEN_MMUEXT_TLB_FLUSH_MULTI 8
|
||||
#define VKI_XEN_MMUEXT_INVLPG_MULTI 9
|
||||
#define VKI_XEN_MMUEXT_TLB_FLUSH_ALL 10
|
||||
#define VKI_XEN_MMUEXT_INVLPG_ALL 11
|
||||
#define VKI_XEN_MMUEXT_FLUSH_CACHE 12
|
||||
#define VKI_XEN_MMUEXT_SET_LDT 13
|
||||
#define VKI_XEN_MMUEXT_NEW_USER_BASEPTR 15
|
||||
#define VKI_XEN_MMUEXT_CLEAR_PAGE 16
|
||||
#define VKI_XEN_MMUEXT_COPY_PAGE 17
|
||||
#define VKI_XEN_MMUEXT_FLUSH_CACHE_GLOBAL 18
|
||||
#define VKI_XEN_MMUEXT_MARK_SUPER 19
|
||||
#define VKI_XEN_MMUEXT_UNMARK_SUPER 20
|
||||
|
||||
struct vki_xen_mmuext_op {
|
||||
unsigned int cmd;
|
||||
union {
|
||||
/* [UN]PIN_TABLE, NEW_BASEPTR, NEW_USER_BASEPTR
|
||||
* CLEAR_PAGE, COPY_PAGE, [UN]MARK_SUPER */
|
||||
vki_xen_pfn_t mfn;
|
||||
/* INVLPG_LOCAL, INVLPG_ALL, SET_LDT */
|
||||
unsigned long linear_addr;
|
||||
} arg1;
|
||||
union {
|
||||
/* SET_LDT */
|
||||
unsigned int nr_ents;
|
||||
/* TLB_FLUSH_MULTI, INVLPG_MULTI */
|
||||
VKI_XEN_GUEST_HANDLE(const_void) vcpumask;
|
||||
/* COPY_PAGE */
|
||||
vki_xen_pfn_t src_mfn;
|
||||
} arg2;
|
||||
};
|
||||
|
||||
#endif // __VKI_XEN_MMUEXT_H
|
||||
|
||||
/*--------------------------------------------------------------------*/
|
||||
/*--- end ---*/
|
||||
/*--------------------------------------------------------------------*/
|
||||
135
include/vki/vki-xen-sysctl.h
Normal file
135
include/vki/vki-xen-sysctl.h
Normal file
@ -0,0 +1,135 @@
|
||||
#ifndef __VKI_XEN_SYSCTL_H
|
||||
#define __VKI_XEN_SYSCTL_H
|
||||
|
||||
/*
|
||||
* The sysctl interface is versioned via the interface_version
|
||||
* field. This structures in this header supports sysctl interfaces:
|
||||
*
|
||||
* - 00000008: Xen 4.1
|
||||
* - 00000009: Xen 4.2
|
||||
*
|
||||
* When adding a new subop be sure to include the variants used by all
|
||||
* of the above, both here and in syswrap-xen.c
|
||||
*
|
||||
* Structs which are identical in all supported versions have no
|
||||
* version suffix. Structs which do differ are defined multiple times
|
||||
* and use the suffix of the latest version to contain that particular
|
||||
* variant.
|
||||
*/
|
||||
|
||||
#define VKI_XEN_SYSCTL_readconsole 1
|
||||
#define VKI_XEN_SYSCTL_tbuf_op 2
|
||||
#define VKI_XEN_SYSCTL_physinfo 3
|
||||
#define VKI_XEN_SYSCTL_sched_id 4
|
||||
#define VKI_XEN_SYSCTL_perfc_op 5
|
||||
#define VKI_XEN_SYSCTL_getdomaininfolist 6
|
||||
#define VKI_XEN_SYSCTL_debug_keys 7
|
||||
#define VKI_XEN_SYSCTL_getcpuinfo 8
|
||||
#define VKI_XEN_SYSCTL_availheap 9
|
||||
#define VKI_XEN_SYSCTL_get_pmstat 10
|
||||
#define VKI_XEN_SYSCTL_cpu_hotplug 11
|
||||
#define VKI_XEN_SYSCTL_pm_op 12
|
||||
#define VKI_XEN_SYSCTL_page_offline_op 14
|
||||
#define VKI_XEN_SYSCTL_lockprof_op 15
|
||||
#define VKI_XEN_SYSCTL_topologyinfo 16
|
||||
#define VKI_XEN_SYSCTL_numainfo 17
|
||||
#define VKI_XEN_SYSCTL_cpupool_op 18
|
||||
#define VKI_XEN_SYSCTL_scheduler_op 19
|
||||
|
||||
struct vki_xen_sysctl_getdomaininfolist_00000008 {
|
||||
/* IN variables. */
|
||||
vki_xen_domid_t first_domain;
|
||||
vki_uint32_t max_domains;
|
||||
VKI_XEN_GUEST_HANDLE_64(vki_xen_domctl_getdomaininfo_00000007_t) buffer;
|
||||
/* OUT variables. */
|
||||
vki_uint32_t num_domains;
|
||||
};
|
||||
|
||||
struct vki_xen_sysctl_getdomaininfolist_00000009 {
|
||||
/* IN variables. */
|
||||
vki_xen_domid_t first_domain;
|
||||
vki_uint32_t max_domains;
|
||||
VKI_XEN_GUEST_HANDLE_64(vki_xen_domctl_getdomaininfo_00000008_t) buffer;
|
||||
/* OUT variables. */
|
||||
vki_uint32_t num_domains;
|
||||
};
|
||||
|
||||
#define VKI_XEN_SYSCTL_CPUPOOL_OP_CREATE 1 /* C */
|
||||
#define VKI_XEN_SYSCTL_CPUPOOL_OP_DESTROY 2 /* D */
|
||||
#define VKI_XEN_SYSCTL_CPUPOOL_OP_INFO 3 /* I */
|
||||
#define VKI_XEN_SYSCTL_CPUPOOL_OP_ADDCPU 4 /* A */
|
||||
#define VKI_XEN_SYSCTL_CPUPOOL_OP_RMCPU 5 /* R */
|
||||
#define VKI_XEN_SYSCTL_CPUPOOL_OP_MOVEDOMAIN 6 /* M */
|
||||
#define VKI_XEN_SYSCTL_CPUPOOL_OP_FREEINFO 7 /* F */
|
||||
#define VKI_XEN_SYSCTL_CPUPOOL_PAR_ANY 0xFFFFFFFF
|
||||
struct vki_xen_sysctl_cpupool_op {
|
||||
vki_uint32_t op; /* IN */
|
||||
vki_uint32_t cpupool_id; /* IN: CDIARM OUT: CI */
|
||||
vki_uint32_t sched_id; /* IN: C OUT: I */
|
||||
vki_uint32_t domid; /* IN: M */
|
||||
vki_uint32_t cpu; /* IN: AR */
|
||||
vki_uint32_t n_dom; /* OUT: I */
|
||||
struct vki_xenctl_cpumap cpumap; /* OUT: IF */
|
||||
};
|
||||
|
||||
struct vki_xen_sysctl_topologyinfo {
|
||||
vki_uint32_t max_cpu_index;
|
||||
VKI_XEN_GUEST_HANDLE_64(vki_uint32) cpu_to_core;
|
||||
VKI_XEN_GUEST_HANDLE_64(vki_uint32) cpu_to_socket;
|
||||
VKI_XEN_GUEST_HANDLE_64(vki_uint32) cpu_to_node;
|
||||
};
|
||||
|
||||
struct vki_xen_sysctl_numainfo {
|
||||
vki_uint32_t max_node_index;
|
||||
VKI_XEN_GUEST_HANDLE_64(vki_uint64) node_to_memsize;
|
||||
VKI_XEN_GUEST_HANDLE_64(vki_uint64) node_to_memfree;
|
||||
VKI_XEN_GUEST_HANDLE_64(vki_uint32) node_to_node_distance;
|
||||
};
|
||||
struct vki_xen_sysctl_physinfo {
|
||||
vki_uint32_t threads_per_core;
|
||||
vki_uint32_t cores_per_socket;
|
||||
vki_uint32_t nr_cpus; /* # CPUs currently online */
|
||||
vki_uint32_t max_cpu_id; /* Largest possible CPU ID on this host */
|
||||
vki_uint32_t nr_nodes; /* # nodes currently online */
|
||||
vki_uint32_t max_node_id; /* Largest possible node ID on this host */
|
||||
vki_uint32_t cpu_khz;
|
||||
vki_xen_uint64_aligned_t total_pages;
|
||||
vki_xen_uint64_aligned_t free_pages;
|
||||
vki_xen_uint64_aligned_t scrub_pages;
|
||||
vki_uint32_t hw_cap[8];
|
||||
|
||||
vki_uint32_t capabilities;
|
||||
};
|
||||
|
||||
struct vki_xen_sysctl {
|
||||
vki_uint32_t cmd;
|
||||
vki_uint32_t interface_version; /* XEN_SYSCTL_INTERFACE_VERSION */
|
||||
union {
|
||||
//struct vki_xen_sysctl_readconsole readconsole;
|
||||
//struct vki_xen_sysctl_tbuf_op tbuf_op;
|
||||
struct vki_xen_sysctl_physinfo physinfo;
|
||||
struct vki_xen_sysctl_topologyinfo topologyinfo;
|
||||
struct vki_xen_sysctl_numainfo numainfo;
|
||||
//struct vki_xen_sysctl_sched_id sched_id;
|
||||
//struct vki_xen_sysctl_perfc_op perfc_op;
|
||||
struct vki_xen_sysctl_getdomaininfolist_00000008 getdomaininfolist_00000008;
|
||||
struct vki_xen_sysctl_getdomaininfolist_00000009 getdomaininfolist_00000009;
|
||||
//struct vki_xen_sysctl_debug_keys debug_keys;
|
||||
//struct vki_xen_sysctl_getcpuinfo getcpuinfo;
|
||||
//struct vki_xen_sysctl_availheap availheap;
|
||||
//struct vki_xen_sysctl_get_pmstat get_pmstat;
|
||||
//struct vki_xen_sysctl_cpu_hotplug cpu_hotplug;
|
||||
//struct vki_xen_sysctl_pm_op pm_op;
|
||||
//struct vki_xen_sysctl_page_offline_op page_offline;
|
||||
//struct vki_xen_sysctl_lockprof_op lockprof_op;
|
||||
struct vki_xen_sysctl_cpupool_op cpupool_op;
|
||||
//struct vki_xen_sysctl_scheduler_op scheduler_op;
|
||||
vki_uint8_t pad[128];
|
||||
} u;
|
||||
};
|
||||
|
||||
#endif // __VKI_XEN_SYSCTL_H
|
||||
|
||||
/*--------------------------------------------------------------------*/
|
||||
/*--- end ---*/
|
||||
/*--------------------------------------------------------------------*/
|
||||
43
include/vki/vki-xen-version.h
Normal file
43
include/vki/vki-xen-version.h
Normal file
@ -0,0 +1,43 @@
|
||||
#ifndef __VKI_XEN_VERSION_H
|
||||
#define __VKI_XEN_VERSION_H
|
||||
|
||||
#define VKI_XENVER_version 0
|
||||
#define VKI_XENVER_extraversion 1
|
||||
#define VKI_XENVER_compile_info 2
|
||||
#define VKI_XENVER_capabilities 3
|
||||
#define VKI_XENVER_changeset 4
|
||||
#define VKI_XENVER_platform_parameters 5
|
||||
#define VKI_XENVER_get_features 6
|
||||
#define VKI_XENVER_pagesize 7
|
||||
#define VKI_XENVER_guest_handle 8
|
||||
#define VKI_XENVER_commandline 9
|
||||
|
||||
typedef char vki_xen_extraversion_t[16];
|
||||
|
||||
struct vki_xen_compile_info {
|
||||
char compiler[64];
|
||||
char compile_by[16];
|
||||
char compile_domain[32];
|
||||
char compile_date[32];
|
||||
};
|
||||
|
||||
typedef char vki_xen_capabilities_info_t[1024];
|
||||
|
||||
typedef char vki_xen_changeset_info_t[64];
|
||||
|
||||
struct vki_xen_platform_parameters {
|
||||
unsigned long virt_start;
|
||||
};
|
||||
|
||||
struct vki_xen_feature_info {
|
||||
unsigned int submap_idx; /* IN: which 32-bit submap to return */
|
||||
vki_uint32_t submap; /* OUT: 32-bit submap */
|
||||
};
|
||||
|
||||
typedef char vki_xen_commandline_t[1024];
|
||||
|
||||
#endif // __VKI_XEN_VERSION_H
|
||||
|
||||
/*--------------------------------------------------------------------*/
|
||||
/*--- end ---*/
|
||||
/*--------------------------------------------------------------------*/
|
||||
130
include/vki/vki-xen-x86.h
Normal file
130
include/vki/vki-xen-x86.h
Normal file
@ -0,0 +1,130 @@
|
||||
#ifndef __VKI_XEN_X86_H
|
||||
#define __VKI_XEN_X86_H
|
||||
|
||||
#if defined(__i386__)
|
||||
#define ___DEFINE_VKI_XEN_GUEST_HANDLE(name, type) \
|
||||
typedef struct { type *p; } \
|
||||
__vki_xen_guest_handle_ ## name; \
|
||||
typedef struct { union { type *p; vki_xen_uint64_aligned_t q; }; } \
|
||||
__vki_xen_guest_handle_64_ ## name
|
||||
#define vki_xen_uint64_aligned_t vki_uint64_t __attribute__((aligned(8)))
|
||||
#define __VKI_XEN_GUEST_HANDLE_64(name) __vki_xen_guest_handle_64_ ## name
|
||||
#define VKI_XEN_GUEST_HANDLE_64(name) __VKI_XEN_GUEST_HANDLE_64(name)
|
||||
#else
|
||||
#define ___DEFINE_VKI_XEN_GUEST_HANDLE(name, type) \
|
||||
typedef struct { type *p; } __vki_xen_guest_handle_ ## name
|
||||
#define vki_xen_uint64_aligned_t vki_uint64_t
|
||||
#define __DEFINE_VKI_XEN_GUEST_HANDLE(name, type) \
|
||||
___DEFINE_VKI_XEN_GUEST_HANDLE(name, type); \
|
||||
___DEFINE_VKI_XEN_GUEST_HANDLE(const_##name, const type)
|
||||
#define DEFINE_VKI_XEN_GUEST_HANDLE(name) __DEFINE_VKI_XEN_GUEST_HANDLE(name, name)
|
||||
#define VKI_XEN_GUEST_HANDLE_64(name) VKI_XEN_GUEST_HANDLE(name)
|
||||
#endif
|
||||
|
||||
#define __VKI_XEN_GUEST_HANDLE(name) __vki_xen_guest_handle_ ## name
|
||||
#define VKI_XEN_GUEST_HANDLE(name) __VKI_XEN_GUEST_HANDLE(name)
|
||||
|
||||
typedef unsigned long vki_xen_pfn_t;
|
||||
typedef unsigned long vki_xen_ulong_t;
|
||||
|
||||
#if defined(__i386__)
|
||||
struct vki_xen_cpu_user_regs {
|
||||
vki_uint32_t ebx;
|
||||
vki_uint32_t ecx;
|
||||
vki_uint32_t edx;
|
||||
vki_uint32_t esi;
|
||||
vki_uint32_t edi;
|
||||
vki_uint32_t ebp;
|
||||
vki_uint32_t eax;
|
||||
vki_uint16_t error_code; /* private */
|
||||
vki_uint16_t entry_vector; /* private */
|
||||
vki_uint32_t eip;
|
||||
vki_uint16_t cs;
|
||||
vki_uint8_t saved_upcall_mask;
|
||||
vki_uint8_t _pad0;
|
||||
vki_uint32_t eflags; /* eflags.IF == !saved_upcall_mask */
|
||||
vki_uint32_t esp;
|
||||
vki_uint16_t ss, _pad1;
|
||||
vki_uint16_t es, _pad2;
|
||||
vki_uint16_t ds, _pad3;
|
||||
vki_uint16_t fs, _pad4;
|
||||
vki_uint16_t gs, _pad5;
|
||||
};
|
||||
#else
|
||||
struct vki_xen_cpu_user_regs {
|
||||
vki_uint64_t r15;
|
||||
vki_uint64_t r14;
|
||||
vki_uint64_t r13;
|
||||
vki_uint64_t r12;
|
||||
vki_uint64_t rbp;
|
||||
vki_uint64_t rbx;
|
||||
vki_uint64_t r11;
|
||||
vki_uint64_t r10;
|
||||
vki_uint64_t r9;
|
||||
vki_uint64_t r8;
|
||||
vki_uint64_t rax;
|
||||
vki_uint64_t rcx;
|
||||
vki_uint64_t rdx;
|
||||
vki_uint64_t rsi;
|
||||
vki_uint64_t rdi;
|
||||
vki_uint32_t error_code; /* private */
|
||||
vki_uint32_t entry_vector; /* private */
|
||||
vki_uint64_t rip;
|
||||
vki_uint16_t cs, _pad0[1];
|
||||
vki_uint8_t saved_upcall_mask;
|
||||
vki_uint8_t _pad1[3];
|
||||
vki_uint64_t rflags; /* rflags.IF == !saved_upcall_mask */
|
||||
vki_uint64_t rsp;
|
||||
vki_uint16_t ss, _pad2[3];
|
||||
vki_uint16_t es, _pad3[3];
|
||||
vki_uint16_t ds, _pad4[3];
|
||||
vki_uint16_t fs, _pad5[3]; /* Non-zero => takes precedence over fs_base. */
|
||||
vki_uint16_t gs, _pad6[3]; /* Non-zero => takes precedence over gs_base_usr. */
|
||||
};
|
||||
#endif
|
||||
|
||||
struct vki_xen_trap_info {
|
||||
vki_uint8_t vector; /* exception vector */
|
||||
vki_uint8_t flags; /* 0-3: privilege level; 4: clear event enable? */
|
||||
vki_uint16_t cs; /* code selector */
|
||||
unsigned long address; /* code offset */
|
||||
};
|
||||
|
||||
struct vki_xen_vcpu_guest_context {
|
||||
/* FPU registers come first so they can be aligned for FXSAVE/FXRSTOR. */
|
||||
struct { char x[512]; } fpu_ctxt; /* User-level FPU registers */
|
||||
unsigned long flags; /* VGCF_* flags */
|
||||
struct vki_xen_cpu_user_regs user_regs; /* User-level CPU registers */
|
||||
struct vki_xen_trap_info trap_ctxt[256];/* Virtual IDT */
|
||||
unsigned long ldt_base, ldt_ents; /* LDT (linear address, # ents) */
|
||||
unsigned long gdt_frames[16], gdt_ents; /* GDT (machine frames, # ents) */
|
||||
unsigned long kernel_ss, kernel_sp; /* Virtual TSS (only SS1/SP1) */
|
||||
/* NB. User pagetable on x86/64 is placed in ctrlreg[1]. */
|
||||
unsigned long ctrlreg[8]; /* CR0-CR7 (control registers) */
|
||||
unsigned long debugreg[8]; /* DB0-DB7 (debug registers) */
|
||||
#ifdef __i386__
|
||||
unsigned long event_callback_cs; /* CS:EIP of event callback */
|
||||
unsigned long event_callback_eip;
|
||||
unsigned long failsafe_callback_cs; /* CS:EIP of failsafe callback */
|
||||
unsigned long failsafe_callback_eip;
|
||||
#else
|
||||
unsigned long event_callback_eip;
|
||||
unsigned long failsafe_callback_eip;
|
||||
unsigned long syscall_callback_eip;
|
||||
#endif
|
||||
unsigned long vm_assist; /* VMASST_TYPE_* bitmap */
|
||||
#ifdef __x86_64__
|
||||
/* Segment base addresses. */
|
||||
vki_uint64_t fs_base;
|
||||
vki_uint64_t gs_base_kernel;
|
||||
vki_uint64_t gs_base_user;
|
||||
#endif
|
||||
};
|
||||
typedef struct vki_xen_vcpu_guest_context vki_xen_vcpu_guest_context_t;
|
||||
DEFINE_VKI_XEN_GUEST_HANDLE(vki_xen_vcpu_guest_context_t);
|
||||
|
||||
#endif // __VKI_XEN_H
|
||||
|
||||
/*--------------------------------------------------------------------*/
|
||||
/*--- end ---*/
|
||||
/*--------------------------------------------------------------------*/
|
||||
@ -1,6 +1,90 @@
|
||||
#ifndef __VKI_XEN_H
|
||||
#define __VKI_XEN_H
|
||||
|
||||
#define ENABLE_XEN 1
|
||||
|
||||
#define __VKI_XEN_set_trap_table 0
|
||||
#define __VKI_XEN_mmu_update 1
|
||||
#define __VKI_XEN_set_gdt 2
|
||||
#define __VKI_XEN_stack_switch 3
|
||||
#define __VKI_XEN_set_callbacks 4
|
||||
#define __VKI_XEN_fpu_taskswitch 5
|
||||
#define __VKI_XEN_sched_op_compat 6 /* compat since 0x00030101 */
|
||||
#define __VKI_XEN_platform_op 7
|
||||
#define __VKI_XEN_set_debugreg 8
|
||||
#define __VKI_XEN_get_debugreg 9
|
||||
#define __VKI_XEN_update_descriptor 10
|
||||
#define __VKI_XEN_memory_op 12
|
||||
#define __VKI_XEN_multicall 13
|
||||
#define __VKI_XEN_update_va_mapping 14
|
||||
#define __VKI_XEN_set_timer_op 15
|
||||
#define __VKI_XEN_event_channel_op_compat 16 /* compat since 0x00030202 */
|
||||
#define __VKI_XEN_xen_version 17
|
||||
#define __VKI_XEN_console_io 18
|
||||
#define __VKI_XEN_physdev_op_compat 19 /* compat since 0x00030202 */
|
||||
#define __VKI_XEN_grant_table_op 20
|
||||
#define __VKI_XEN_vm_assist 21
|
||||
#define __VKI_XEN_update_va_mapping_otherdomain 22
|
||||
#define __VKI_XEN_iret 23 /* x86 only */
|
||||
#define __VKI_XEN_vcpu_op 24
|
||||
#define __VKI_XEN_set_segment_base 25 /* x86/64 only */
|
||||
#define __VKI_XEN_mmuext_op 26
|
||||
#define __VKI_XEN_xsm_op 27
|
||||
#define __VKI_XEN_nmi_op 28
|
||||
#define __VKI_XEN_sched_op 29
|
||||
#define __VKI_XEN_callback_op 30
|
||||
#define __VKI_XEN_xenoprof_op 31
|
||||
#define __VKI_XEN_event_channel_op 32
|
||||
#define __VKI_XEN_physdev_op 33
|
||||
#define __VKI_XEN_hvm_op 34
|
||||
#define __VKI_XEN_sysctl 35
|
||||
#define __VKI_XEN_domctl 36
|
||||
#define __VKI_XEN_kexec_op 37
|
||||
#define __VKI_XEN_tmem_op 38
|
||||
#define __VKI_XEN_xc_reserved_op 39 /* reserved for XenClient */
|
||||
|
||||
#define __DEFINE_VKI_XEN_GUEST_HANDLE(name, type) \
|
||||
___DEFINE_VKI_XEN_GUEST_HANDLE(name, type); \
|
||||
___DEFINE_VKI_XEN_GUEST_HANDLE(const_##name, const type)
|
||||
#define DEFINE_VKI_XEN_GUEST_HANDLE(name) __DEFINE_VKI_XEN_GUEST_HANDLE(name, name)
|
||||
|
||||
typedef vki_uint8_t vki_xen_domain_handle_t[16];
|
||||
typedef vki_uint16_t vki_xen_domid_t;
|
||||
|
||||
#if defined(__i386__) || defined(__x86_64__)
|
||||
#include <vki/vki-xen-x86.h>
|
||||
#else
|
||||
#error "Need to define per-ARCH Xen types for this platform"
|
||||
#endif
|
||||
|
||||
DEFINE_VKI_XEN_GUEST_HANDLE(void);
|
||||
DEFINE_VKI_XEN_GUEST_HANDLE(vki_xen_pfn_t);
|
||||
|
||||
__DEFINE_VKI_XEN_GUEST_HANDLE(vki_ulong, unsigned long);
|
||||
|
||||
__DEFINE_VKI_XEN_GUEST_HANDLE(vki_int16, vki_int16_t);
|
||||
__DEFINE_VKI_XEN_GUEST_HANDLE(vki_int32, vki_int32_t);
|
||||
__DEFINE_VKI_XEN_GUEST_HANDLE(vki_int64, vki_int64_t);
|
||||
|
||||
__DEFINE_VKI_XEN_GUEST_HANDLE(vki_uint8, vki_uint8_t);
|
||||
__DEFINE_VKI_XEN_GUEST_HANDLE(vki_uint16, vki_uint16_t);
|
||||
__DEFINE_VKI_XEN_GUEST_HANDLE(vki_uint32, vki_uint32_t);
|
||||
__DEFINE_VKI_XEN_GUEST_HANDLE(vki_uint64, vki_uint64_t);
|
||||
|
||||
struct vki_xenctl_cpumap {
|
||||
VKI_XEN_GUEST_HANDLE_64(vki_uint8) bitmap;
|
||||
vki_uint32_t nr_cpus;
|
||||
};
|
||||
|
||||
#include <vki/vki-xen-domctl.h>
|
||||
#include <vki/vki-xen-sysctl.h>
|
||||
#include <vki/vki-xen-mmuext.h>
|
||||
#include <vki/vki-xen-memory.h>
|
||||
#include <vki/vki-xen-evtchn.h>
|
||||
#include <vki/vki-xen-gnttab.h>
|
||||
#include <vki/vki-xen-version.h>
|
||||
#include <vki/vki-xen-hvm.h>
|
||||
|
||||
#endif // __VKI_XEN_H
|
||||
|
||||
/*--------------------------------------------------------------------*/
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user