本来只是实验室project中的一个部分,但是我觉得自己从中学到了很多东西~
我想hypercall应该不需要再介绍什么了吧,其实它真的和system call挺像的,我在网上搜了下,关于hyper call的实现我能收到的比较详细的是用iocol来调用privcmd中实现的hypercall的方法,那个do_print_string 应该也算是我写的第一个hypercall了吧~这里是这种方式的hypercall的链接,我想网上对于这种方法已经讲的很详细了,这里也就不多说,我想说的是关于这种方式的底层实现方法。
从最容易理解的方面来说,该方法是一种从user态通过调用系统调用iocol来实现hypercall的方法,如果你查看内核源码中driver/xen/privcmd/privcmd.c,你会发现在里面有一段汇编码最终调用了hypercall: