From patchwork Fri Oct 21 16:26:32 2011 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Paolo Bonzini X-Patchwork-Id: 121010 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from lists.gnu.org (lists.gnu.org [140.186.70.17]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (Client did not present a certificate) by ozlabs.org (Postfix) with ESMTPS id 568F2B70DD for ; Sat, 22 Oct 2011 03:27:15 +1100 (EST) Received: from localhost ([::1]:52069 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RHHw0-0003zC-NE for incoming@patchwork.ozlabs.org; Fri, 21 Oct 2011 12:27:04 -0400 Received: from eggs.gnu.org ([140.186.70.92]:33445) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RHHvp-0003yk-Iv for qemu-devel@nongnu.org; Fri, 21 Oct 2011 12:26:54 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1RHHvo-0007P2-0c for qemu-devel@nongnu.org; Fri, 21 Oct 2011 12:26:53 -0400 Received: from mail-ww0-f53.google.com ([74.125.82.53]:38994) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RHHvn-0007Ox-Q0 for qemu-devel@nongnu.org; Fri, 21 Oct 2011 12:26:51 -0400 Received: by wwi36 with SMTP id 36so5506865wwi.10 for ; Fri, 21 Oct 2011 09:26:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=sender:from:to:subject:date:message-id:x-mailer; bh=aLswFOMO05aA1MqocGLT564dfrWspGtSdrMoKLjmbKI=; b=kxxaCO+zi/64ObErsjmHe937WYMv8FCJdMJ3JaolOo4jkxHRBQy4u7gxv8/OHKbDli JlBPKqyYysWVW7vYjiwJ4cvnYrmpbXK1GyMuM1BYZykw8ap86XfNmpE39MKXsSmI8l/F nVOEEksszYJiHZCzZZ2dubafq75kxR88WcoIw= Received: by 10.227.20.67 with SMTP id e3mr6074541wbb.5.1319214410765; Fri, 21 Oct 2011 09:26:50 -0700 (PDT) Received: from localhost.localdomain (93-34-199-98.ip51.fastwebnet.it. [93.34.199.98]) by mx.google.com with ESMTPS id b5sm22704403wbh.4.2011.10.21.09.26.49 (version=TLSv1/SSLv3 cipher=OTHER); Fri, 21 Oct 2011 09:26:49 -0700 (PDT) From: Paolo Bonzini To: qemu-devel@nongnu.org Date: Fri, 21 Oct 2011 18:26:32 +0200 Message-Id: <1319214405-20388-1-git-send-email-pbonzini@redhat.com> X-Mailer: git-send-email 1.7.6 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6 (newer, 2) X-Received-From: 74.125.82.53 Subject: [Qemu-devel] [PULL v3 00/13] allow tools to use the QEMU main loop X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org 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