kvm-vcpu 文件接口

来源:互联网 发布:苹果5s网络显示e 编辑:程序博客网 时间:2024/04/29 19:29

kvm_vm_ioctl_create_vcpu:vcpu = kvm_arch_vcpu_create(kvm, id);r = kvm_arch_vcpu_setup(vcpu);r = kvm_create_vcpu_debugfs(vcpu);r = create_vcpu_fd(vcpu);kvm->vcpus[atomic_read(&kvm->online_vcpus)] = vcpu;kvm_arch_vcpu_postcreate(vcpu);

linux-4.9/arch/x86/kvm/X86.cstruct kvm_vcpu *kvm_arch_vcpu_create(struct kvm *kvm,      unsigned int id){ struct kvm_vcpu *vcpu;

 if (check_tsc_unstable() && atomic_read(&kvm->online_vcpus) != 0)  printk_once(KERN_WARNING  "kvm: SMP vm created on host with unstable TSC; "  "guest TSC will not be reliable\n");

 vcpu = kvm_x86_ops->vcpu_create(kvm, id);

 return vcpu;}

int kvm_arch_vcpu_setup(struct kvm_vcpu *vcpu){ int r;

 kvm_vcpu_mtrr_init(vcpu); r = vcpu_load(vcpu); if (r)  return r; kvm_vcpu_reset(vcpu, false); kvm_mmu_setup(vcpu); vcpu_put(vcpu); return r;}

Kvm_main.c linux-4.9/virt/kvmstatic struct file_operations kvm_vcpu_fops = { .release        = kvm_vcpu_release, .unlocked_ioctl = kvm_vcpu_ioctl,#ifdef CONFIG_KVM_COMPAT .compat_ioctl   = kvm_vcpu_compat_ioctl,#endif .mmap           = kvm_vcpu_mmap, .llseek  = noop_llseek,};

static int create_vcpu_fd(struct kvm_vcpu *vcpu){ return anon_inode_getfd("kvm-vcpu", &kvm_vcpu_fops, vcpu, O_RDWR | O_CLOEXEC);}

0 0
原创粉丝点击