HyperCall
hypercall提供xen的上层程序一些类似系统调用的接口,供其对xen进行通信,达到控制硬件的目的,这个过程在linux里被称为系统调用,做个类似的比较
linux xen 系统调用 hypercall 用户空间 dom空间 系统空间 xen空间
所以我将整个hypercall的过程分为2个部分
xen空间
-
_hypercall5
- /*
- * HYPERCALLS
- */
- #define __HYPERVISOR_set_trap_table 0
- #define __HYPERVISOR_mmu_update 1
- #define __HYPERVISOR_set_gdt 2
- #define __HYPERVISOR_stack_switch 3
- #define __HYPERVISOR_set_callbacks 4
- #define __HYPERVISOR_fpu_taskswitch 5
- #define __HYPERVISOR_sched_op_compat 6 /* compat since 0x00030101 */
- #define __HYPERVISOR_platform_op 7
- #define __HYPERVISOR_set_debugreg 8
- #define __HYPERVISOR_get_debugreg 9
- #define __HYPERVISOR_update_descriptor 10
- #define __HYPERVISOR_memory_op 12
- #define __HYPERVISOR_multicall 13
- #define __HYPERVISOR_update_va_mapping 14
- #define __HYPERVISOR_set_timer_op 15
- #define __HYPERVISOR_event_channel_op_compat 16 /* compat since 0x00030202 */
- #define __HYPERVISOR_xen_version 17
- #define __HYPERVISOR_console_io 18
- #define __HYPERVISOR_physdev_op_compat 19 /* compat since 0x00030202 */
- #define __HYPERVISOR_grant_table_op 20
- #define __HYPERVISOR_vm_assist 21
- #define __HYPERVISOR_update_va_mapping_otherdomain 22
- #define __HYPERVISOR_iret 23 /* x86 only */
- #define __HYPERVISOR_vcpu_op 24
- #define __HYPERVISOR_set_segment_base 25 /* x86/64 only */
- #define __HYPERVISOR_mmuext_op 26
- #define __HYPERVISOR_xsm_op 27
- #define __HYPERVISOR_nmi_op 28
- #define __HYPERVISOR_sched_op 29
- #define __HYPERVISOR_callback_op 30
- #define __HYPERVISOR_xenoprof_op 31
- #define __HYPERVISOR_event_channel_op 32
- #define __HYPERVISOR_physdev_op 33
- #define __HYPERVISOR_hvm_op 34
- #define __HYPERVISOR_sysctl 35
- #define __HYPERVISOR_domctl 36
- #define __HYPERVISOR_kexec_op 37
- hypercall_page:
- .org 0x3000
|
|
