瀏覽代碼

hw/misc/debugexit: use runstate API instead of plain exit()

Directly calling exit() prevents any kind of management or handling.
Instead use the corresponding runstate API.
The default behavior of the runstate API is the same as exit().

Signed-off-by: Thomas Weißschuh <thomas@t-8ch.de>
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Message-ID: <20240523-debugexit-v1-1-d52fcaf7bf8b@t-8ch.de>
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Thomas Weißschuh 1 年之前
父節點
當前提交
af1cf62401
共有 1 個文件被更改,包括 3 次插入1 次删除
  1. 3 1
      hw/misc/debugexit.c

+ 3 - 1
hw/misc/debugexit.c

@@ -12,6 +12,7 @@
 #include "hw/qdev-properties.h"
 #include "hw/qdev-properties.h"
 #include "qemu/module.h"
 #include "qemu/module.h"
 #include "qom/object.h"
 #include "qom/object.h"
+#include "sysemu/runstate.h"
 
 
 #define TYPE_ISA_DEBUG_EXIT_DEVICE "isa-debug-exit"
 #define TYPE_ISA_DEBUG_EXIT_DEVICE "isa-debug-exit"
 OBJECT_DECLARE_SIMPLE_TYPE(ISADebugExitState, ISA_DEBUG_EXIT_DEVICE)
 OBJECT_DECLARE_SIMPLE_TYPE(ISADebugExitState, ISA_DEBUG_EXIT_DEVICE)
@@ -32,7 +33,8 @@ static uint64_t debug_exit_read(void *opaque, hwaddr addr, unsigned size)
 static void debug_exit_write(void *opaque, hwaddr addr, uint64_t val,
 static void debug_exit_write(void *opaque, hwaddr addr, uint64_t val,
                              unsigned width)
                              unsigned width)
 {
 {
-    exit((val << 1) | 1);
+    qemu_system_shutdown_request_with_code(SHUTDOWN_CAUSE_GUEST_SHUTDOWN,
+                                           (val << 1) | 1);
 }
 }
 
 
 static const MemoryRegionOps debug_exit_ops = {
 static const MemoryRegionOps debug_exit_ops = {