15c3d55faSPekka Enberg #ifndef KVM__KVM_CPU_H 25c3d55faSPekka Enberg #define KVM__KVM_CPU_H 35c3d55faSPekka Enberg 45c3d55faSPekka Enberg #include <linux/kvm.h> /* for struct kvm_regs */ 55c3d55faSPekka Enberg 65ee154d1SPekka Enberg #include <pthread.h> 75c3d55faSPekka Enberg 85c3d55faSPekka Enberg struct kvm; 95c3d55faSPekka Enberg 105c3d55faSPekka Enberg struct kvm_cpu { 115ee154d1SPekka Enberg pthread_t thread; /* VCPU thread */ 125ee154d1SPekka Enberg 135ee154d1SPekka Enberg unsigned long cpu_id; 145ee154d1SPekka Enberg 155c3d55faSPekka Enberg struct kvm *kvm; /* parent KVM */ 165c3d55faSPekka Enberg int vcpu_fd; /* For VCPU ioctls() */ 175c3d55faSPekka Enberg struct kvm_run *kvm_run; 185c3d55faSPekka Enberg 195c3d55faSPekka Enberg struct kvm_regs regs; 205c3d55faSPekka Enberg struct kvm_sregs sregs; 215c3d55faSPekka Enberg struct kvm_fpu fpu; 225c3d55faSPekka Enberg 235c3d55faSPekka Enberg struct kvm_msrs *msrs; /* dynamically allocated */ 24656be1b8SSasha Levin 25656be1b8SSasha Levin u8 is_running; 264298ddadSSasha Levin u8 paused; 2773f7e5b3SSasha Levin 2873f7e5b3SSasha Levin struct kvm_coalesced_mmio_ring *ring; 295c3d55faSPekka Enberg }; 305c3d55faSPekka Enberg 315ee154d1SPekka Enberg struct kvm_cpu *kvm_cpu__init(struct kvm *kvm, unsigned long cpu_id); 3243835ac9SSasha Levin void kvm_cpu__delete(struct kvm_cpu *vcpu); 3343835ac9SSasha Levin void kvm_cpu__reset_vcpu(struct kvm_cpu *vcpu); 3443835ac9SSasha Levin void kvm_cpu__setup_cpuid(struct kvm_cpu *vcpu); 3543835ac9SSasha Levin void kvm_cpu__enable_singlestep(struct kvm_cpu *vcpu); 3643835ac9SSasha Levin void kvm_cpu__run(struct kvm_cpu *vcpu); 37714e5b7fSSasha Levin void kvm_cpu__reboot(void); 3865bab644SPekka Enberg int kvm_cpu__start(struct kvm_cpu *cpu); 395c3d55faSPekka Enberg 40*b7d2f013SSasha Levin int kvm_cpu__get_debug_fd(void); 41*b7d2f013SSasha Levin void kvm_cpu__set_debug_fd(int fd); 4243835ac9SSasha Levin void kvm_cpu__show_code(struct kvm_cpu *vcpu); 4343835ac9SSasha Levin void kvm_cpu__show_registers(struct kvm_cpu *vcpu); 4443835ac9SSasha Levin void kvm_cpu__show_page_tables(struct kvm_cpu *vcpu); 455c3d55faSPekka Enberg 465c3d55faSPekka Enberg #endif /* KVM__KVM_CPU_H */ 47