IO指令模拟流程(6)

来源:互联网 发布:网络教育报名网站 编辑:程序博客网 时间:2024/06/05 04:33

hvm_send_assist_reqp->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_ioreqqemu中绑定事件通道的一个回调函数,来处理io请求。cpu_get_ioreq用来获取io请求。

cpu_handle_ioreqcpu_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;

原创粉丝点击