Xen中各个超级调用在源文件中的位置
xen中的超级调用在文件xen.h(xen/include/public/xen.h)定义,按照超级调用号从低到高来排列/*
* 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
#define __HYPERVISOR_tmem_op 38
具体实现位置:
#define __HYPERVISOR_set_trap_table 0
[*]xen\arch\x86\traps.c
[*]long do_set_trap_table(XEN_GUEST_HANDLE(trap_info_t) traps)
#define __HYPERVISOR_mmu_update 1
[*]xen\arch\x86\mm.c
[*]
[*]int do_mmu_update(
[*]XEN_GUEST_HANDLE(mmu_update_t) ureqs,
[*]unsigned int count,
[*]XEN_GUEST_HANDLE(uint) pdone,
[*]unsigned int foreigndom)
#define __HYPERVISOR_set_gdt 2
[*]xen\arch\x86\mm.c
[*]long do_set_gdt(XEN_GUEST_HANDLE(ulong) frame_list, unsignedint entries)
#define __HYPERVISOR_stack_switch 3
[*]xen\arch\x86\x86_64(x86_32)\mm.c
[*]long do_stack_switch(unsigned long ss, unsigned long esp)
#define __HYPERVISOR_set_callbacks 4
[*]xen\arch\x86\x86_64(x86_32)\traps.c
[*]long do_set_callbacks(unsigned long event_address,
[*]unsigned long failsafe_address,
[*]unsigned long syscall_address)
#define __HYPERVISOR_fpu_taskswitch 5
[*]xen\arch\arch\x86\traps.c
[*]long do_fpu_taskswitch(intset)
#define __HYPERVISOR_sched_op_compat 6 /* compat since 0x00030101 */
[*]xen\common\schedule.c
[*]long do_sched_op_compat(int cmd, unsigned long arg)
#define __HYPERVISOR_platform_op 7
[*]xen/arch/x86/platform_hypercall.c
[*]ret_t do_platform_op(XEN_GUEST_HANDLE(xen_platform_op_t) u_xenpf_op)
#define __HYPERVISOR_set_debugreg 8
[*]xen/arch/x86/traps.c
[*]long do_set_debugreg(int reg, unsigned long value)
#define __HYPERVISOR_get_debugreg 9
[*]xen\arch\x86\traps.c
[*]unsigned long do_get_debugreg(int reg)
#define __HYPERVISOR_update_descriptor 10
[*]xen\arch\x86\mm.c
[*]long do_update_descriptor(u64 pa, u64 desc)
#define __HYPERVISOR_memory_op 12
[*]xen\common\memory.c
[*]long do_memory_op(unsigned long cmd, XEN_GUEST_HANDLE(void) arg)
#define __HYPERVISOR_multicall 13
[*]xen\common\multicall.c
[*]ret_t
[*]do_multicall(
[*]XEN_GUEST_HANDLE(multicall_entry_t) call_list, unsignedint nr_calls)
#define __HYPERVISOR_update_va_mapping 14
[*]xen\arch\x86\mm.c
[*]int do_update_va_mapping(unsigned long va, u64 val64,
[*]unsigned long flags)
#define __HYPERVISOR_set_timer_op 15
[*]xen\common\schedule.c
[*]long do_set_timer_op(s_time_t timeout)
#define __HYPERVISOR_event_channel_op_compat 16 /* compat since 0x00030202 */
[*]xen\arch\x86\compat.c
[*]long do_event_channel_op_compat(XEN_GUEST_HANDLE(evtchn_op_t) uop)
#define __HYPERVISOR_xen_version 17
[*]tools\libxc\xc_private.h
[*]static inline int do_xen_version(int xc_handle,int cmd,
void*dest)
#define __HYPERVISOR_console_io 18
[*]xen\drivers\char\console.c
[*]long do_console_io(int cmd,int count, XEN_GUEST_HANDLE(char)
buffer)
#define __HYPERVISOR_physdev_op_compat 19 /* compat since
0x00030202 */
[*]xen\arch\x86\compat.c
[*]ret_t do_physdev_op_compat(XEN_GUEST_HANDLE(physdev_op_t) uop)
#define __HYPERVISOR_grant_table_op 20
[*]xen\common\grant_table.c
[*]long
[*]do_grant_table_op(
[*]unsigned int cmd, XEN_GUEST_HANDLE(void) uop, unsignedint
count)
#define __HYPERVISOR_vm_assist 21
#define __HYPERVISOR_update_va_mapping_otherdomain 22
[*]xen\arch\x86\mm.c
[*]int do_update_va_mapping_otherdomain(unsigned long va, u64 val64,
[*]unsigned long flags, domid_t domid)
#define __HYPERVISOR_iret 23 /* x86 only */
[*]xen\arch\x86\x86_64(x86_32)\traps.c
[*]unsigned long do_iret(void)
#define __HYPERVISOR_vcpu_op 24
[*]xen\common\domain.c
[*]long do_vcpu_op(int cmd,int vcpuid, XEN_GUEST_HANDLE(void)
arg)
#define __HYPERVISOR_set_segment_base 25 /* x86/64 only */
[*]xen\arch\x86\x86_64\mm.c
[*]long do_set_segment_base(unsigned
int which, unsigned long base)
#define __HYPERVISOR_mmuext_op 26
[*]xen\arch\x86\mm.c
[*]int do_mmuext_op(
[*]XEN_GUEST_HANDLE(mmuext_op_t) uops,
[*]unsigned int count,
[*]XEN_GUEST_HANDLE(uint) pdone,
[*]unsigned int foreigndom)
#define __HYPERVISOR_acm_op 27
[*]xen\common\acm_ops.c
[*]long do_acm_op(int cmd, XEN_GUEST_HANDLE(void) arg)
[*]//该函数区分是否定义ACM_SECURITY宏分为两个函数,实现不同,声明相同
#define __HYPERVISOR_nmi_op 28
#define __HYPERVISOR_sched_op 29
[*]xen\common\schedule.c
[*]ret_t do_sched_op(int cmd, XEN_GUEST_HANDLE(void) arg)
#define __HYPERVISOR_callback_op 30
[*]xen\arch\x86\x86_64(x86_32)\traps.c
[*]long do_callback_op(int cmd, XEN_GUEST_HANDLE(void) arg)
#define __HYPERVISOR_xenoprof_op 31
[*]xen\common\xenoprof.c
[*]int do_xenoprof_op(int op, XEN_GUEST_HANDLE(void)
arg)
#define __HYPERVISOR_event_channel_op 32
[*]xen\common\event_channel.c
[*]long do_event_channel_op(int cmd, XEN_GUEST_HANDLE(void) arg)
#define __HYPERVISOR_physdev_op 33
[*]xen\arch\x86\physdev.c
[*]ret_t do_physdev_op(int cmd, XEN_GUEST_HANDLE(void) arg)
#define __HYPERVISOR_hvm_op 34
[*]xen\arch\x86\hvm\hvm.c
[*]long do_hvm_op(unsigned long op, XEN_GUEST_HANDLE(void) arg)
#define __HYPERVISOR_sysctl 35
[*]tools\libxc\xc_private.h
[*]static inline int do_sysctl(int xc_handle, struct xen_sysctl*sysctl)
[*]xen\common\sysctl.c
[*]long do_sysctl(XEN_GUEST_HANDLE(xen_sysctl_t) u_sysctl)
#define __HYPERVISOR_domctl 36
[*]xen\common\domctl.c
[*]long do_domctl(XEN_GUEST_HANDLE(xen_domctl_t) u_domctl)
[*]
[*]tools\libxc\xc_private.h
[*]static inline int do_domctl(int xc_handle, struct xen_domctl*domctl)
#define __HYPERVISOR_kexec_op 37
[*]xen\common\kexec.c
[*]ret_t do_kexec_op(unsigned long op, XEN_GUEST_HANDLE(void) uarg)
页:
[1]