📄 domctl.h
字号:
uint8_t allow_access; /* flag to specify enable/disable of IRQ access */};typedef struct xen_domctl_irq_permission xen_domctl_irq_permission_t;DEFINE_XEN_GUEST_HANDLE(xen_domctl_irq_permission_t);#define XEN_DOMCTL_iomem_permission 20struct xen_domctl_iomem_permission { uint64_aligned_t first_mfn;/* first page (physical page number) in range */ uint64_aligned_t nr_mfns; /* number of pages in range (>0) */ uint8_t allow_access; /* allow (!0) or deny (0) access to range? */};typedef struct xen_domctl_iomem_permission xen_domctl_iomem_permission_t;DEFINE_XEN_GUEST_HANDLE(xen_domctl_iomem_permission_t);#define XEN_DOMCTL_ioport_permission 21struct xen_domctl_ioport_permission { uint32_t first_port; /* first port int range */ uint32_t nr_ports; /* size of port range */ uint8_t allow_access; /* allow or deny access to range? */};typedef struct xen_domctl_ioport_permission xen_domctl_ioport_permission_t;DEFINE_XEN_GUEST_HANDLE(xen_domctl_ioport_permission_t);#define XEN_DOMCTL_hypercall_init 22struct xen_domctl_hypercall_init { uint64_aligned_t gmfn; /* GMFN to be initialised */};typedef struct xen_domctl_hypercall_init xen_domctl_hypercall_init_t;DEFINE_XEN_GUEST_HANDLE(xen_domctl_hypercall_init_t);#define XEN_DOMCTL_arch_setup 23#define _XEN_DOMAINSETUP_hvm_guest 0#define XEN_DOMAINSETUP_hvm_guest (1UL<<_XEN_DOMAINSETUP_hvm_guest)#define _XEN_DOMAINSETUP_query 1 /* Get parameters (for save) */#define XEN_DOMAINSETUP_query (1UL<<_XEN_DOMAINSETUP_query)#define _XEN_DOMAINSETUP_sioemu_guest 2#define XEN_DOMAINSETUP_sioemu_guest (1UL<<_XEN_DOMAINSETUP_sioemu_guest)typedef struct xen_domctl_arch_setup { uint64_aligned_t flags; /* XEN_DOMAINSETUP_* */#ifdef __ia64__ uint64_aligned_t bp; /* mpaddr of boot param area */ uint64_aligned_t maxmem; /* Highest memory address for MDT. */ uint64_aligned_t xsi_va; /* Xen shared_info area virtual address. */ uint32_t hypercall_imm; /* Break imm for Xen hypercalls. */ int8_t vhpt_size_log2; /* Log2 of VHPT size. */#endif} xen_domctl_arch_setup_t;DEFINE_XEN_GUEST_HANDLE(xen_domctl_arch_setup_t);#define XEN_DOMCTL_settimeoffset 24struct xen_domctl_settimeoffset { int32_t time_offset_seconds; /* applied to domain wallclock time */};typedef struct xen_domctl_settimeoffset xen_domctl_settimeoffset_t;DEFINE_XEN_GUEST_HANDLE(xen_domctl_settimeoffset_t); #define XEN_DOMCTL_gethvmcontext 33#define XEN_DOMCTL_sethvmcontext 34typedef struct xen_domctl_hvmcontext { uint32_t size; /* IN/OUT: size of buffer / bytes filled */ XEN_GUEST_HANDLE_64(uint8) buffer; /* IN/OUT: data, or call * gethvmcontext with NULL * buffer to get size req'd */} xen_domctl_hvmcontext_t;DEFINE_XEN_GUEST_HANDLE(xen_domctl_hvmcontext_t);#define XEN_DOMCTL_set_address_size 35#define XEN_DOMCTL_get_address_size 36typedef struct xen_domctl_address_size { uint32_t size;} xen_domctl_address_size_t;DEFINE_XEN_GUEST_HANDLE(xen_domctl_address_size_t);#define XEN_DOMCTL_real_mode_area 26struct xen_domctl_real_mode_area { uint32_t log; /* log2 of Real Mode Area size */};typedef struct xen_domctl_real_mode_area xen_domctl_real_mode_area_t;DEFINE_XEN_GUEST_HANDLE(xen_domctl_real_mode_area_t);#define XEN_DOMCTL_sendtrigger 28#define XEN_DOMCTL_SENDTRIGGER_NMI 0#define XEN_DOMCTL_SENDTRIGGER_RESET 1#define XEN_DOMCTL_SENDTRIGGER_INIT 2struct xen_domctl_sendtrigger { uint32_t trigger; /* IN */ uint32_t vcpu; /* IN */};typedef struct xen_domctl_sendtrigger xen_domctl_sendtrigger_t;DEFINE_XEN_GUEST_HANDLE(xen_domctl_sendtrigger_t);/* Assign PCI device to HVM guest. Sets up IOMMU structures. */#define XEN_DOMCTL_assign_device 37#define XEN_DOMCTL_test_assign_device 45#define XEN_DOMCTL_deassign_device 47struct xen_domctl_assign_device { uint32_t machine_bdf; /* machine PCI ID of assigned device */};typedef struct xen_domctl_assign_device xen_domctl_assign_device_t;DEFINE_XEN_GUEST_HANDLE(xen_domctl_assign_device_t);/* Retrieve sibling devices infomation of machine_bdf */#define XEN_DOMCTL_get_device_group 50struct xen_domctl_get_device_group { uint32_t machine_bdf; /* IN */ uint32_t max_sdevs; /* IN */ uint32_t num_sdevs; /* OUT */ XEN_GUEST_HANDLE_64(uint32) sdev_array; /* OUT */};typedef struct xen_domctl_get_device_group xen_domctl_get_device_group_t;DEFINE_XEN_GUEST_HANDLE(xen_domctl_get_device_group_t);/* Pass-through interrupts: bind real irq -> hvm devfn. */#define XEN_DOMCTL_bind_pt_irq 38#define XEN_DOMCTL_unbind_pt_irq 48typedef enum pt_irq_type_e { PT_IRQ_TYPE_PCI, PT_IRQ_TYPE_ISA, PT_IRQ_TYPE_MSI,} pt_irq_type_t;struct xen_domctl_bind_pt_irq { uint32_t machine_irq; pt_irq_type_t irq_type; uint32_t hvm_domid; union { struct { uint8_t isa_irq; } isa; struct { uint8_t bus; uint8_t device; uint8_t intx; } pci; struct { uint8_t gvec; uint32_t gflags; } msi; } u;};typedef struct xen_domctl_bind_pt_irq xen_domctl_bind_pt_irq_t;DEFINE_XEN_GUEST_HANDLE(xen_domctl_bind_pt_irq_t);/* Bind machine I/O address range -> HVM address range. */#define XEN_DOMCTL_memory_mapping 39#define DPCI_ADD_MAPPING 1#define DPCI_REMOVE_MAPPING 0struct xen_domctl_memory_mapping { uint64_aligned_t first_gfn; /* first page (hvm guest phys page) in range */ uint64_aligned_t first_mfn; /* first page (machine page) in range */ uint64_aligned_t nr_mfns; /* number of pages in range (>0) */ uint32_t add_mapping; /* add or remove mapping */ uint32_t padding; /* padding for 64-bit aligned structure */};typedef struct xen_domctl_memory_mapping xen_domctl_memory_mapping_t;DEFINE_XEN_GUEST_HANDLE(xen_domctl_memory_mapping_t);/* Bind machine I/O port range -> HVM I/O port range. */#define XEN_DOMCTL_ioport_mapping 40struct xen_domctl_ioport_mapping { uint32_t first_gport; /* first guest IO port*/ uint32_t first_mport; /* first machine IO port */ uint32_t nr_ports; /* size of port range */ uint32_t add_mapping; /* add or remove mapping */};typedef struct xen_domctl_ioport_mapping xen_domctl_ioport_mapping_t;DEFINE_XEN_GUEST_HANDLE(xen_domctl_ioport_mapping_t);/* * Pin caching type of RAM space for x86 HVM domU. */#define XEN_DOMCTL_pin_mem_cacheattr 41/* Caching types: these happen to be the same as x86 MTRR/PAT type codes. */#define XEN_DOMCTL_MEM_CACHEATTR_UC 0#define XEN_DOMCTL_MEM_CACHEATTR_WC 1#define XEN_DOMCTL_MEM_CACHEATTR_WT 4#define XEN_DOMCTL_MEM_CACHEATTR_WP 5#define XEN_DOMCTL_MEM_CACHEATTR_WB 6#define XEN_DOMCTL_MEM_CACHEATTR_UCM 7struct xen_domctl_pin_mem_cacheattr { uint64_aligned_t start, end; unsigned int type; /* XEN_DOMCTL_MEM_CACHEATTR_* */};typedef struct xen_domctl_pin_mem_cacheattr xen_domctl_pin_mem_cacheattr_t;DEFINE_XEN_GUEST_HANDLE(xen_domctl_pin_mem_cacheattr_t);#define XEN_DOMCTL_set_ext_vcpucontext 42#define XEN_DOMCTL_get_ext_vcpucontext 43struct xen_domctl_ext_vcpucontext { /* IN: VCPU that this call applies to. */ uint32_t vcpu; /* * SET: Size of struct (IN) * GET: Size of struct (OUT) */ uint32_t size;#if defined(__i386__) || defined(__x86_64__) /* SYSCALL from 32-bit mode and SYSENTER callback information. */ /* NB. SYSCALL from 64-bit mode is contained in vcpu_guest_context_t */ uint64_aligned_t syscall32_callback_eip; uint64_aligned_t sysenter_callback_eip; uint16_t syscall32_callback_cs; uint16_t sysenter_callback_cs; uint8_t syscall32_disables_events; uint8_t sysenter_disables_events;#endif};typedef struct xen_domctl_ext_vcpucontext xen_domctl_ext_vcpucontext_t;DEFINE_XEN_GUEST_HANDLE(xen_domctl_ext_vcpucontext_t);/* * Set optimizaton features for a domain */#define XEN_DOMCTL_set_opt_feature 44struct xen_domctl_set_opt_feature {#if defined(__ia64__) struct xen_ia64_opt_feature optf;#else /* Make struct non-empty: do not depend on this field name! */ uint64_t dummy;#endif};typedef struct xen_domctl_set_opt_feature xen_domctl_set_opt_feature_t;DEFINE_XEN_GUEST_HANDLE(xen_domctl_set_opt_feature_t);/* * Set the target domain for a domain */#define XEN_DOMCTL_set_target 46struct xen_domctl_set_target { domid_t target;};typedef struct xen_domctl_set_target xen_domctl_set_target_t;DEFINE_XEN_GUEST_HANDLE(xen_domctl_set_target_t);#if defined(__i386__) || defined(__x86_64__)# define XEN_CPUID_INPUT_UNUSED 0xFFFFFFFF# define XEN_DOMCTL_set_cpuid 49struct xen_domctl_cpuid { unsigned int input[2]; unsigned int eax; unsigned int ebx; unsigned int ecx; unsigned int edx;};typedef struct xen_domctl_cpuid xen_domctl_cpuid_t;DEFINE_XEN_GUEST_HANDLE(xen_domctl_cpuid_t);#endif#define XEN_DOMCTL_subscribe 29struct xen_domctl_subscribe { uint32_t port; /* IN */};typedef struct xen_domctl_subscribe xen_domctl_subscribe_t;DEFINE_XEN_GUEST_HANDLE(xen_domctl_subscribe_t);/* * Define the maximum machine address size which should be allocated * to a guest. */#define XEN_DOMCTL_set_machine_address_size 51#define XEN_DOMCTL_get_machine_address_size 52struct xen_domctl { uint32_t cmd; uint32_t interface_version; /* XEN_DOMCTL_INTERFACE_VERSION */ domid_t domain; union { struct xen_domctl_createdomain createdomain; struct xen_domctl_getdomaininfo getdomaininfo; struct xen_domctl_getmemlist getmemlist; struct xen_domctl_getpageframeinfo getpageframeinfo; struct xen_domctl_getpageframeinfo2 getpageframeinfo2; struct xen_domctl_vcpuaffinity vcpuaffinity; struct xen_domctl_shadow_op shadow_op; struct xen_domctl_max_mem max_mem; struct xen_domctl_vcpucontext vcpucontext; struct xen_domctl_getvcpuinfo getvcpuinfo; struct xen_domctl_max_vcpus max_vcpus; struct xen_domctl_scheduler_op scheduler_op; struct xen_domctl_setdomainhandle setdomainhandle; struct xen_domctl_setdebugging setdebugging; struct xen_domctl_irq_permission irq_permission; struct xen_domctl_iomem_permission iomem_permission; struct xen_domctl_ioport_permission ioport_permission; struct xen_domctl_hypercall_init hypercall_init; struct xen_domctl_arch_setup arch_setup; struct xen_domctl_settimeoffset settimeoffset; struct xen_domctl_real_mode_area real_mode_area; struct xen_domctl_hvmcontext hvmcontext; struct xen_domctl_address_size address_size; struct xen_domctl_sendtrigger sendtrigger; struct xen_domctl_get_device_group get_device_group; struct xen_domctl_assign_device assign_device; struct xen_domctl_bind_pt_irq bind_pt_irq; struct xen_domctl_memory_mapping memory_mapping; struct xen_domctl_ioport_mapping ioport_mapping; struct xen_domctl_pin_mem_cacheattr pin_mem_cacheattr; struct xen_domctl_ext_vcpucontext ext_vcpucontext; struct xen_domctl_set_opt_feature set_opt_feature; struct xen_domctl_set_target set_target; struct xen_domctl_subscribe subscribe;#if defined(__i386__) || defined(__x86_64__) struct xen_domctl_cpuid cpuid;#endif uint8_t pad[128]; } u;};typedef struct xen_domctl xen_domctl_t;DEFINE_XEN_GUEST_HANDLE(xen_domctl_t);#endif /* __XEN_PUBLIC_DOMCTL_H__ *//* * Local variables: * mode: C * c-set-style: "BSD" * c-basic-offset: 4 * tab-width: 4 * indent-tabs-mode: nil * End: */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -