xref: /openbmc/qemu/include/sysemu/cpus.h (revision b216b5da)
19c17d615SPaolo Bonzini #ifndef QEMU_CPUS_H
29c17d615SPaolo Bonzini #define QEMU_CPUS_H
39c17d615SPaolo Bonzini 
4b86f59c7SClaudio Fontana #include "sysemu/accel-ops.h"
5d2528bdcSPaolo Bonzini 
6b86f59c7SClaudio Fontana /* register accel-specific operations */
7b86f59c7SClaudio Fontana void cpus_register_accel(const AccelOpsClass *i);
8430065daSClaudio Fontana 
9*ae7467b1SAlex Bennée /* return registers ops */
10*ae7467b1SAlex Bennée const AccelOpsClass *cpus_get_accel(void);
11*ae7467b1SAlex Bennée 
12b86f59c7SClaudio Fontana /* accel/dummy-cpus.c */
13430065daSClaudio Fontana 
14b86f59c7SClaudio Fontana /* Create a dummy vcpu for AccelOpsClass->create_vcpu_thread */
159ce84a0dSJason Andryuk void dummy_start_vcpu_thread(CPUState *);
169ce84a0dSJason Andryuk 
17430065daSClaudio Fontana /* interface available for cpus accelerator threads */
18430065daSClaudio Fontana 
19430065daSClaudio Fontana /* For temporary buffers for forming a name */
20430065daSClaudio Fontana #define VCPU_THREAD_NAME_SIZE 16
21430065daSClaudio Fontana 
22430065daSClaudio Fontana void cpus_kick_thread(CPUState *cpu);
23430065daSClaudio Fontana bool cpu_work_list_empty(CPUState *cpu);
24430065daSClaudio Fontana bool cpu_thread_is_idle(CPUState *cpu);
25740b1759SClaudio Fontana bool all_cpu_threads_idle(void);
26430065daSClaudio Fontana bool cpu_can_run(CPUState *cpu);
27430065daSClaudio Fontana void qemu_wait_io_event_common(CPUState *cpu);
28430065daSClaudio Fontana void qemu_wait_io_event(CPUState *cpu);
29430065daSClaudio Fontana void cpu_thread_signal_created(CPUState *cpu);
30430065daSClaudio Fontana void cpu_thread_signal_destroyed(CPUState *cpu);
31430065daSClaudio Fontana void cpu_handle_guest_debug(CPUState *cpu);
32430065daSClaudio Fontana 
33430065daSClaudio Fontana /* end interface for cpus accelerator threads */
34430065daSClaudio Fontana 
3588401cbcSPaolo Bonzini bool qemu_in_vcpu_thread(void);
369c17d615SPaolo Bonzini void qemu_init_cpu_loop(void);
379c17d615SPaolo Bonzini void resume_all_vcpus(void);
389c17d615SPaolo Bonzini void pause_all_vcpus(void);
399c17d615SPaolo Bonzini void cpu_stop_current(void);
404b4629d9SPaolo Bonzini 
414b4629d9SPaolo Bonzini extern int icount_align_option;
424b4629d9SPaolo Bonzini 
434b4629d9SPaolo Bonzini /* Unblock cpu */
444b4629d9SPaolo Bonzini void qemu_cpu_kick_self(void);
459c17d615SPaolo Bonzini 
4692a5199bSTom Lendacky bool cpus_are_resettable(void);
4792a5199bSTom Lendacky 
489c17d615SPaolo Bonzini void cpu_synchronize_all_states(void);
499c17d615SPaolo Bonzini void cpu_synchronize_all_post_reset(void);
509c17d615SPaolo Bonzini void cpu_synchronize_all_post_init(void);
5175e972daSDavid Gibson void cpu_synchronize_all_pre_loadvm(void);
529c17d615SPaolo Bonzini 
539c17d615SPaolo Bonzini #endif
54