xref: /qemu/include/system/cpus.h (revision 0f66536a012b2d1b02818bbb2d24485205fc2f64)
1296af7c9SBlue Swirl #ifndef QEMU_CPUS_H
2296af7c9SBlue Swirl #define QEMU_CPUS_H
3296af7c9SBlue Swirl 
4b86f59c7SClaudio Fontana /* register accel-specific operations */
5b86f59c7SClaudio Fontana void cpus_register_accel(const AccelOpsClass *i);
6430065daSClaudio Fontana 
7*ae7467b1SAlex Bennée /* return registers ops */
8*ae7467b1SAlex Bennée const AccelOpsClass *cpus_get_accel(void);
9*ae7467b1SAlex Bennée 
10b86f59c7SClaudio Fontana /* accel/dummy-cpus.c */
11430065daSClaudio Fontana 
12b86f59c7SClaudio Fontana /* Create a dummy vcpu for AccelOpsClass->create_vcpu_thread */
139ce84a0dSJason Andryuk void dummy_start_vcpu_thread(CPUState *);
149ce84a0dSJason Andryuk 
15430065daSClaudio Fontana /* interface available for cpus accelerator threads */
16430065daSClaudio Fontana 
17430065daSClaudio Fontana /* For temporary buffers for forming a name */
18430065daSClaudio Fontana #define VCPU_THREAD_NAME_SIZE 16
19430065daSClaudio Fontana 
20430065daSClaudio Fontana void cpus_kick_thread(CPUState *cpu);
21430065daSClaudio Fontana bool cpu_work_list_empty(CPUState *cpu);
22430065daSClaudio Fontana bool cpu_thread_is_idle(CPUState *cpu);
23740b1759SClaudio Fontana bool all_cpu_threads_idle(void);
24430065daSClaudio Fontana bool cpu_can_run(CPUState *cpu);
25430065daSClaudio Fontana void qemu_wait_io_event_common(CPUState *cpu);
26430065daSClaudio Fontana void qemu_wait_io_event(CPUState *cpu);
27430065daSClaudio Fontana void cpu_thread_signal_created(CPUState *cpu);
28430065daSClaudio Fontana void cpu_thread_signal_destroyed(CPUState *cpu);
29430065daSClaudio Fontana void cpu_handle_guest_debug(CPUState *cpu);
30430065daSClaudio Fontana 
31430065daSClaudio Fontana /* end interface for cpus accelerator threads */
32430065daSClaudio Fontana 
3388401cbcSPaolo Bonzini bool qemu_in_vcpu_thread(void);
34d3b12f5dSPaolo Bonzini void qemu_init_cpu_loop(void);
35296af7c9SBlue Swirl void resume_all_vcpus(void);
36296af7c9SBlue Swirl void pause_all_vcpus(void);
37b4a3d965SJan Kiszka void cpu_stop_current(void);
384b4629d9SPaolo Bonzini 
394b4629d9SPaolo Bonzini /* Unblock cpu */
404b4629d9SPaolo Bonzini void qemu_cpu_kick_self(void);
41296af7c9SBlue Swirl 
4292a5199bSTom Lendacky bool cpus_are_resettable(void);
4392a5199bSTom Lendacky 
4417a4663eSBlue Swirl void cpu_synchronize_all_states(void);
4517a4663eSBlue Swirl void cpu_synchronize_all_post_reset(void);
4617a4663eSBlue Swirl void cpu_synchronize_all_post_init(void);
4775e972daSDavid Gibson void cpu_synchronize_all_pre_loadvm(void);
4817a4663eSBlue Swirl 
49296af7c9SBlue Swirl #endif
50