设为首页 收藏本站
查看: 1014|回复: 0

[经验分享] Xen中各个超级调用在源文件中的位置

[复制链接]

尚未签到

发表于 2015-10-11 13:31: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
  





  • 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、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-125473-1-1.html 上篇帖子: xen-create-image详解 下篇帖子: xen安装及配置笔记
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表