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