xref: /kvmtool/include/kvm/kvm-cpu.h (revision b7d2f0130b0f8c99a273d2e28186c1d0f15268ff)
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