[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PULL 08/51] chardev: introduce qemu_chr_timeout_add_ms
From: |
Peter Xu |
Subject: |
Re: [Qemu-devel] [PULL 08/51] chardev: introduce qemu_chr_timeout_add_ms() |
Date: |
Thu, 18 Jan 2018 13:00:22 +0800 |
User-agent: |
Mutt/1.9.1 (2017-09-22) |
On Wed, Jan 17, 2018 at 05:21:40PM +0100, Marc-André Lureau wrote:
> Hi
>
> On Tue, Jan 16, 2018 at 3:16 PM, Paolo Bonzini <address@hidden> wrote:
> > From: Peter Xu <address@hidden>
> >
> > It's a replacement of g_timeout_add[_seconds]() for chardevs. Chardevs
> > now can have dedicated gcontext, we should always bind chardev tasks
> > onto those gcontext rather than the default main context. Since there
> > are quite a few of g_timeout_add[_seconds]() callers, a new function
> > qemu_chr_timeout_add_ms() is introduced.
> >
> > One thing to mention is that, terminal3270 is still always running on
> > main gcontext. However let's convert that as well since it's still part
> > of chardev codes and in case one day we'll miss that when we move it out
> > of main gcontext too.
> >
> > Also, convert all the timers from GSource tags into GSource pointers.
> > Gsource tag IDs and g_source_remove()s can only work with default
> > gcontext, while now these GSources can logically be attached to other
> > contexts. So let's use explicit g_source_destroy() plus another
> > g_source_unref() to remove a timer.
> >
> > Note: when in the timer handler, we don't need the g_source_destroy()
> > any more since that'll be done automatically if the timer handler
> > returns false (and that's what all the current handlers do).
> >
> > Yet another note: in pty_chr_rearm_timer() we take special care for
> > ms=1000. This patch merged the two cases into one.
> >
> > Signed-off-by: Peter Xu <address@hidden>
> > Message-Id: <address@hidden>
> > Signed-off-by: Paolo Bonzini <address@hidden>
> > ---
> > chardev/char-pty.c | 43 +++++++++++++++++++------------------------
> > chardev/char-socket.c | 28 ++++++++++++++++++----------
> > chardev/char.c | 18 ++++++++++++++++++
> > hw/char/terminal3270.c | 28 ++++++++++++++++------------
> > include/chardev/char.h | 3 +++
> > 5 files changed, 74 insertions(+), 46 deletions(-)
> >
> > diff --git a/chardev/char-pty.c b/chardev/char-pty.c
> > index 8248e36..89315e6 100644
> > --- a/chardev/char-pty.c
> > +++ b/chardev/char-pty.c
> > @@ -42,7 +42,7 @@ typedef struct {
> >
> > /* Protected by the Chardev chr_write_lock. */
> > int connected;
> > - guint timer_tag;
> > + GSource *timer_src;
> > GSource *open_source;
> > } PtyChardev;
> >
> > @@ -57,7 +57,8 @@ static gboolean pty_chr_timer(gpointer opaque)
> > PtyChardev *s = PTY_CHARDEV(opaque);
> >
> > qemu_mutex_lock(&chr->chr_write_lock);
> > - s->timer_tag = 0;
> > + s->timer_src = NULL;
> > + g_source_unref(s->open_source);
>
> why that line ^ ? It adds criticals every second (for ex with -chardev
> pty,id=foo -device isa-serial,chardev=foo).
My fault. I must have had a wrong rebase somehow after switching to
GSource pointers while kept the compiling happy. I'll post a fix
soon. Sorry!
--
Peter Xu
- [Qemu-devel] [PULL 04/51] hpet: recover timer offset correctly, (continued)
- [Qemu-devel] [PULL 04/51] hpet: recover timer offset correctly, Paolo Bonzini, 2018/01/16
- [Qemu-devel] [PULL 10/51] build-sys: silence make by default or V=0, Paolo Bonzini, 2018/01/16
- [Qemu-devel] [PULL 06/51] chardev: use backend chr context when watch for fe, Paolo Bonzini, 2018/01/16
- [Qemu-devel] [PULL 11/51] build-sys: add a rule to print a variable, Paolo Bonzini, 2018/01/16
- [Qemu-devel] [PULL 05/51] i386/cpu/kvm: look at PMU's CPUID before setting MSRs, Paolo Bonzini, 2018/01/16
- [Qemu-devel] [PULL 07/51] chardev: let g_idle_add() be with chardev gcontext, Paolo Bonzini, 2018/01/16
- [Qemu-devel] [PULL 08/51] chardev: introduce qemu_chr_timeout_add_ms(), Paolo Bonzini, 2018/01/16
- [Qemu-devel] [PULL 12/51] build-sys: compile with -Og or -O1 when --enable-debug, Paolo Bonzini, 2018/01/16
- [Qemu-devel] [PULL 14/51] tests/docker: add test-debug, Paolo Bonzini, 2018/01/16
- [Qemu-devel] [PULL 09/51] build-sys: fix qemu-ga -pthread linking, Paolo Bonzini, 2018/01/16
- [Qemu-devel] [PULL 17/51] readline: add a free function, Paolo Bonzini, 2018/01/16
- [Qemu-devel] [PULL 13/51] tests/docker: add some sanitizers to fedora dockerfile, Paolo Bonzini, 2018/01/16
- [Qemu-devel] [PULL 15/51] tests: fix check-qobject leak, Paolo Bonzini, 2018/01/16
- [Qemu-devel] [PULL 16/51] vl: fix direct firmware directories leak, Paolo Bonzini, 2018/01/16
- [Qemu-devel] [PULL 18/51] tests: fix migration-test leak, Paolo Bonzini, 2018/01/16
- [Qemu-devel] [PULL 20/51] qemu-config: fix leak in query-command-line-options, Paolo Bonzini, 2018/01/16
- [Qemu-devel] [PULL 23/51] mips: fix potential fopen(NULL,...), Paolo Bonzini, 2018/01/16