xref: /kvmtool/include/kvm/kvm-cpu.h (revision 5c3d55fa6f0e4a7591f7edc4dea1ad695d6e1935)
1*5c3d55faSPekka Enberg #ifndef KVM__KVM_CPU_H
2*5c3d55faSPekka Enberg #define KVM__KVM_CPU_H
3*5c3d55faSPekka Enberg 
4*5c3d55faSPekka Enberg #include <linux/kvm.h>	/* for struct kvm_regs */
5*5c3d55faSPekka Enberg 
6*5c3d55faSPekka Enberg #include <stdint.h>
7*5c3d55faSPekka Enberg 
8*5c3d55faSPekka Enberg struct kvm;
9*5c3d55faSPekka Enberg 
10*5c3d55faSPekka Enberg struct kvm_cpu {
11*5c3d55faSPekka Enberg 	struct kvm		*kvm;		/* parent KVM */
12*5c3d55faSPekka Enberg 	int			vcpu_fd;	/* For VCPU ioctls() */
13*5c3d55faSPekka Enberg 	struct kvm_run		*kvm_run;
14*5c3d55faSPekka Enberg 
15*5c3d55faSPekka Enberg 	struct kvm_regs		regs;
16*5c3d55faSPekka Enberg 	struct kvm_sregs	sregs;
17*5c3d55faSPekka Enberg 	struct kvm_fpu		fpu;
18*5c3d55faSPekka Enberg 
19*5c3d55faSPekka Enberg 	struct kvm_msrs		*msrs;		/* dynamically allocated */
20*5c3d55faSPekka Enberg };
21*5c3d55faSPekka Enberg 
22*5c3d55faSPekka Enberg struct kvm_cpu *kvm_cpu__init(struct kvm *kvm);
23*5c3d55faSPekka Enberg void kvm_cpu__delete(struct kvm_cpu *self);
24*5c3d55faSPekka Enberg void kvm_cpu__reset_vcpu(struct kvm_cpu *self);
25*5c3d55faSPekka Enberg void kvm_cpu__setup_cpuid(struct kvm_cpu *self);
26*5c3d55faSPekka Enberg void kvm_cpu__enable_singlestep(struct kvm_cpu *self);
27*5c3d55faSPekka Enberg void kvm_cpu__run(struct kvm_cpu *self);
28*5c3d55faSPekka Enberg 
29*5c3d55faSPekka Enberg void kvm_cpu__show_code(struct kvm_cpu *self);
30*5c3d55faSPekka Enberg void kvm_cpu__show_registers(struct kvm_cpu *self);
31*5c3d55faSPekka Enberg void kvm_cpu__show_page_tables(struct kvm_cpu *self);
32*5c3d55faSPekka Enberg 
33*5c3d55faSPekka Enberg #endif /* KVM__KVM_CPU_H */
34