xref: /kvmtool/include/kvm/kvm-cpu.h (revision b7d2f0130b0f8c99a273d2e28186c1d0f15268ff)
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 
8 struct kvm;
9 
10 struct kvm_cpu {
11 	pthread_t		thread;		/* VCPU thread */
12 
13 	unsigned long		cpu_id;
14 
15 	struct kvm		*kvm;		/* parent KVM */
16 	int			vcpu_fd;	/* For VCPU ioctls() */
17 	struct kvm_run		*kvm_run;
18 
19 	struct kvm_regs		regs;
20 	struct kvm_sregs	sregs;
21 	struct kvm_fpu		fpu;
22 
23 	struct kvm_msrs		*msrs;		/* dynamically allocated */
24 
25 	u8			is_running;
26 	u8			paused;
27 
28 	struct kvm_coalesced_mmio_ring	*ring;
29 };
30 
31 struct kvm_cpu *kvm_cpu__init(struct kvm *kvm, unsigned long cpu_id);
32 void kvm_cpu__delete(struct kvm_cpu *vcpu);
33 void kvm_cpu__reset_vcpu(struct kvm_cpu *vcpu);
34 void kvm_cpu__setup_cpuid(struct kvm_cpu *vcpu);
35 void kvm_cpu__enable_singlestep(struct kvm_cpu *vcpu);
36 void kvm_cpu__run(struct kvm_cpu *vcpu);
37 void kvm_cpu__reboot(void);
38 int kvm_cpu__start(struct kvm_cpu *cpu);
39 
40 int kvm_cpu__get_debug_fd(void);
41 void kvm_cpu__set_debug_fd(int fd);
42 void kvm_cpu__show_code(struct kvm_cpu *vcpu);
43 void kvm_cpu__show_registers(struct kvm_cpu *vcpu);
44 void kvm_cpu__show_page_tables(struct kvm_cpu *vcpu);
45 
46 #endif /* KVM__KVM_CPU_H */
47