关于hypercall的实现

本文介绍了如何在Xen虚拟化环境中实现Hypercall,通过分析内核源码和汇编代码,阐述了从user态到kernel态再到hypercall的调用过程。作者通过示例代码展示了使用hypercall1宏和直接插入汇编代码调用Hypercall的方法。

      本来只是实验室project中的一个部分,但是我觉得自己从中学到了很多东西~

      我想hypercall应该不需要再介绍什么了吧,其实它真的和system call挺像的,我在网上搜了下,关于hyper call的实现我能收到的比较详细的是用iocol来调用privcmd中实现的hypercall的方法,那个do_print_string 应该也算是我写的第一个hypercall了吧~这里是这种方式的hypercall的链接,我想网上对于这种方法已经讲的很详细了,这里也就不多说,我想说的是关于这种方式的底层实现方法。

      从最容易理解的方面来说,该方法是一种从user态通过调用系统调用iocol来实现hypercall的方法,如果你查看内核源码中driver/xen/privcmd/privcmd.c,你会发现在里面有一段汇编码最终调用了hypercall:

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值