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 #include <stdint.h> 8 9 struct kvm; 10 11 struct kvm_cpu { 12 pthread_t thread; /* VCPU thread */ 13 14 unsigned long cpu_id; 15 16 struct kvm *kvm; /* parent KVM */ 17 int vcpu_fd; /* For VCPU ioctls() */ 18 struct kvm_run *kvm_run; 19 20 struct kvm_regs regs; 21 struct kvm_sregs sregs; 22 struct kvm_fpu fpu; 23 24 struct kvm_msrs *msrs; /* dynamically allocated */ 25 }; 26 27 struct kvm_cpu *kvm_cpu__init(struct kvm *kvm, unsigned long cpu_id); 28 void kvm_cpu__delete(struct kvm_cpu *self); 29 void kvm_cpu__reset_vcpu(struct kvm_cpu *self); 30 void kvm_cpu__setup_cpuid(struct kvm_cpu *self); 31 void kvm_cpu__enable_singlestep(struct kvm_cpu *self); 32 void kvm_cpu__run(struct kvm_cpu *self); 33 int kvm_cpu__start(struct kvm_cpu *cpu); 34 35 void kvm_cpu__show_code(struct kvm_cpu *self); 36 void kvm_cpu__show_registers(struct kvm_cpu *self); 37 void kvm_cpu__show_page_tables(struct kvm_cpu *self); 38 39 #endif /* KVM__KVM_CPU_H */ 40