On Thu, Sep 21, 2017 at 8:35 AM, Peter Xu <pet...@redhat.com> wrote: > The old chardev may not fully support non-default GMainContext. One > direct clue is that when we call io_add_watch_poll() sometimes we are > still passing in the NULL context pointer. > > IIUC we are fine during setup since the context will be passed > correctly during setup via chr_update_read_handler(). However it > won't survive if chardev reconnected due to some reason. > > This series tries to solve above problem by caching the gcontext > pointer in Chardev itself. > > This will be required for the monitor OOB (out-of-band) support, since > in that series monitor backends may be run in non-default contexts. > > Please review. Thanks. > > Peter Xu (4): > chardev: new qemu_chr_be_update_read_handlers() > chardev: add Chardev.gcontext field > chardev: use per-dev context for io_add_watch_poll > chardev: remove context in chr_update_read_handler > > chardev/char-fd.c | 5 ++--- > chardev/char-fe.c | 7 ++----- > chardev/char-pty.c | 5 ++--- > chardev/char-socket.c | 7 +++---- > chardev/char-udp.c | 5 ++--- > chardev/char.c | 11 +++++++++++ > include/chardev/char.h | 13 ++++++++++++- > 7 files changed, 34 insertions(+), 19 deletions(-)
It's only for the read handler, perhaps the gcontext field should be named "read_context" or adding a comment to explain this is only used for that. Otherwise, looks good: Reviewed-by: Marc-André Lureau <marcandre.lur...@redhat.com> -- Marc-André Lureau