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