From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from [140.186.70.92] (port=39140 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1PjqQz-0007Jg-ET for qemu-devel@nongnu.org; Mon, 31 Jan 2011 04:52:34 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1PjqQx-0007Wg-98 for qemu-devel@nongnu.org; Mon, 31 Jan 2011 04:52:33 -0500 Received: from mx1.redhat.com ([209.132.183.28]:29817) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1PjqQx-0007WK-0x for qemu-devel@nongnu.org; Mon, 31 Jan 2011 04:52:31 -0500 Message-ID: <4D46865A.2090405@redhat.com> Date: Mon, 31 Jan 2011 11:52:26 +0200 From: Avi Kivity MIME-Version: 1.0 References: <34720dd344455d0abee575d399caedebcc099e5a.1296133797.git.jan.kiszka@siemens.com> In-Reply-To: <34720dd344455d0abee575d399caedebcc099e5a.1296133797.git.jan.kiszka@siemens.com> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Subject: [Qemu-devel] Re: [PATCH 04/22] Leave inner main_loop faster on pending requests List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Jan Kiszka Cc: Marcelo Tosatti , qemu-devel@nongnu.org, kvm@vger.kernel.org On 01/27/2011 03:09 PM, Jan Kiszka wrote: > If there is any pending request that requires us to leave the inner loop > if main_loop, makes sure we do this as soon as possible by enforcing > non-blocking IO processing. > > At this change, move variable definitions out of the inner loop to > improve readability. > > Signed-off-by: Jan Kiszka > --- > vl.c | 11 +++++++---- > 1 files changed, 7 insertions(+), 4 deletions(-) > > diff --git a/vl.c b/vl.c > index 5fad700..2ebc55b 100644 > --- a/vl.c > +++ b/vl.c > @@ -1384,18 +1384,21 @@ qemu_irq qemu_system_powerdown; > > static void main_loop(void) > { > + bool nonblocking = false; > +#ifdef CONFIG_PROFILER > + int64_t ti; > +#endif > int r; > > qemu_main_loop_start(); > > for (;;) { > do { > - bool nonblocking = false; > -#ifdef CONFIG_PROFILER > - int64_t ti; > -#endif > #ifndef CONFIG_IOTHREAD > nonblocking = cpu_exec_all(); > + if (!vm_can_run()) { > + nonblocking = true; > + } Doesn't this cause vmstop to spin? We'll never execute main_loop_wait(false) if I read the code correctly? -- error compiling committee.c: too many arguments to function