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


  1. xen\arch\x86\traps.c
  2. long do_set_trap_table(XEN_GUEST_HANDLE(trap_info_t) traps)

#define __HYPERVISOR_mmu_update 1


  1. xen\arch\x86\mm.c

  2. int do_mmu_update(
  3. XEN_GUEST_HANDLE(mmu_update_t) ureqs,
  4. unsigned int count,
  5. XEN_GUEST_HANDLE(uint) pdone,
  6. unsigned int foreigndom)

#define __HYPERVISOR_set_gdt 2


  1. xen\arch\x86\mm.c
  2. long do_set_gdt(XEN_GUEST_HANDLE(ulong) frame_list, unsignedint entries)

#define __HYPERVISOR_stack_switch 3


  1. xen\arch\x86\x86_64(x86_32)\mm.c
  2. long do_stack_switch(unsigned long ss, unsigned long esp)

#define __HYPERVISOR_set_callbacks 4


  1. xen\arch\x86\x86_64(x86_32)\traps.c
  2. long do_set_callbacks(unsigned long event_address,
  3. unsigned long failsafe_address,
  4. unsigned long syscall_address)

#define __HYPERVISOR_fpu_taskswitch 5

  1. xen\arch\arch\x86\traps.c
  2. long do_fpu_taskswitch(intset)

#define __HYPERVISOR_sched_op_compat 6 /* compat since 0x00030101 */


  1. xen\common\schedule.c
  2. long do_sched_op_compat(int cmd, unsigned long arg)

#define __HYPERVISOR_platform_op 7


  1. xen/arch/x86/platform_hypercall.c
  2. ret_t do_platform_op(XEN_GUEST_HANDLE(xen_platform_op_t) u_xenpf_op)

#define __HYPERVISOR_set_debugreg 8


  1. xen/arch/x86/traps.c
  2. long do_set_debugreg(int reg, unsigned long value)

#define __HYPERVISOR_get_debugreg 9


  1. xen\arch\x86\traps.c
  2. unsigned long do_get_debugreg(int reg)

#define __HYPERVISOR_update_descriptor 10


  1. xen\arch\x86\mm.c
  2. long do_update_descriptor(u64 pa, u64 desc)

#define __HYPERVISOR_memory_op 12


  1. xen\common\memory.c
  2. long do_memory_op(unsigned long cmd, XEN_GUEST_HANDLE(void) arg)

#define __HYPERVISOR_multicall 13


  1. xen\common\multicall.c
  2. ret_t
  3. do_multicall(
  4. XEN_GUEST_HANDLE(multicall_entry_t) call_list, unsignedint nr_calls)

#define __HYPERVISOR_update_va_mapping 14


  1. xen\arch\x86\mm.c
  2. int do_update_va_mapping(unsigned long va, u64 val64,
  3. unsigned long flags)

#define __HYPERVISOR_set_timer_op 15


  1. xen\common\schedule.c
  2. long do_set_timer_op(s_time_t timeout)

#define __HYPERVISOR_event_channel_op_compat 16 /* compat since 0x00030202 */


  1. xen\arch\x86\compat.c
  2. long do_event_channel_op_compat(XEN_GUEST_HANDLE(evtchn_op_t) uop)

#define __HYPERVISOR_xen_version 17


  1. tools\libxc\xc_private.h
  2. static inline int do_xen_version(int xc_handle,int cmd, void*dest)

#define __HYPERVISOR_console_io 18


  1. xen\drivers\char\console.c
  2. long do_console_io(int cmd,int count, XEN_GUEST_HANDLE(char) buffer)

#define __HYPERVISOR_physdev_op_compat 19 /* compat since 0x00030202 */


  1. xen\arch\x86\compat.c
  2. ret_t do_physdev_op_compat(XEN_GUEST_HANDLE(physdev_op_t) uop)

#define __HYPERVISOR_grant_table_op 20


  1. xen\common\grant_table.c
  2. long
  3. do_grant_table_op(
  4. unsigned int cmd, XEN_GUEST_HANDLE(void) uop, unsignedint count)

#define __HYPERVISOR_vm_assist 21

#define __HYPERVISOR_update_va_mapping_otherdomain 22


  1. xen\arch\x86\mm.c
  2. int do_update_va_mapping_otherdomain(unsigned long va, u64 val64,
  3. unsigned long flags, domid_t domid)

#define __HYPERVISOR_iret 23 /* x86 only */


  1. xen\arch\x86\x86_64(x86_32)\traps.c
  2. unsigned long do_iret(void)

#define __HYPERVISOR_vcpu_op 24


  1. xen\common\domain.c
  2. long do_vcpu_op(int cmd,int vcpuid, XEN_GUEST_HANDLE(void) arg)

#define __HYPERVISOR_set_segment_base 25 /* x86/64 only */


  1. xen\arch\x86\x86_64\mm.c
  2. long do_set_segment_base(unsigned int which, unsigned long base)

#define __HYPERVISOR_mmuext_op 26


  1. xen\arch\x86\mm.c
  2. int do_mmuext_op(
  3. XEN_GUEST_HANDLE(mmuext_op_t) uops,
  4. unsigned int count,
  5. XEN_GUEST_HANDLE(uint) pdone,
  6. unsigned int foreigndom)

#define __HYPERVISOR_acm_op 27


  1. xen\common\acm_ops.c
  2. long do_acm_op(int cmd, XEN_GUEST_HANDLE(void) arg)
  3. //该函数区分是否定义ACM_SECURITY宏分为两个函数,实现不同,声明相同

#define __HYPERVISOR_nmi_op 28

#define __HYPERVISOR_sched_op 29


  1. xen\common\schedule.c
  2. ret_t do_sched_op(int cmd, XEN_GUEST_HANDLE(void) arg)

#define __HYPERVISOR_callback_op 30


  1. xen\arch\x86\x86_64(x86_32)\traps.c
  2. long do_callback_op(int cmd, XEN_GUEST_HANDLE(void) arg)

#define __HYPERVISOR_xenoprof_op 31


  1. xen\common\xenoprof.c
  2. int do_xenoprof_op(int op, XEN_GUEST_HANDLE(void) arg)

#define __HYPERVISOR_event_channel_op 32


  1. xen\common\event_channel.c
  2. long do_event_channel_op(int cmd, XEN_GUEST_HANDLE(void) arg)

#define __HYPERVISOR_physdev_op 33


  1. xen\arch\x86\physdev.c
  2. ret_t do_physdev_op(int cmd, XEN_GUEST_HANDLE(void) arg)

#define __HYPERVISOR_hvm_op 34


  1. xen\arch\x86\hvm\hvm.c
  2. long do_hvm_op(unsigned long op, XEN_GUEST_HANDLE(void) arg)

#define __HYPERVISOR_sysctl 35


  1. tools\libxc\xc_private.h
  2. static inline int do_sysctl(int xc_handle, struct xen_sysctl*sysctl)
  3. xen\common\sysctl.c
  4. long do_sysctl(XEN_GUEST_HANDLE(xen_sysctl_t) u_sysctl)

#define __HYPERVISOR_domctl 36


  1. xen\common\domctl.c
  2. long do_domctl(XEN_GUEST_HANDLE(xen_domctl_t) u_domctl)

  3. tools\libxc\xc_private.h
  4. static inline int do_domctl(int xc_handle, struct xen_domctl*domctl)

#define __HYPERVISOR_kexec_op 37

  1. xen\common\kexec.c
  2. ret_t do_kexec_op(unsigned long op, XEN_GUEST_HANDLE(void) uarg)


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值