mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-04 16:23:55 -06:00
qapi: Add exit-failure PanicAction
Currently QEMU exits with code 0 on both panic an shutdown. For tests it is useful to return 1 on panic, so that it counts as a test failure. Introduce a new exit-failure PanicAction that makes main() return EXIT_FAILURE. Tests can use -action panic=exit-failure option to activate this behavior. Signed-off-by: Ilya Leoshkevich <iii@linux.ibm.com> Reviewed-by: Richard Henderson <richard.henderson@linaro.org> Reviewed-by: David Hildenbrand <david@redhat.com> Message-Id: <20220725223746.227063-2-iii@linux.ibm.com> Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
This commit is contained in:
parent
9b1268f55c
commit
0882caf4d6
5 changed files with 23 additions and 9 deletions
|
@ -482,7 +482,8 @@ void qemu_system_guest_panicked(GuestPanicInformation *info)
|
|||
qapi_event_send_guest_panicked(GUEST_PANIC_ACTION_PAUSE,
|
||||
!!info, info);
|
||||
vm_stop(RUN_STATE_GUEST_PANICKED);
|
||||
} else if (panic_action == PANIC_ACTION_SHUTDOWN) {
|
||||
} else if (panic_action == PANIC_ACTION_SHUTDOWN ||
|
||||
panic_action == PANIC_ACTION_EXIT_FAILURE) {
|
||||
qapi_event_send_guest_panicked(GUEST_PANIC_ACTION_POWEROFF,
|
||||
!!info, info);
|
||||
vm_stop(RUN_STATE_GUEST_PANICKED);
|
||||
|
@ -662,7 +663,7 @@ void qemu_system_debug_request(void)
|
|||
qemu_notify_event();
|
||||
}
|
||||
|
||||
static bool main_loop_should_exit(void)
|
||||
static bool main_loop_should_exit(int *status)
|
||||
{
|
||||
RunState r;
|
||||
ShutdownCause request;
|
||||
|
@ -680,6 +681,10 @@ static bool main_loop_should_exit(void)
|
|||
if (shutdown_action == SHUTDOWN_ACTION_PAUSE) {
|
||||
vm_stop(RUN_STATE_SHUTDOWN);
|
||||
} else {
|
||||
if (request == SHUTDOWN_CAUSE_GUEST_PANIC &&
|
||||
panic_action == PANIC_ACTION_EXIT_FAILURE) {
|
||||
*status = EXIT_FAILURE;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
@ -715,12 +720,14 @@ static bool main_loop_should_exit(void)
|
|||
return false;
|
||||
}
|
||||
|
||||
void qemu_main_loop(void)
|
||||
int qemu_main_loop(void)
|
||||
{
|
||||
int status = EXIT_SUCCESS;
|
||||
#ifdef CONFIG_PROFILER
|
||||
int64_t ti;
|
||||
#endif
|
||||
while (!main_loop_should_exit()) {
|
||||
|
||||
while (!main_loop_should_exit(&status)) {
|
||||
#ifdef CONFIG_PROFILER
|
||||
ti = profile_getclock();
|
||||
#endif
|
||||
|
@ -729,6 +736,8 @@ void qemu_main_loop(void)
|
|||
dev_time += profile_getclock() - ti;
|
||||
#endif
|
||||
}
|
||||
|
||||
return status;
|
||||
}
|
||||
|
||||
void qemu_add_exit_notifier(Notifier *notify)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue