1 /* 2 This file is part of Valgrind, a dynamic binary instrumentation 3 framework. 4 5 Copyright (C) 2012-2015 Citrix 6 7 This program is free software; you can redistribute it and/or 8 modify it under the terms of the GNU General Public License as 9 published by the Free Software Foundation; either version 2 of the 10 License, or (at your option) any later version. 11 12 This program is distributed in the hope that it will be useful, but 13 WITHOUT ANY WARRANTY; without even the implied warranty of 14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 15 General Public License for more details. 16 17 You should have received a copy of the GNU General Public License 18 along with this program; if not, write to the Free Software 19 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 20 02111-1307, USA. 21 22 The GNU General Public License is contained in the file COPYING. 23 */ 24 25 /* Contributed by Andrew Cooper <andrew.cooper3@citrix.com> 26 and Ian Campbell <ian.campbell@citrix.com> */ 27 28 #ifndef __VKI_XEN_DOMCTL_H 29 #define __VKI_XEN_DOMCTL_H 30 31 /* 32 * The domctl interface is versioned via the interface_version 33 * field. This structures in this header supports domctl interfaces: 34 * 35 * - 0x00000007: Xen 4.1 36 * - 0x00000008: Xen 4.2 37 * - 0x00000009: Xen 4.3 & 4.4 38 * - 0x0000000a: Xen 4.5 39 * 40 * When adding a new subop be sure to include the variants used by all 41 * of the above, both here and in syswrap-xen.c 42 * 43 * Structs which are identical in all supported versions have no 44 * version suffix. Structs which do differ are defined multiple times 45 * and use the suffix of the latest version to contain that particular 46 * variant. 47 */ 48 49 #define VKI_XEN_DOMCTL_createdomain 1 50 #define VKI_XEN_DOMCTL_destroydomain 2 51 #define VKI_XEN_DOMCTL_pausedomain 3 52 #define VKI_XEN_DOMCTL_unpausedomain 4 53 #define VKI_XEN_DOMCTL_getdomaininfo 5 54 #define VKI_XEN_DOMCTL_getmemlist 6 55 #define VKI_XEN_DOMCTL_getpageframeinfo 7 56 #define VKI_XEN_DOMCTL_getpageframeinfo2 8 57 #define VKI_XEN_DOMCTL_setvcpuaffinity 9 58 #define VKI_XEN_DOMCTL_shadow_op 10 59 #define VKI_XEN_DOMCTL_max_mem 11 60 #define VKI_XEN_DOMCTL_setvcpucontext 12 61 #define VKI_XEN_DOMCTL_getvcpucontext 13 62 #define VKI_XEN_DOMCTL_getvcpuinfo 14 63 #define VKI_XEN_DOMCTL_max_vcpus 15 64 #define VKI_XEN_DOMCTL_scheduler_op 16 65 #define VKI_XEN_DOMCTL_setdomainhandle 17 66 #define VKI_XEN_DOMCTL_setdebugging 18 67 #define VKI_XEN_DOMCTL_irq_permission 19 68 #define VKI_XEN_DOMCTL_iomem_permission 20 69 #define VKI_XEN_DOMCTL_ioport_permission 21 70 #define VKI_XEN_DOMCTL_hypercall_init 22 71 #define VKI_XEN_DOMCTL_arch_setup 23 72 #define VKI_XEN_DOMCTL_settimeoffset 24 73 #define VKI_XEN_DOMCTL_getvcpuaffinity 25 74 #define VKI_XEN_DOMCTL_real_mode_area 26 75 #define VKI_XEN_DOMCTL_resumedomain 27 76 #define VKI_XEN_DOMCTL_sendtrigger 28 77 #define VKI_XEN_DOMCTL_subscribe 29 78 #define VKI_XEN_DOMCTL_gethvmcontext 33 79 #define VKI_XEN_DOMCTL_sethvmcontext 34 80 #define VKI_XEN_DOMCTL_set_address_size 35 81 #define VKI_XEN_DOMCTL_get_address_size 36 82 #define VKI_XEN_DOMCTL_assign_device 37 83 #define VKI_XEN_DOMCTL_bind_pt_irq 38 84 #define VKI_XEN_DOMCTL_memory_mapping 39 85 #define VKI_XEN_DOMCTL_ioport_mapping 40 86 #define VKI_XEN_DOMCTL_pin_mem_cacheattr 41 87 #define VKI_XEN_DOMCTL_set_ext_vcpucontext 42 88 #define VKI_XEN_DOMCTL_get_ext_vcpucontext 43 89 #define VKI_XEN_DOMCTL_set_opt_feature 44 /*Obsolete IA64 only */ 90 #define VKI_XEN_DOMCTL_test_assign_device 45 91 #define VKI_XEN_DOMCTL_set_target 46 92 #define VKI_XEN_DOMCTL_deassign_device 47 93 #define VKI_XEN_DOMCTL_unbind_pt_irq 48 94 #define VKI_XEN_DOMCTL_set_cpuid 49 95 #define VKI_XEN_DOMCTL_get_device_group 50 96 #define VKI_XEN_DOMCTL_set_machine_address_size 51 97 #define VKI_XEN_DOMCTL_get_machine_address_size 52 98 #define VKI_XEN_DOMCTL_suppress_spurious_page_faults 53 99 #define VKI_XEN_DOMCTL_debug_op 54 100 #define VKI_XEN_DOMCTL_gethvmcontext_partial 55 101 #define VKI_XEN_DOMCTL_mem_event_op 56 102 #define VKI_XEN_DOMCTL_mem_sharing_op 57 103 #define VKI_XEN_DOMCTL_disable_migrate 58 104 #define VKI_XEN_DOMCTL_gettscinfo 59 105 #define VKI_XEN_DOMCTL_settscinfo 60 106 #define VKI_XEN_DOMCTL_getpageframeinfo3 61 107 #define VKI_XEN_DOMCTL_setvcpuextstate 62 108 #define VKI_XEN_DOMCTL_getvcpuextstate 63 109 #define VKI_XEN_DOMCTL_set_access_required 64 110 #define VKI_XEN_DOMCTL_audit_p2m 65 111 #define VKI_XEN_DOMCTL_set_virq_handler 66 112 #define VKI_XEN_DOMCTL_set_broken_page_p2m 67 113 #define VKI_XEN_DOMCTL_setnodeaffinity 68 114 #define VKI_XEN_DOMCTL_getnodeaffinity 69 115 #define VKI_XEN_DOMCTL_set_max_evtchn 70 116 #define VKI_XEN_DOMCTL_cacheflush 71 117 #define VKI_XEN_DOMCTL_get_vcpu_msrs 72 118 #define VKI_XEN_DOMCTL_set_vcpu_msrs 73 119 #define VKI_XEN_DOMCTL_gdbsx_guestmemio 1000 120 #define VKI_XEN_DOMCTL_gdbsx_pausevcpu 1001 121 #define VKI_XEN_DOMCTL_gdbsx_unpausevcpu 1002 122 #define VKI_XEN_DOMCTL_gdbsx_domstatus 1003 123 124 struct vki_xen_domctl_createdomain { 125 /* IN parameters */ 126 vki_uint32_t ssidref; 127 vki_xen_domain_handle_t handle; 128 vki_uint32_t flags; 129 }; 130 131 struct vki_xen_domctl_getdomaininfo_00000007 { 132 /* OUT variables. */ 133 vki_xen_domid_t domain; 134 vki_uint32_t flags; 135 vki_xen_uint64_aligned_t tot_pages; 136 vki_xen_uint64_aligned_t max_pages; 137 vki_xen_uint64_aligned_t shr_pages; 138 vki_xen_uint64_aligned_t paged_pages; 139 vki_xen_uint64_aligned_t shared_info_frame; 140 vki_xen_uint64_aligned_t cpu_time; 141 vki_uint32_t nr_online_vcpus; 142 vki_uint32_t max_vcpu_id; 143 vki_uint32_t ssidref; 144 vki_xen_domain_handle_t handle; 145 vki_uint32_t cpupool; 146 }; 147 typedef struct vki_xen_domctl_getdomaininfo_00000007 vki_xen_domctl_getdomaininfo_00000007_t; 148 DEFINE_VKI_XEN_GUEST_HANDLE(vki_xen_domctl_getdomaininfo_00000007_t); 149 150 struct vki_xen_domctl_getdomaininfo_00000008 { 151 /* OUT variables. */ 152 vki_xen_domid_t domain; 153 vki_uint32_t flags; 154 vki_xen_uint64_aligned_t tot_pages; 155 vki_xen_uint64_aligned_t max_pages; 156 vki_xen_uint64_aligned_t shr_pages; 157 vki_xen_uint64_aligned_t paged_pages; 158 vki_xen_uint64_aligned_t shared_info_frame; 159 vki_xen_uint64_aligned_t cpu_time; 160 vki_uint32_t nr_online_vcpus; 161 vki_uint32_t max_vcpu_id; 162 vki_uint32_t ssidref; 163 vki_xen_domain_handle_t handle; 164 vki_uint32_t cpupool; 165 }; 166 typedef struct vki_xen_domctl_getdomaininfo_00000008 vki_xen_domctl_getdomaininfo_00000008_t; 167 DEFINE_VKI_XEN_GUEST_HANDLE(vki_xen_domctl_getdomaininfo_00000008_t); 168 169 struct vki_xen_domctl_getdomaininfo_00000009 { 170 /* OUT variables. */ 171 vki_xen_domid_t domain; 172 vki_uint32_t flags; 173 vki_xen_uint64_aligned_t tot_pages; 174 vki_xen_uint64_aligned_t max_pages; 175 vki_xen_uint64_aligned_t outstanding_pages; 176 vki_xen_uint64_aligned_t shr_pages; 177 vki_xen_uint64_aligned_t paged_pages; 178 vki_xen_uint64_aligned_t shared_info_frame; 179 vki_xen_uint64_aligned_t cpu_time; 180 vki_uint32_t nr_online_vcpus; 181 vki_uint32_t max_vcpu_id; 182 vki_uint32_t ssidref; 183 vki_xen_domain_handle_t handle; 184 vki_uint32_t cpupool; 185 }; 186 typedef struct vki_xen_domctl_getdomaininfo_00000009 vki_xen_domctl_getdomaininfo_00000009_t; 187 DEFINE_VKI_XEN_GUEST_HANDLE(vki_xen_domctl_getdomaininfo_00000009_t); 188 189 /* vki_xen_domctl_getdomaininfo_0000000a is the same as 00000009 */ 190 191 /* Get/set the NUMA node(s) with which the guest has affinity with. */ 192 /* XEN_DOMCTL_setnodeaffinity */ 193 /* XEN_DOMCTL_getnodeaffinity */ 194 struct vki_xen_domctl_nodeaffinity { 195 struct vki_xenctl_bitmap nodemap;/* IN */ 196 }; 197 typedef struct vki_xen_domctl_nodeaffinity vki_xen_domctl_nodeaffinity_t; 198 DEFINE_VKI_XEN_GUEST_HANDLE(vki_xen_domctl_nodeaffinity_t); 199 200 struct vki_xen_domctl_getpageframeinfo3 { 201 vki_xen_uint64_aligned_t num; /* IN */ 202 VKI_XEN_GUEST_HANDLE_64(vki_xen_pfn_t) array; /* IN/OUT */ 203 }; 204 205 struct vki_xen_domctl_vcpuaffinity_00000009 { 206 vki_uint32_t vcpu; /* IN */ 207 struct vki_xenctl_bitmap cpumap; /* IN/OUT */ 208 }; 209 210 struct vki_xen_domctl_vcpuaffinity_0000000a { 211 vki_uint32_t vcpu; /* IN */ 212 #define VKI_XEN_VCPUAFFINITY_HARD (1U<<0) 213 #define VKI_XEN_VCPUAFFINITY_SOFT (1U<<1) 214 vki_uint32_t flags; /* IN */ 215 struct vki_xenctl_bitmap cpumap_hard; /* IN/OUT */ 216 struct vki_xenctl_bitmap cpumap_soft; /* IN/OUT */ 217 }; 218 219 struct vki_xen_domctl_shadow_op_stats { 220 vki_uint32_t fault_count; 221 vki_uint32_t dirty_count; 222 }; 223 224 /* vki_xen_domctl_shadow_op.op is an utter mess for compatibily reasons. */ 225 226 struct vki_xen_domctl_shadow_op { 227 vki_uint32_t op; /* IN */ 228 229 #define VKI_XEN_DOMCTL_SHADOW_OP_OFF 0 230 #define VKI_XEN_DOMCTL_SHADOW_OP_ENABLE 32 231 #define VKI_XEN_DOMCTL_SHADOW_OP_CLEAN 11 232 #define VKI_XEN_DOMCTL_SHADOW_OP_PEEK 12 233 #define VKI_XEN_DOMCTL_SHADOW_OP_GET_ALLOCATION 30 234 #define VKI_XEN_DOMCTL_SHADOW_OP_SET_ALLOCATION 31 235 236 #define VKI_XEN_DOMCTL_SHADOW_OP_ENABLE_TEST 1 237 #define VKI_XEN_DOMCTL_SHADOW_OP_ENABLE_LOGDIRTY 2 238 #define VKI_XEN_DOMCTL_SHADOW_OP_ENABLE_TRANSLATE 3 239 240 vki_uint32_t mode; 241 242 #define XEN_DOMCTL_SHADOW_ENABLE_REFCOUNT (1 << 1) 243 #define XEN_DOMCTL_SHADOW_ENABLE_LOG_DIRTY (1 << 2) 244 #define XEN_DOMCTL_SHADOW_ENABLE_TRANSLATE (1 << 3) 245 #define XEN_DOMCTL_SHADOW_ENABLE_EXTERNAL (1 << 4) 246 247 vki_uint32_t mb; 248 VKI_XEN_GUEST_HANDLE_64(vki_uint8) dirty_bitmap; 249 vki_xen_uint64_aligned_t pages; 250 struct vki_xen_domctl_shadow_op_stats stats; 251 }; 252 253 struct vki_xen_domctl_max_mem { 254 /* IN variables. */ 255 vki_xen_uint64_aligned_t max_memkb; 256 }; 257 258 struct vki_xen_domctl_vcpucontext { 259 vki_uint32_t vcpu; /* IN */ 260 VKI_XEN_GUEST_HANDLE_64(vki_xen_vcpu_guest_context_t) ctxt; /* IN/OUT */ 261 }; 262 263 struct vki_xen_domctl_getvcpuinfo { 264 /* IN variables. */ 265 vki_uint32_t vcpu; 266 /* OUT variables. */ 267 vki_uint8_t online; /* currently online (not hotplugged)? */ 268 vki_uint8_t blocked; /* blocked waiting for an event? */ 269 vki_uint8_t running; /* currently scheduled on its CPU? */ 270 vki_xen_uint64_aligned_t cpu_time;/* total cpu time consumed (ns) */ 271 vki_uint32_t cpu; /* current mapping */ 272 }; 273 274 struct vki_xen_domctl_scheduler_op { 275 vki_uint32_t sched_id; /* VKI_XEN_SCHEDULER_* */ 276 #define VKI_XEN_SCHEDULER_SEDF 4 277 #define VKI_XEN_SCHEDULER_CREDIT 5 278 #define VKI_XEN_SCHEDULER_CREDIT2 6 279 #define VKI_XEN_SCHEDULER_ARINC653 7 280 #define VKI_XEN_SCHEDULER_RTDS 8 281 vki_uint32_t cmd; /* VKI_XEN_DOMCTL_SCHEDOP_* */ 282 #define VKI_XEN_DOMCTL_SCHEDOP_putinfo 0 283 #define VKI_XEN_DOMCTL_SCHEDOP_getinfo 1 284 union { 285 struct xen_domctl_sched_sedf { 286 vki_xen_uint64_aligned_t period; 287 vki_xen_uint64_aligned_t slice; 288 vki_xen_uint64_aligned_t latency; 289 vki_uint32_t extratime; 290 vki_uint32_t weight; 291 } sedf; 292 struct xen_domctl_sched_credit { 293 vki_uint16_t weight; 294 vki_uint16_t cap; 295 } credit; 296 struct xen_domctl_sched_credit2 { 297 vki_uint16_t weight; 298 } credit2; 299 struct xen_domctl_sched_rtds { 300 vki_uint32_t period; 301 vki_uint32_t budget; 302 } rtds; 303 } u; 304 }; 305 306 struct vki_xen_domctl_max_vcpus { 307 vki_uint32_t max; /* maximum number of vcpus */ 308 }; 309 310 /* XEN_DOMCTL_irq_permission */ 311 struct vki_xen_domctl_irq_permission { 312 vki_uint8_t pirq; 313 vki_uint8_t allow_access; /* flag to specify enable/disable of IRQ access */ 314 }; 315 316 struct vki_xen_domctl_iomem_permission { 317 vki_xen_uint64_aligned_t first_mfn;/* first page (physical page number) in range */ 318 vki_xen_uint64_aligned_t nr_mfns; /* number of pages in range (>0) */ 319 vki_uint8_t allow_access; /* allow (!0) or deny (0) access to range? */ 320 }; 321 322 struct vki_xen_domctl_ioport_permission { 323 vki_uint32_t first_port; /* IN */ 324 vki_uint32_t nr_ports; /* IN */ 325 vki_uint8_t allow_access; /* IN */ 326 }; 327 328 struct vki_xen_domctl_hypercall_init { 329 vki_xen_uint64_aligned_t gmfn; /* GMFN to be initialised */ 330 }; 331 332 struct vki_xen_domctl_settimeoffset { 333 vki_int32_t time_offset_seconds; 334 }; 335 336 struct vki_xen_domctl_cpuid { 337 vki_uint32_t input[2]; 338 vki_uint32_t eax; 339 vki_uint32_t ebx; 340 vki_uint32_t ecx; 341 vki_uint32_t edx; 342 }; 343 344 struct vki_xen_guest_tsc_info { 345 vki_uint32_t tsc_mode; 346 vki_uint32_t gtsc_khz; 347 vki_uint32_t incarnation; 348 vki_uint32_t pad; 349 vki_xen_uint64_aligned_t elapsed_nsec; 350 }; 351 typedef struct vki_xen_guest_tsc_info vki_xen_guest_tsc_info_t; 352 DEFINE_VKI_XEN_GUEST_HANDLE(vki_xen_guest_tsc_info_t); 353 354 struct vki_xen_domctl_hvmcontext { 355 vki_uint32_t size; /* IN/OUT size of buffer */ 356 VKI_XEN_GUEST_HANDLE_64(vki_uint8) buffer; /* IN/OUT */ 357 }; 358 typedef struct vki_xen_domctl_hvmcontext vki_xen_domctl_hvmcontext_t; 359 DEFINE_VKI_XEN_GUEST_HANDLE(vki_xen_domctl_hvmcontext_t); 360 361 struct vki_xen_domctl_hvmcontext_partial { 362 vki_uint32_t type; /* IN */ 363 vki_uint32_t instance; /* IN */ 364 VKI_XEN_GUEST_HANDLE_64(vki_uint8) buffer; /* IN/OUT buffer */ 365 }; 366 typedef struct vki_xen_domctl_hvmcontext_partial vki_xen_domctl_hvmcontext_partial_t; 367 DEFINE_VKI_XEN_GUEST_HANDLE(vki_xen_domctl_hvmcontext_partial_t); 368 369 struct vki_xen_domctl_tsc_info { 370 VKI_XEN_GUEST_HANDLE_64(vki_xen_guest_tsc_info_t) out_info; /* OUT */ 371 vki_xen_guest_tsc_info_t info; /* IN */ 372 }; 373 374 struct vki_xen_domctl_pin_mem_cacheattr { 375 vki_xen_uint64_aligned_t start, end; /* IN */ 376 vki_uint32_t type; /* IN */ 377 }; 378 379 struct vki_xen_domctl_ext_vcpucontext_00000008 { 380 vki_uint32_t vcpu; /* IN */ 381 382 /* IN for XEN_DOMCTL_set_ext_vcpucontext 383 * OUT for XEN_DOMCTL_get_ext_vcpucontext */ 384 vki_uint32_t size; 385 #if defined(__i386__) || defined(__x86_64__) 386 vki_xen_uint64_aligned_t syscall32_callback_eip; 387 vki_xen_uint64_aligned_t sysenter_callback_eip; 388 vki_uint16_t syscall32_callback_cs; 389 vki_uint16_t sysenter_callback_cs; 390 vki_uint8_t syscall32_disables_events; 391 vki_uint8_t sysenter_disables_events; 392 vki_xen_uint64_aligned_t mcg_cap; 393 #endif 394 }; 395 396 struct vki_xen_domctl_ext_vcpucontext_00000009 { 397 vki_uint32_t vcpu; /* IN */ 398 399 /* IN for XEN_DOMCTL_set_ext_vcpucontext 400 * OUT for XEN_DOMCTL_get_ext_vcpucontext */ 401 vki_uint32_t size; 402 #if defined(__i386__) || defined(__x86_64__) 403 vki_xen_uint64_aligned_t syscall32_callback_eip; 404 vki_xen_uint64_aligned_t sysenter_callback_eip; 405 vki_uint16_t syscall32_callback_cs; 406 vki_uint16_t sysenter_callback_cs; 407 vki_uint8_t syscall32_disables_events; 408 vki_uint8_t sysenter_disables_events; 409 vki_uint64_t caps; 410 vki_uint64_t mci_ctl2_bank0; 411 vki_uint64_t mci_ctl2_bank1; 412 #endif 413 }; 414 415 /* vki_xen_domctl_ext_vcpucontext_0000000a is the same as 00000009 */ 416 417 struct vki_xen_domctl_vcpuextstate { 418 vki_uint32_t vcpu; 419 vki_xen_uint64_aligned_t xfeature_mask; 420 vki_xen_uint64_aligned_t size; 421 VKI_XEN_GUEST_HANDLE_64(vki_uint64) buffer; 422 }; 423 424 struct vki_xen_domctl_address_size { 425 vki_uint32_t size; 426 }; 427 428 struct vki_xen_domctl_assign_device { 429 vki_uint32_t machine_sbdf; /* machine PCI ID of assigned device */ 430 }; 431 432 struct vki_xen_domctl_debug_op { 433 vki_uint32_t op; /* IN */ 434 vki_uint32_t vcpu; /* IN */ 435 }; 436 typedef struct vki_xen_domctl_debug_op vki_xen_domctl_debug_op_t; 437 438 struct vki_xen_domctl_mem_event_op { 439 vki_uint32_t op; /* IN */ 440 vki_uint32_t mode; /* IN */ 441 vki_uint32_t port; /* OUT */ 442 }; 443 444 struct vki_xen_domctl_set_access_required { 445 vki_uint8_t access_required; /* IN */ 446 }; 447 448 struct vki_xen_domctl_set_max_evtchn { 449 vki_uint32_t max_port; 450 }; 451 452 struct vki_xen_domctl_cacheflush { 453 /* IN: page range to flush. */ 454 vki_xen_pfn_t start_pfn, nr_pfns; 455 }; 456 457 struct vki_xen_domctl_vcpu_msr { 458 vki_uint32_t index; 459 vki_uint32_t reserved; 460 vki_xen_uint64_aligned_t value; 461 }; 462 typedef struct vki_xen_domctl_vcpu_msr vki_xen_domctl_vcpu_msr_t; 463 DEFINE_VKI_XEN_GUEST_HANDLE(vki_xen_domctl_vcpu_msr_t); 464 465 struct vki_xen_domctl_vcpu_msrs { 466 vki_uint32_t vcpu; 467 vki_uint32_t msr_count; 468 VKI_XEN_GUEST_HANDLE_64(vki_xen_domctl_vcpu_msr_t) msrs; 469 }; 470 471 struct vki_xen_domctl { 472 vki_uint32_t cmd; 473 vki_uint32_t interface_version; /* XEN_DOMCTL_INTERFACE_VERSION */ 474 vki_xen_domid_t domain; 475 union { 476 struct vki_xen_domctl_createdomain createdomain; 477 struct vki_xen_domctl_getdomaininfo_00000007 getdomaininfo_00000007; 478 struct vki_xen_domctl_getdomaininfo_00000008 getdomaininfo_00000008; 479 struct vki_xen_domctl_getdomaininfo_00000009 getdomaininfo_00000009; 480 //struct vki_xen_domctl_getmemlist getmemlist; 481 //struct vki_xen_domctl_getpageframeinfo getpageframeinfo; 482 //struct vki_xen_domctl_getpageframeinfo2 getpageframeinfo2; 483 struct vki_xen_domctl_getpageframeinfo3 getpageframeinfo3; 484 struct vki_xen_domctl_nodeaffinity nodeaffinity; 485 struct vki_xen_domctl_vcpuaffinity_00000009 vcpuaffinity_00000009; 486 struct vki_xen_domctl_vcpuaffinity_0000000a vcpuaffinity_0000000a; 487 struct vki_xen_domctl_shadow_op shadow_op; 488 struct vki_xen_domctl_max_mem max_mem; 489 struct vki_xen_domctl_vcpucontext vcpucontext; 490 struct vki_xen_domctl_getvcpuinfo getvcpuinfo; 491 struct vki_xen_domctl_max_vcpus max_vcpus; 492 struct vki_xen_domctl_scheduler_op scheduler_op; 493 //struct vki_xen_domctl_setdomainhandle setdomainhandle; 494 //struct vki_xen_domctl_setdebugging setdebugging; 495 struct vki_xen_domctl_irq_permission irq_permission; 496 struct vki_xen_domctl_iomem_permission iomem_permission; 497 struct vki_xen_domctl_ioport_permission ioport_permission; 498 struct vki_xen_domctl_hypercall_init hypercall_init; 499 //struct vki_xen_domctl_arch_setup arch_setup; 500 struct vki_xen_domctl_settimeoffset settimeoffset; 501 //struct vki_xen_domctl_disable_migrate disable_migrate; 502 struct vki_xen_domctl_tsc_info tsc_info; 503 //struct vki_xen_domctl_real_mode_area real_mode_area; 504 struct vki_xen_domctl_hvmcontext hvmcontext; 505 struct vki_xen_domctl_hvmcontext_partial hvmcontext_partial; 506 struct vki_xen_domctl_address_size address_size; 507 //struct vki_xen_domctl_sendtrigger sendtrigger; 508 //struct vki_xen_domctl_get_device_group get_device_group; 509 struct vki_xen_domctl_assign_device assign_device; 510 //struct vki_xen_domctl_bind_pt_irq bind_pt_irq; 511 //struct vki_xen_domctl_memory_mapping memory_mapping; 512 //struct vki_xen_domctl_ioport_mapping ioport_mapping; 513 struct vki_xen_domctl_pin_mem_cacheattr pin_mem_cacheattr; 514 struct vki_xen_domctl_ext_vcpucontext_00000008 ext_vcpucontext_00000008; 515 struct vki_xen_domctl_ext_vcpucontext_00000009 ext_vcpucontext_00000009; 516 //struct vki_xen_domctl_set_target set_target; 517 //struct vki_xen_domctl_subscribe subscribe; 518 struct vki_xen_domctl_debug_op debug_op; 519 struct vki_xen_domctl_mem_event_op mem_event_op; 520 //struct vki_xen_domctl_mem_sharing_op mem_sharing_op; 521 #if defined(__i386__) || defined(__x86_64__) 522 struct vki_xen_domctl_cpuid cpuid; 523 struct vki_xen_domctl_vcpuextstate vcpuextstate; 524 struct vki_xen_domctl_vcpu_msrs vcpu_msrs; 525 #endif 526 struct vki_xen_domctl_set_access_required access_required; 527 //struct vki_xen_domctl_audit_p2m audit_p2m; 528 //struct vki_xen_domctl_set_virq_handler set_virq_handler; 529 struct vki_xen_domctl_set_max_evtchn set_max_evtchn; 530 //struct vki_xen_domctl_gdbsx_memio gdbsx_guest_memio; 531 //struct vki_xen_domctl_set_broken_page_p2m set_broken_page_p2m; 532 struct vki_xen_domctl_cacheflush cacheflush; 533 //struct vki_xen_domctl_gdbsx_pauseunp_vcpu gdbsx_pauseunp_vcpu; 534 //struct vki_xen_domctl_gdbsx_domstatus gdbsx_domstatus; 535 vki_uint8_t pad[128]; 536 } u; 537 }; 538 539 #endif // __VKI_XEN_DOMCTL_H 540 541 /*--------------------------------------------------------------------*/ 542 /*--- end ---*/ 543 /*--------------------------------------------------------------------*/ 544