1 #ifndef KVM__KVM_CPU_H 2 #define KVM__KVM_CPU_H 3 4 #include <linux/kvm.h> /* for struct kvm_regs */ 5 6 #include <pthread.h> 7 8 struct kvm; 9 10 struct kvm_cpu { 11 pthread_t thread; /* VCPU thread */ 12 13 unsigned long cpu_id; 14 15 struct kvm *kvm; /* parent KVM */ 16 int vcpu_fd; /* For VCPU ioctls() */ 17 struct kvm_run *kvm_run; 18 19 struct kvm_regs regs; 20 struct kvm_sregs sregs; 21 struct kvm_fpu fpu; 22 23 struct kvm_msrs *msrs; /* dynamically allocated */ 24 25 u8 is_running; 26 u8 paused; 27 28 struct kvm_coalesced_mmio_ring *ring; 29 }; 30 31 struct kvm_cpu *kvm_cpu__init(struct kvm *kvm, unsigned long cpu_id); 32 void kvm_cpu__delete(struct kvm_cpu *vcpu); 33 void kvm_cpu__reset_vcpu(struct kvm_cpu *vcpu); 34 void kvm_cpu__setup_cpuid(struct kvm_cpu *vcpu); 35 void kvm_cpu__enable_singlestep(struct kvm_cpu *vcpu); 36 void kvm_cpu__run(struct kvm_cpu *vcpu); 37 void kvm_cpu__reboot(void); 38 int kvm_cpu__start(struct kvm_cpu *cpu); 39 40 int kvm_cpu__get_debug_fd(void); 41 void kvm_cpu__set_debug_fd(int fd); 42 void kvm_cpu__show_code(struct kvm_cpu *vcpu); 43 void kvm_cpu__show_registers(struct kvm_cpu *vcpu); 44 void kvm_cpu__show_page_tables(struct kvm_cpu *vcpu); 45 46 #endif /* KVM__KVM_CPU_H */ 47