This patch series makes the QEMU main loop usable out of the executable, and especially in tools and possibly unit tests. The series already starts using the refactored main loop in qemu-nbd.
This is cleaner because it avoids introducing partial transitions to GIOChannel. Interfacing with the glib main loop is still possible. The main loop code is currently split in cpus.c and vl.c. Moving it to a new file is easy; the problem is that the main loop depends on the timer infrastructure in qemu-timer.c, and that file currently contains the implementation of icount and the vm_clock. This is bad for the prospective of linking qemu-timer.c into the tools. Luckily, it is relatively easy to untie them and move them out of the way. This is taken care by the first half of the series (patches 1-7). Patches 8-11 complete the refactoring and cleanup some surrounding code. Patches 12-14 show how the main loop can be used in the tools. This is, for example, a prerequisite for supporting multiple in-flight operations in qemu-nbd (and perhaps named exports). Very lightly tested, just wanted to throw out the idea. Paolo Bonzini (14): remove unused function qemu-timer: remove active_timers array qemu-timer: move common code to qemu_rearm_alarm_timer qemu-timer: more clock functions qemu-timer: move icount to cpus.c qemu-timer: do not refer to vm_running qemu-timer: move more stuff out of qemu-timer.c create main-loop.h create main-loop.c Revert to a hand-made select loop simplify main loop functions makefile: extract tools-obj-y link the main loop and its dependencies into the tools qemu-nbd: use common main loop Makefile | 13 +- Makefile.objs | 2 +- async.c | 1 + cpus.c | 502 ++++++++++++++++++++++++++++++------------------------ cpus.h | 3 +- exec-all.h | 14 ++ exec.c | 7 - hw/mac_dbdma.c | 5 - hw/mac_dbdma.h | 1 - iohandler.c | 54 +------ main-loop.c | 499 +++++++++++++++++++++++++++++++++++++++++++++++++++++ main-loop.h | 80 +++++++++ os-posix.c | 42 ----- os-win32.c | 128 -------------- oslib-posix.c | 42 +++++ oslib-win32.c | 5 + qemu-char.h | 12 +-- qemu-common.h | 15 +-- qemu-nbd.c | 127 +++++++------- qemu-os-posix.h | 4 - qemu-os-win32.h | 15 +-- qemu-timer.c | 470 +++++++++------------------------------------------ qemu-timer.h | 30 +--- qemu-tool.c | 45 +++-- roms/seabios | 2 +- savevm.c | 25 +++ slirp/libslirp.h | 11 -- sysemu.h | 10 +- vl.c | 184 ++++---------------- 29 files changed, 1173 insertions(+), 1175 deletions(-) create mode 100644 main-loop.c create mode 100644 main-loop.h -- 1.7.6