您的位置:首页 > 其它

IO指令模拟流程(6)

2013-05-21 19:41 141 查看
hvm_send_assist_req将p->state置为STATE_IOREQ_READY,发送IO请求准备好啦,然后通知事件通道。

bool_t hvm_send_assist_req(struct vcpu *v)

{

p->state =
STATE_IOREQ_READY;

notify_via_xen_event_channel(v->domain, v->arch.hvm_vcpu.xen_port);

cpu_handle_ioreq是qemu中绑定事件通道的一个回调函数,来处理io请求。cpu_get_ioreq用来获取io请求。

cpu_handle_ioreq→cpu_get_ioreq→__cpu_get_ioreq

static void
cpu_handle_ioreq
(void *opaque)

{

extern int shutdown_requested;

CPUState *env = opaque;

ioreq_t *req =
cpu_get_ioreq();

在__cpu_get_ioreq中将req->state置为STATE_IOREQ_INPROCESS,此处req->state等同于p->state。

static ioreq_t *__cpu_get_ioreq(int vcpu)

{

req->state =
STATE_IOREQ_INPROCESS;

return req;

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: