Browse Source
sysemu/sysemu.h is a rather unfocused dumping ground for stuff related to the system-emulator. Evidence: * It's included widely: in my "build everything" tree, changing sysemu/sysemu.h still triggers a recompile of some 1100 out of 6600 objects (not counting tests and objects that don't depend on qemu/osdep.h, down from 5400 due to the previous two commits). * It pulls in more than a dozen additional headers. Split stuff related to run state management into its own header sysemu/runstate.h. Touching sysemu/sysemu.h now recompiles some 850 objects. qemu/uuid.h also drops from 1100 to 850, and qapi/qapi-types-run-state.h from 4400 to 4200. Touching new sysemu/runstate.h recompiles some 500 objects. Since I'm touching MAINTAINERS to add sysemu/runstate.h anyway, also add qemu/main-loop.h. Suggested-by: Paolo Bonzini <pbonzini@redhat.com> Signed-off-by: Markus Armbruster <armbru@redhat.com> Message-Id: <20190812052359.30071-30-armbru@redhat.com> Reviewed-by: Alex Bennée <alex.bennee@linaro.org> [Unbreak OS-X build]pull/106/head
143 changed files with 216 additions and 143 deletions
@ -0,0 +1,68 @@ |
|||
#ifndef SYSEMU_RUNSTATE_H |
|||
#define SYSEMU_RUNSTATE_H |
|||
|
|||
#include "qapi/qapi-types-run-state.h" |
|||
#include "qemu/notify.h" |
|||
|
|||
bool runstate_check(RunState state); |
|||
void runstate_set(RunState new_state); |
|||
int runstate_is_running(void); |
|||
bool runstate_needs_reset(void); |
|||
bool runstate_store(char *str, size_t size); |
|||
|
|||
typedef void VMChangeStateHandler(void *opaque, int running, RunState state); |
|||
|
|||
VMChangeStateEntry *qemu_add_vm_change_state_handler(VMChangeStateHandler *cb, |
|||
void *opaque); |
|||
VMChangeStateEntry *qemu_add_vm_change_state_handler_prio( |
|||
VMChangeStateHandler *cb, void *opaque, int priority); |
|||
VMChangeStateEntry *qdev_add_vm_change_state_handler(DeviceState *dev, |
|||
VMChangeStateHandler *cb, |
|||
void *opaque); |
|||
void qemu_del_vm_change_state_handler(VMChangeStateEntry *e); |
|||
void vm_state_notify(int running, RunState state); |
|||
|
|||
static inline bool shutdown_caused_by_guest(ShutdownCause cause) |
|||
{ |
|||
return cause >= SHUTDOWN_CAUSE_GUEST_SHUTDOWN; |
|||
} |
|||
|
|||
void vm_start(void); |
|||
int vm_prepare_start(void); |
|||
int vm_stop(RunState state); |
|||
int vm_stop_force_state(RunState state); |
|||
int vm_shutdown(void); |
|||
|
|||
typedef enum WakeupReason { |
|||
/* Always keep QEMU_WAKEUP_REASON_NONE = 0 */ |
|||
QEMU_WAKEUP_REASON_NONE = 0, |
|||
QEMU_WAKEUP_REASON_RTC, |
|||
QEMU_WAKEUP_REASON_PMTIMER, |
|||
QEMU_WAKEUP_REASON_OTHER, |
|||
} WakeupReason; |
|||
|
|||
void qemu_exit_preconfig_request(void); |
|||
void qemu_system_reset_request(ShutdownCause reason); |
|||
void qemu_system_suspend_request(void); |
|||
void qemu_register_suspend_notifier(Notifier *notifier); |
|||
bool qemu_wakeup_suspend_enabled(void); |
|||
void qemu_system_wakeup_request(WakeupReason reason, Error **errp); |
|||
void qemu_system_wakeup_enable(WakeupReason reason, bool enabled); |
|||
void qemu_register_wakeup_notifier(Notifier *notifier); |
|||
void qemu_register_wakeup_support(void); |
|||
void qemu_system_shutdown_request(ShutdownCause reason); |
|||
void qemu_system_powerdown_request(void); |
|||
void qemu_register_powerdown_notifier(Notifier *notifier); |
|||
void qemu_register_shutdown_notifier(Notifier *notifier); |
|||
void qemu_system_debug_request(void); |
|||
void qemu_system_vmstop_request(RunState reason); |
|||
void qemu_system_vmstop_request_prepare(void); |
|||
bool qemu_vmstop_requested(RunState *r); |
|||
ShutdownCause qemu_shutdown_requested_get(void); |
|||
ShutdownCause qemu_reset_requested_get(void); |
|||
void qemu_system_killed(int signal, pid_t pid); |
|||
void qemu_system_reset(ShutdownCause reason); |
|||
void qemu_system_guest_panicked(GuestPanicInformation *info); |
|||
|
|||
#endif |
|||
|
|||
Some files were not shown because too many files changed in this diff
Loading…
Reference in new issue