linuxx 发表于 2015-10-11 13:31:21

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]
查看完整版本: Xen中各个超级调用在源文件中的位置