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

[经验分享] Xen中的工具libxc

[复制链接]

尚未签到

发表于 2015-10-11 15:01:54 | 显示全部楼层 |阅读模式
libxc   是一个C语言库,它提供了一些简单易用的API,使用户程序可以方便的和Hypervisor进行通信。它的工作原理很简单,主要封装了dom0中的/proc/xen/privcmd/dev/xen/evtchn以及/dev/xen/gntdev提供的IOCTL接口。也就是说,我们本来可以直接通过上面这些内核级设备驱动进行相关的操作控制,但有了libxc之后,只需要调用其相应接口函数,由它负责数据结构的解析/封装,然后再与底层hypervisor通信。这就是为什么说xm发出命令之后,到达xend,而xend需要调用libxc再处理后才与底层hypervisor通信:libxc是一个接口库看到有这样的解析,借鉴一下:
        /proc/xen/privcmd
1.         xc_interface_open()
打开/proc/xen/privcmd,获得文件描述符。
2.         xc_sysctl()
填充xen_sysctl结构体,发送ioctl请求。
3.         xc_interface_close()
关闭1中打开的文件描述
/dev/xen/evtchn
1.         xc_evtchn_open
2.         xc_evtchn_notify等函数
evtchn的操作比较简单,不需要填充结构体,一般指明远程Dom idport即可
3.         xc_evtchn_close
         /dev/xen/gntdev
1.         xc_gnttab_open
2.         xc_gnttab_map_grant_ref
3.         xc_gnttab_close

用来控制Xen内核的库,位于xen-../tools/libxc。包括两个部分:
一个是libxenctrl,封装了各种Hypercall提供的功能,其函数列表在xenctrl.h中列出;另一个是libxenguest,提供在内核中创建domain的方法,其函数列表在xenguest.h中列出。
若在内核中通过修改hypercall的方式为Xen添加功能,需要在libxenctrl中进行封装。libxc中的函数的第一个参数均为int xc_handler,这其实是一个句柄,这个句柄对应着dom0中与guest kernel进行交互的proc文件,即/proc/xen/privcmd。libxc中进行Hypercall的调用可以利用do_domctl这个函数,这个函数的定义在xc_private.h中。do_domctl的第二个参数struct xen_domctl封装了一个hypercall的number and arguments。
如要在其中加入自己的新接口,需要在libxc目录下执行make install命令,之后,可以自己编写一个小型C程序,并引用<xenctrl.h>,在编译时加入参数-lxenctrl就可以了。

运维网声明 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-125535-1-1.html 上篇帖子: start xen error 下篇帖子: CentOS(with XEN)&Ubuntu双系统引导的问题
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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