a00e37a4be
While there are a number of uses in the code-base of the exit(0) pattern it gets in the way of clean exit which can do all of it's house-keeping. In particular it was reported that you can crash plugins this way because TCG can still be running on other threads when the atexit callback is called. Use qmp_quit() instead which takes care of some housekeeping before triggering the shutdown. Signed-off-by: Alex Bennée <alex.bennee@linaro.org> Reported-by: Lukas Jünger <lukas.junger@greensocs.com> Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com> Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com> Acked-by: Paolo Bonzini <pbonzini@redhat.com> Message-Id: <20211026102234.3961636-19-alex.bennee@linaro.org>
60 lines
1.9 KiB
Meson
60 lines
1.9 KiB
Meson
stub_ss.add(files('bdrv-next-monitor-owned.c'))
|
|
stub_ss.add(files('blk-commit-all.c'))
|
|
stub_ss.add(files('blk-exp-close-all.c'))
|
|
stub_ss.add(files('blockdev-close-all-bdrv-states.c'))
|
|
stub_ss.add(files('change-state-handler.c'))
|
|
stub_ss.add(files('cmos.c'))
|
|
stub_ss.add(files('cpu-get-clock.c'))
|
|
stub_ss.add(files('cpus-get-virtual-clock.c'))
|
|
stub_ss.add(files('qemu-timer-notify-cb.c'))
|
|
stub_ss.add(files('icount.c'))
|
|
stub_ss.add(files('dump.c'))
|
|
stub_ss.add(files('error-printf.c'))
|
|
stub_ss.add(files('fdset.c'))
|
|
stub_ss.add(files('fw_cfg.c'))
|
|
stub_ss.add(files('gdbstub.c'))
|
|
stub_ss.add(files('get-vm-name.c'))
|
|
if linux_io_uring.found()
|
|
stub_ss.add(files('io_uring.c'))
|
|
endif
|
|
stub_ss.add(files('iothread-lock.c'))
|
|
stub_ss.add(files('isa-bus.c'))
|
|
stub_ss.add(files('is-daemonized.c'))
|
|
if libaio.found()
|
|
stub_ss.add(files('linux-aio.c'))
|
|
endif
|
|
stub_ss.add(files('migr-blocker.c'))
|
|
stub_ss.add(files('module-opts.c'))
|
|
stub_ss.add(files('monitor.c'))
|
|
stub_ss.add(files('monitor-core.c'))
|
|
stub_ss.add(files('pci-bus.c'))
|
|
stub_ss.add(files('qemu-timer-notify-cb.c'))
|
|
stub_ss.add(files('qmp_memory_device.c'))
|
|
stub_ss.add(files('qmp-command-available.c'))
|
|
stub_ss.add(files('qmp-quit.c'))
|
|
stub_ss.add(files('qtest.c'))
|
|
stub_ss.add(files('ram-block.c'))
|
|
stub_ss.add(files('ramfb.c'))
|
|
stub_ss.add(files('replay.c'))
|
|
stub_ss.add(files('runstate-check.c'))
|
|
stub_ss.add(files('sysbus.c'))
|
|
stub_ss.add(files('target-get-monitor-def.c'))
|
|
stub_ss.add(files('target-monitor-defs.c'))
|
|
stub_ss.add(files('trace-control.c'))
|
|
stub_ss.add(files('uuid.c'))
|
|
stub_ss.add(files('vmgenid.c'))
|
|
stub_ss.add(files('vmstate.c'))
|
|
stub_ss.add(files('vm-stop.c'))
|
|
stub_ss.add(files('win32-kbd-hook.c'))
|
|
stub_ss.add(files('cpu-synchronize-state.c'))
|
|
if have_block
|
|
stub_ss.add(files('replay-tools.c'))
|
|
endif
|
|
if have_system
|
|
stub_ss.add(files('semihost.c'))
|
|
stub_ss.add(files('usb-dev-stub.c'))
|
|
stub_ss.add(files('xen-hw-stub.c'))
|
|
else
|
|
stub_ss.add(files('qdev.c'))
|
|
endif
|