kvm外设处理流程

使用qemu2.7版本源码,内核使用3.10

1,(qemu中)创建VCPU,每个VCPU对qemu来说就是一个线程。代码如下

Main-> machine_class->init(current_machine)->pc_init1(./hw/i386/pc_piix.c)->

pc_cpus_init->pc_new_cpu->x86_cpu_realizefn->qemu_init_vcpu(cs)->

qemu_init_vcpu(CPUState *cpu)->qemu_kvm_start_vcpu->qemu_thread_create->

qemu_kvm_cpu_thread_fn->kvm_cpu_exec-> kvm_vcpu_ioctl(cpu, KVM_RUN, 0)。

通过kvm_vcpu_ioctl(cpu, KVM_RUN, 0),是系统调用,就进入内核开始执行了。

2,(linux内核中)

kvm_vcpu_ioctl

case KVM_RUN:

r = kvm_arch_vcpu_ioctl_run(vcpu, vcpu->run);

vcpu_run(vcpu)

  vcpu_enter_guest

    kvm_x86_ops->run

      vmx_vcpu_run

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值