Xen中各个超级调用在源文件中的位置

来源:互联网 发布:青山软件教学视频 编辑:程序博客网 时间:2024/06/07 15:21

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)


原创粉丝点击