mbox

[PULL,v3,00/13] allow tools to use the QEMU main loop

Message ID 1319214405-20388-1-git-send-email-pbonzini@redhat.com
State New
Headers show

Pull-request

git://github.com/bonzini/qemu.git split-main-loop-for-anthony

Message

Paolo Bonzini Oct. 21, 2011, 4:26 p.m. UTC
The following changes since commit c76eaf13975130768070ecd2d4f3107eb69ab757:

  hw/9pfs: Fix broken compilation caused by wrong trace events (2011-10-20 15:30:59 -0500)

are available in the git repository at:
  git://github.com/bonzini/qemu.git split-main-loop-for-anthony

This patch series makes the QEMU main loop usable out of the executable,
and especially in tools and possibly unit tests.  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
perspective 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
what the largest part of the series does (patches 1-9).

Patches 10-13 complete the refactoring and cleanup some surrounding
code.

v2->v3
	Rebased, added documentation

v1->v2
	Rebased

Paolo Bonzini (13):
  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 runstate_is_running()
  qemu-timer: use atexit for quit_timers
  qemu-timer: move more stuff out of qemu-timer.c
  qemu-timer: do not use RunState change handlers
  main-loop: create main-loop.h
  main-loop: create main-loop.c
  Revert to a hand-made select loop
  simplify main loop functions

 Makefile.objs         |    2 +-
 async.c               |    1 +
 cpus.c                |  497 ++++++++++++++++++++++++++++---------------------
 cpus.h                |    3 +-
 exec-all.h            |   14 ++
 exec.c                |    3 -
 hw/mac_dbdma.c        |    5 -
 hw/mac_dbdma.h        |    1 -
 iohandler.c           |   55 +------
 main-loop.c           |  495 ++++++++++++++++++++++++++++++++++++++++++++++++
 main-loop.h           |  351 ++++++++++++++++++++++++++++++++++
 os-win32.c            |  123 ------------
 qemu-char.h           |   12 +-
 qemu-common.h         |   37 +----
 qemu-coroutine-lock.c |    1 +
 qemu-os-posix.h       |    4 -
 qemu-os-win32.h       |   17 +--
 qemu-timer.c          |  489 +++++++++---------------------------------------
 qemu-timer.h          |   31 +---
 savevm.c              |   25 +++
 slirp/libslirp.h      |   11 -
 sysemu.h              |    3 +-
 vl.c                  |  189 ++++---------------
 23 files changed, 1309 insertions(+), 1060 deletions(-)
 create mode 100644 main-loop.c
 create mode 100644 main-loop.h

Comments

Anthony Liguori Oct. 24, 2011, 4:19 p.m. UTC | #1
On 10/21/2011 11:26 AM, Paolo Bonzini wrote:
> The following changes since commit c76eaf13975130768070ecd2d4f3107eb69ab757:
>
>    hw/9pfs: Fix broken compilation caused by wrong trace events (2011-10-20 15:30:59 -0500)
>
> are available in the git repository at:
>    git://github.com/bonzini/qemu.git split-main-loop-for-anthony

Pulled.  Thanks.

Regards,

Anthony Liguori

> This patch series makes the QEMU main loop usable out of the executable,
> and especially in tools and possibly unit tests.  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
> perspective 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
> what the largest part of the series does (patches 1-9).
>
> Patches 10-13 complete the refactoring and cleanup some surrounding
> code.
>
> v2->v3
> 	Rebased, added documentation
>
> v1->v2
> 	Rebased
>
> Paolo Bonzini (13):
>    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 runstate_is_running()
>    qemu-timer: use atexit for quit_timers
>    qemu-timer: move more stuff out of qemu-timer.c
>    qemu-timer: do not use RunState change handlers
>    main-loop: create main-loop.h
>    main-loop: create main-loop.c
>    Revert to a hand-made select loop
>    simplify main loop functions
>
>   Makefile.objs         |    2 +-
>   async.c               |    1 +
>   cpus.c                |  497 ++++++++++++++++++++++++++++---------------------
>   cpus.h                |    3 +-
>   exec-all.h            |   14 ++
>   exec.c                |    3 -
>   hw/mac_dbdma.c        |    5 -
>   hw/mac_dbdma.h        |    1 -
>   iohandler.c           |   55 +------
>   main-loop.c           |  495 ++++++++++++++++++++++++++++++++++++++++++++++++
>   main-loop.h           |  351 ++++++++++++++++++++++++++++++++++
>   os-win32.c            |  123 ------------
>   qemu-char.h           |   12 +-
>   qemu-common.h         |   37 +----
>   qemu-coroutine-lock.c |    1 +
>   qemu-os-posix.h       |    4 -
>   qemu-os-win32.h       |   17 +--
>   qemu-timer.c          |  489 +++++++++---------------------------------------
>   qemu-timer.h          |   31 +---
>   savevm.c              |   25 +++
>   slirp/libslirp.h      |   11 -
>   sysemu.h              |    3 +-
>   vl.c                  |  189 ++++---------------
>   23 files changed, 1309 insertions(+), 1060 deletions(-)
>   create mode 100644 main-loop.c
>   create mode 100644 main-loop.h
>