kvm-vcpu 文件接口

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.c struct 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/kvm static 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); }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值