IO指令模拟流程(10)

来源:互联网 发布:苏州网络消费者投诉 编辑:程序博客网 时间:2024/06/05 03:32

1       string读指令

此类指令在进入hvmemul_do_io后,因为其p_date不为NULL,所以会将io_state置为HVMIO_awaiting_completion

 

    curr->arch.hvm_vcpu.io_state =

        (p_data == NULL) ? HVMIO_dispatched :HVMIO_awaiting_completion;

 

hvm_emulate_one返回后,会将io_state置为HVMIO_handle_mmio_awaiting_completion

int handle_mmio(void)

{

    struct hvm_emulate_ctxt ctxt;

    struct vcpu *curr = current;

    int rc;

 

    hvm_emulate_prepare(&ctxt, guest_cpu_user_regs());

 

    rc = hvm_emulate_one(&ctxt);

 

    if ( curr->arch.hvm_vcpu.io_state == HVMIO_awaiting_completion )

        curr->arch.hvm_vcpu.io_state =HVMIO_handle_mmio_awaiting_completion;

原创粉丝点击