From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:58398) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Z5kiZ-0004FP-F9 for qemu-devel@nongnu.org; Thu, 18 Jun 2015 21:03:40 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Z5kiY-0001HH-CQ for qemu-devel@nongnu.org; Thu, 18 Jun 2015 21:03:39 -0400 Date: Fri, 19 Jun 2015 09:03:28 +0800 From: Fam Zheng Message-ID: <20150619010328.GB2202@ad.nay.redhat.com> References: <1433926791-10580-1-git-send-email-famz@redhat.com> <1433926791-10580-10-git-send-email-famz@redhat.com> <20150616141517.GA4958@stefanha-thinkpad.redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20150616141517.GA4958@stefanha-thinkpad.redhat.com> Subject: Re: [Qemu-devel] [PATCH 9/9] slirp: Remove unused pollfds from the parameter list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Stefan Hajnoczi Cc: Kevin Wolf , qemu-block@nongnu.org, Stefan Weil , qemu-devel@nongnu.org, Stefan Hajnoczi , Jan Kiszka , Paolo Bonzini On Tue, 06/16 15:15, Stefan Hajnoczi wrote: > On Wed, Jun 10, 2015 at 04:59:51PM +0800, Fam Zheng wrote: > > Signed-off-by: Fam Zheng > > --- > > main-loop.c | 4 ++-- > > slirp/libslirp.h | 4 ++-- > > slirp/slirp.c | 4 ++-- > > stubs/slirp.c | 4 ++-- > > 4 files changed, 8 insertions(+), 8 deletions(-) > > > > diff --git a/main-loop.c b/main-loop.c > > index 18b7508..b3808ae 100644 > > --- a/main-loop.c > > +++ b/main-loop.c > > @@ -478,7 +478,7 @@ int main_loop_wait(int nonblocking) > > g_array_set_size(gpollfds, 0); /* reset for new iteration */ > > /* XXX: separate device handlers from system ones */ > > #ifdef CONFIG_SLIRP > > - slirp_pollfds_fill(gpollfds, &timeout); > > + slirp_poll_prepare(&timeout); > > #endif > > > > if (timeout == UINT32_MAX) { > > @@ -493,7 +493,7 @@ int main_loop_wait(int nonblocking) > > > > ret = os_host_main_loop_wait(timeout_ns); > > #ifdef CONFIG_SLIRP > > - slirp_pollfds_poll(gpollfds, (ret < 0)); > > + slirp_poll(); > > The final step is to remove slirp calls completely from > main_loop_wait(). slirp should use the qemu_set_fd_handler() and timer > APIs directly instead of requiring callbacks around ppoll(). > > That would probably even make the slirp code simpler since it currently > splits evented I/O into two phases: > 1. Set slirp-internal state > 2. Reflect slirp-internal state into iohandler and check timeouts after > ppoll() > > If slirp calls the appropriate qemu_set_fd_handler() and timer APIs > *during* state transitions it won't have to use the two-step approach. Yes, that's right, but it is a harder change that I want to leave for a separate series. Fam