Chinaunix

标题: [求助]请教一个Xen Hypercall调用时的问题 [打印本页]

作者: anitawang1989    时间: 2011-04-06 17:01
标题: [求助]请教一个Xen Hypercall调用时的问题
在Xen系统中,Guest OS可以通过软中断指令INT82从ring1进入ring0.
但是我在看xen源码的时候,主要是/xen-4.0.1/xen/arch/x86/x86_32/entry.S 文件的过程中,没有发现 Xen 有保存 Guest OS 的 ID,和调用点的地址。
那Xen 是如何区分各个Guest OS之间的调用的,以及如何将运行结果返回给Guest OS的呢?
另外,我的汇编基础很弱,也有可能某些指令其实保存了但是我没有看出来……欢迎各位高手指点~~~
作者: Godbach    时间: 2011-04-06 19:05
回复 1# anitawang1989

    坛子里研究 Xen 的大牛最近都没怎么来了。:wink:

   这里面的汇编是 Intel 的还是 AT&T 的
作者: anitawang1989    时间: 2011-04-06 22:13
回复 2# Godbach


    是AT&T的~~~
作者: Godbach    时间: 2011-04-06 22:21
回复 3# anitawang1989

Linux 下的 汇编语言程序设计:
http://product.dangdang.com/product.aspx?product_id=9054732
作者: anitawang1989    时间: 2011-04-06 22:45
回复 4# Godbach


    有点赶时间……没有时间看整本书了……
作者: Godbach    时间: 2011-04-06 22:50
Xen 这块研究起来还是有技术难度的。佩服 LZ 啊
作者: accessory    时间: 2011-04-06 23:11
我理解是这样的,INT 82 这种情况下,不用通过寄存器去专门传GUEST ID, XEN 可以找到当前的GUEST ID,如果需要的话。另外,即使有很多GUEST, 某一时刻在跑的GUEST 也只有一个。

BTW: 除了INT 82以外,还有一种方式是HYPERCALL PAGE, 通过CALL 一个地址来实现HYER CALL
作者: anitawang1989    时间: 2011-04-06 23:22
回复 7# accessory


    Hypercall page不是在domain创建的时候初始化的么? 里面的内容好像相当于  mov hypercall_number %eax   int 82,是执行中断的地方。
    那Xen是如何得到地址的呢?
作者: anitawang1989    时间: 2011-04-06 23:23
回复 6# Godbach


    我很菜,跟您比还差得很多~ 努力~~~!
作者: accessory    时间: 2011-04-07 01:38
回复  accessory


    Hypercall page不是在domain创建的时候初始化的么? 里面的内容好像相当于  mov ...
anitawang1989 发表于 2011-04-06 23:22


应该是在初始化的时候创建的。

“Xen是如何得到地址的呢?” XEN得到啥地址?不明白你的问题
作者: Godbach    时间: 2011-04-07 09:45
回复 9# anitawang1989
术业有专攻啊。回头需要研究 Xen 方面知识的时候,还需要请教 LZ 啊
作者: anitawang1989    时间: 2011-04-07 12:36
回复 10# accessory


    就是,我感觉,hypercall调用不是类似于syscall调用吗? 比如 0x00000000 点产生了hypercall调用,那么为了将执行后的结果返回,Xen应该记录这个 0x00000000,但是在看源码的时候,我没有找到完成这个命令的指令,所以想来问一下~~~
作者: accessory    时间: 2011-04-07 22:40
一定要记录这个地址么?直接返回不行么?
作者: anitawang1989    时间: 2011-04-08 13:52
回复 13# accessory


    因为我需要对这个地址进行一定的处理,所以需要呀~~~
作者: accessory    时间: 2011-04-09 00:10
看 CALL STACK
作者: omycle    时间: 2011-04-11 11:05
我研究的是arm下的xen,不清楚x86的xen.

正如楼上兄弟所言,DOM信息保存在stack中。你可以在hypervisor中相关的处理函数,能够看到,在汇编中,确实不涉及的(我看的是ARM的xen,x86的可能有出入)。
作者: accessory    时间: 2011-04-12 06:07
现在ARM下的xen成熟了么?
作者: anitawang1989    时间: 2011-04-12 22:02
回复 16# omycle


    比如什么函数呀? 这方面的资料好少,可以加qq多交流一下么?
作者: 8913845    时间: 2011-04-13 09:50
这和 linux 的int 80类似吧, int 80也不用保存进程的id吧,
感觉xen 没必要保存domin的Id阿, 感觉。。
作者: anitawang1989    时间: 2011-04-13 11:33
回复 19# 8913845


    但是当每个domain占用CPU的时候,难道Xen都不区分一下的么……
作者: 8913845    时间: 2011-04-13 14:53
回复 20# anitawang1989


    我也是知道一点 概念而已,代码没怎么读过。
xen调度的是vcpu,vcpu结构和作用类似 linux里的线程吧。
要区分domina通过vcpu之类的信息应该可以,不过和你说的那个 超级调用的返回 应该关系不大,我觉得。
作者: omycle    时间: 2011-04-13 16:01
本帖最后由 omycle 于 2011-04-13 16:04 编辑

回复 18# anitawang1989

看一下xen里面的hypercall table,就清楚是哪个函数了。

Email:    omycle#gmail.com
作者: omycle    时间: 2011-04-13 16:02
回复 17# accessory


    不成熟




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2