qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH 03/14] qio: introduce qio_channel_add_watch_full


From: Peter Xu
Subject: Re: [Qemu-devel] [PATCH 03/14] qio: introduce qio_channel_add_watch_full()
Date: Wed, 28 Feb 2018 21:01:36 +0800
User-agent: Mutt/1.9.1 (2017-09-22)

On Wed, Feb 28, 2018 at 12:47:43PM +0000, Daniel P. Berrangé wrote:
> On Wed, Feb 28, 2018 at 08:44:24PM +0800, Peter Xu wrote:
> > On Wed, Feb 28, 2018 at 09:08:45AM +0000, Daniel P. Berrangé wrote:
> > > On Wed, Feb 28, 2018 at 01:06:22PM +0800, Peter Xu wrote:
> > > > It's a more powerful version of qio_channel_add_watch(), which supports
> > > > non-default gcontext.  It's stripped from the old one, then we have
> > > > g_source_get_id() to fetch the tag ID to keep the old interface.
> > > > 
> > > > Note that the new API will return a gsource, meanwhile keep a reference
> > > > of it so that callers need to unref them explicitly.
> > > 
> > > I don't really like this. Having qio_channel_add_watch and
> > > qio_channel_add_watch_full with differing return values is
> > > really very surprising. They should be functionally identical,
> > > except for the extra context arg.
> > 
> > Yeah it's not nice, but I do need the GSource and the tag ID does not
> > help in the series.
> > 
> > An alternative would be that I modify qio_channel_add_watch() to
> > return GSource too.  Is there an third choice that you could suggest?
> 
> Given you have the id + GMainContext you can just acquire the GSource,
> if needed, using g_main_context_find_source_by_id.

I always feel unsafe to play around with tag IDs since the IDs can
change after GSource removed and new GSource added, and also the
result of the call will depend on a correct pairing of context (so if
the context is incorrect, instead of failure, we possibly got
everything screwed up while we never know we failed...).

But indeed for this one it seems pretty safe if I call
g_main_context_find_source_by_id() right after I call
qio_channel_add_watch_full() to fetch the GSource.  If you agree, I
can use this approach in my next post.  Thanks,

-- 
Peter Xu



reply via email to

[Prev in Thread] Current Thread [Next in Thread]