10#ifndef __XEN_PUBLIC_XEN_H__
11#define __XEN_PUBLIC_XEN_H__
18#if defined(__i386__) || defined(__x86_64__)
20#elif defined(__arm__) || defined (__aarch64__)
22#elif defined(__powerpc64__)
36#if __XEN_INTERFACE_VERSION__ < 0x00040300
47#if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
48#define XEN_FLEX_ARRAY_DIM
49#elif defined(__GNUC__)
50#define XEN_FLEX_ARRAY_DIM 0
52#define XEN_FLEX_ARRAY_DIM 1
56#define __xen_mk_uint(x) x ## U
57#define __xen_mk_ulong(x) x ## UL
58#ifndef __xen_mk_ullong
59# define __xen_mk_ullong(x) x ## ULL
61#define xen_mk_uint(x) __xen_mk_uint(x)
62#define xen_mk_ulong(x) __xen_mk_ulong(x)
63#define xen_mk_ullong(x) __xen_mk_ullong(x)
68#define xen_mk_uint(x) x
69#define xen_mk_ulong(x) x
70#define xen_mk_ullong(x) x
82#define __HYPERVISOR_set_trap_table 0
83#define __HYPERVISOR_mmu_update 1
84#define __HYPERVISOR_set_gdt 2
85#define __HYPERVISOR_stack_switch 3
86#define __HYPERVISOR_set_callbacks 4
87#define __HYPERVISOR_fpu_taskswitch 5
88#define __HYPERVISOR_sched_op_compat 6
89#define __HYPERVISOR_platform_op 7
90#define __HYPERVISOR_set_debugreg 8
91#define __HYPERVISOR_get_debugreg 9
92#define __HYPERVISOR_update_descriptor 10
93#define __HYPERVISOR_memory_op 12
94#define __HYPERVISOR_multicall 13
95#define __HYPERVISOR_update_va_mapping 14
96#define __HYPERVISOR_set_timer_op 15
97#define __HYPERVISOR_event_channel_op_compat 16
98#define __HYPERVISOR_xen_version 17
99#define __HYPERVISOR_console_io 18
100#define __HYPERVISOR_physdev_op_compat 19
101#define __HYPERVISOR_grant_table_op 20
102#define __HYPERVISOR_vm_assist 21
103#define __HYPERVISOR_update_va_mapping_otherdomain 22
104#define __HYPERVISOR_iret 23
105#define __HYPERVISOR_vcpu_op 24
106#define __HYPERVISOR_set_segment_base 25
107#define __HYPERVISOR_mmuext_op 26
108#define __HYPERVISOR_xsm_op 27
109#define __HYPERVISOR_nmi_op 28
110#define __HYPERVISOR_sched_op 29
111#define __HYPERVISOR_callback_op 30
112#define __HYPERVISOR_xenoprof_op 31
113#define __HYPERVISOR_event_channel_op 32
114#define __HYPERVISOR_physdev_op 33
115#define __HYPERVISOR_hvm_op 34
116#define __HYPERVISOR_sysctl 35
117#define __HYPERVISOR_domctl 36
118#define __HYPERVISOR_kexec_op 37
119#define __HYPERVISOR_tmem_op 38
120#define __HYPERVISOR_argo_op 39
121#define __HYPERVISOR_xenpmu_op 40
122#define __HYPERVISOR_dm_op 41
123#define __HYPERVISOR_hypfs_op 42
126#define __HYPERVISOR_arch_0 48
127#define __HYPERVISOR_arch_1 49
128#define __HYPERVISOR_arch_2 50
129#define __HYPERVISOR_arch_3 51
130#define __HYPERVISOR_arch_4 52
131#define __HYPERVISOR_arch_5 53
132#define __HYPERVISOR_arch_6 54
133#define __HYPERVISOR_arch_7 55
142#if __XEN_INTERFACE_VERSION__ < 0x00030101
143#undef __HYPERVISOR_sched_op
144#define __HYPERVISOR_sched_op __HYPERVISOR_sched_op_compat
148#if __XEN_INTERFACE_VERSION__ < 0x00030202
149#undef __HYPERVISOR_event_channel_op
150#define __HYPERVISOR_event_channel_op __HYPERVISOR_event_channel_op_compat
151#undef __HYPERVISOR_physdev_op
152#define __HYPERVISOR_physdev_op __HYPERVISOR_physdev_op_compat
156#if __XEN_INTERFACE_VERSION__ < 0x00030204
157#define __HYPERVISOR_dom0_op __HYPERVISOR_platform_op
182#define VIRQ_CONSOLE 2
183#define VIRQ_DOM_EXC 3
185#define VIRQ_DEBUGGER 6
186#define VIRQ_XENOPROF 7
187#define VIRQ_CON_RING 8
188#define VIRQ_PCPU_STATE 9
189#define VIRQ_MEM_EVENT 10
191#define VIRQ_ENOMEM 12
192#define VIRQ_XENPMU 13
195#define VIRQ_ARCH_0 16
196#define VIRQ_ARCH_1 17
197#define VIRQ_ARCH_2 18
198#define VIRQ_ARCH_3 19
199#define VIRQ_ARCH_4 20
200#define VIRQ_ARCH_5 21
201#define VIRQ_ARCH_6 22
202#define VIRQ_ARCH_7 23
350#define MMU_NORMAL_PT_UPDATE 0
351#define MMU_MACHPHYS_UPDATE 1
352#define MMU_PT_UPDATE_PRESERVE_AD 2
353#define MMU_PT_UPDATE_NO_TRANSLATE 3
421#define MMUEXT_PIN_L1_TABLE 0
422#define MMUEXT_PIN_L2_TABLE 1
423#define MMUEXT_PIN_L3_TABLE 2
424#define MMUEXT_PIN_L4_TABLE 3
425#define MMUEXT_UNPIN_TABLE 4
426#define MMUEXT_NEW_BASEPTR 5
427#define MMUEXT_TLB_FLUSH_LOCAL 6
428#define MMUEXT_INVLPG_LOCAL 7
429#define MMUEXT_TLB_FLUSH_MULTI 8
430#define MMUEXT_INVLPG_MULTI 9
431#define MMUEXT_TLB_FLUSH_ALL 10
432#define MMUEXT_INVLPG_ALL 11
433#define MMUEXT_FLUSH_CACHE 12
434#define MMUEXT_SET_LDT 13
435#define MMUEXT_NEW_USER_BASEPTR 15
436#define MMUEXT_CLEAR_PAGE 16
437#define MMUEXT_COPY_PAGE 17
438#define MMUEXT_FLUSH_CACHE_GLOBAL 18
439#define MMUEXT_MARK_SUPER 19
440#define MMUEXT_UNMARK_SUPER 20
457#if __XEN_INTERFACE_VERSION__ >= 0x00030205
488#define UVMF_NONE (xen_mk_ulong(0)<<0)
489#define UVMF_TLB_FLUSH (xen_mk_ulong(1)<<0)
490#define UVMF_INVLPG (xen_mk_ulong(2)<<0)
491#define UVMF_FLUSHTYPE_MASK (xen_mk_ulong(3)<<0)
492#define UVMF_MULTI (xen_mk_ulong(0)<<2)
493#define UVMF_LOCAL (xen_mk_ulong(0)<<2)
494#define UVMF_ALL (xen_mk_ulong(1)<<2)
521#define CONSOLEIO_write 0
522#define CONSOLEIO_read 1
527#define VMASST_CMD_enable 0
528#define VMASST_CMD_disable 1
531#define VMASST_TYPE_4gb_segments 0
534#define VMASST_TYPE_4gb_segments_notify 1
541#define VMASST_TYPE_writable_pagetables 2
544#define VMASST_TYPE_pae_extended_cr3 3
552#define VMASST_TYPE_architectural_iopl 4
559#define VMASST_TYPE_runstate_update_flag 5
571#define VMASST_TYPE_m2p_strict 32
573#if __XEN_INTERFACE_VERSION__ < 0x00040600
574#define MAX_VMASST_TYPE 3
578#define DOMID_FIRST_RESERVED xen_mk_uint(0x7FF0)
581#define DOMID_SELF xen_mk_uint(0x7FF0)
594#define DOMID_IO xen_mk_uint(0x7FF1)
605#define DOMID_XEN xen_mk_uint(0x7FF2)
609#define DOMID_COW xen_mk_uint(0x7FF3)
612#define DOMID_INVALID xen_mk_uint(0x7FF4)
615#define DOMID_IDLE xen_mk_uint(0x7FFF)
618#define DOMID_MASK xen_mk_uint(0x7FFF)
655#if __XEN_INTERFACE_VERSION__ < 0x00040400
660#define NR_EVENT_CHANNELS EVTCHN_2L_NR_CHANNELS
686#if __XEN_INTERFACE_VERSION__ > 0x040600
695#define XEN_PVCLOCK_TSC_STABLE_BIT (1 << 0)
696#define XEN_PVCLOCK_GUEST_STOPPED (1 << 1)
725#ifdef XEN_HAVE_PV_UPCALL_MASK
796#if !defined(__i386__)
798# define xen_wc_sec_hi wc_sec_hi
799#elif !defined(__XEN__) && !defined(__XEN_TOOLS__)
800# define xen_wc_sec_hi arch.wc_sec_hi
847#ifdef XEN_HAVE_PV_GUEST_ENTRY
851 unsigned long nr_pages;
867 unsigned long pt_base;
868 unsigned long nr_pt_frames;
869 unsigned long mfn_list;
873 unsigned long mod_len;
874#define MAX_GUEST_CMDLINE 1024
875 int8_t cmd_line[MAX_GUEST_CMDLINE];
877 unsigned long first_p2m_pfn;
878 unsigned long nr_p2m_frames;
880typedef struct start_info start_info_t;
883#if __XEN_INTERFACE_VERSION__ < 0x00030203
884#define console_mfn console.domU.mfn
885#define console_evtchn console.domU.evtchn
890#define SIF_PRIVILEGED (1<<0)
891#define SIF_INITDOMAIN (1<<1)
892#define SIF_MULTIBOOT_MOD (1<<2)
893#define SIF_MOD_START_PFN (1<<3)
894#define SIF_VIRT_P2M_4TOOLS (1<<4)
896#define SIF_PM_MASK (0xFF<<8)
933#define XEN_VGATYPE_TEXT_MODE_3 0x03
934#define XEN_VGATYPE_VESA_LFB 0x23
935#define XEN_VGATYPE_EFI_LFB 0x70
962#if __XEN_INTERFACE_VERSION__ >= 0x00030206
969#if __XEN_INTERFACE_VERSION__ >= 0x00040d00
976#define xen_vga_console_info dom0_vga_console_info
977#define xen_vga_console_info_t dom0_vga_console_info_t
1001#define XEN_DEFINE_UUID_(a, b, c, d, e1, e2, e3, e4, e5, e6) \
1002 {{((a) >> 24) & 0xFF, ((a) >> 16) & 0xFF, \
1003 ((a) >> 8) & 0xFF, ((a) >> 0) & 0xFF, \
1004 ((b) >> 8) & 0xFF, ((b) >> 0) & 0xFF, \
1005 ((c) >> 8) & 0xFF, ((c) >> 0) & 0xFF, \
1006 ((d) >> 8) & 0xFF, ((d) >> 0) & 0xFF, \
1007 e1, e2, e3, e4, e5, e6}}
1009#if defined(__STDC_VERSION__) ? __STDC_VERSION__ >= 199901L : defined(__GNUC__)
1010#define XEN_DEFINE_UUID(a, b, c, d, e1, e2, e3, e4, e5, e6) \
1011 ((xen_uuid_t)XEN_DEFINE_UUID_(a, b, c, d, e1, e2, e3, e4, e5, e6))
1013#define XEN_DEFINE_UUID(a, b, c, d, e1, e2, e3, e4, e5, e6) \
1014 XEN_DEFINE_UUID_(a, b, c, d, e1, e2, e3, e4, e5, e6)
1020#if defined(__XEN__) || defined(__XEN_TOOLS__)
1022#ifndef int64_aligned_t
1023#define int64_aligned_t int64_t
1025#ifndef uint64_aligned_t
1026#define uint64_aligned_t uint64_t
1028#ifndef XEN_GUEST_HANDLE_64
1029#define XEN_GUEST_HANDLE_64(name) XEN_GUEST_HANDLE(name)
1033struct xenctl_bitmap {
1037typedef struct xenctl_bitmap xenctl_bitmap_t;
unsigned long long uint64_t
static unsigned int unsigned long unsigned long arg2
static unsigned int unsigned long arg1
uint16_t magic
Magic signature.
union @104331263140136355135267063077374276003064103115 u
#define FILE_LICENCE(_licence)
Declare a particular licence as applying to a file.
#define FILE_SECBOOT(_status)
Declare a file's UEFI Secure Boot permission status.
#define DEFINE_XEN_GUEST_HANDLE(name)
struct dom0_vga_console_info dom0_vga_console_info_t
struct vcpu_time_info vcpu_time_info_t
struct mmu_update mmu_update_t
struct vcpu_info vcpu_info_t
struct mmuext_op mmuext_op_t
uint8_t xen_domain_handle_t[16]
struct multicall_entry multicall_entry_t
struct shared_info shared_info_t
#define XEN_LEGACY_MAX_VCPUS
#define XEN_GUEST_HANDLE(name)
#define __DEFINE_XEN_GUEST_HANDLE(name, type)
unsigned long xen_ulong_t
struct dom0_vga_console_info::@132262370371370357055214062075371315063335365230::@160226206163106355345362301364247201242067172207 vesa_lfb
struct dom0_vga_console_info::@132262370371370357055214062075371315063335365230::@013324061210024334371277324110126346327147145363 text_mode_3
unsigned long linear_addr
xen_ulong_t evtchn_mask[sizeof(xen_ulong_t) *8]
struct arch_shared_info arch
xen_ulong_t evtchn_pending[sizeof(xen_ulong_t) *8]
struct vcpu_info vcpu_info[XEN_LEGACY_MAX_VCPUS]
xen_ulong_t evtchn_pending_sel
uint8_t evtchn_upcall_pending
struct arch_vcpu_info arch
uint32_t tsc_to_system_mul