[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: |
Marc-André Lureau |
Subject: |
Re: [Qemu-devel] [PULL 08/51] chardev: introduce qemu_chr_timeout_add_ms() |
Date: |
Wed, 17 Jan 2018 17:21:40 +0100 |
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).
--
Marc-André Lureau
- [Qemu-devel] [PULL 02/51] scsi: fix scsi_convert_sense crash when in_buf == NULL && in_len == 0, (continued)
- [Qemu-devel] [PULL 02/51] scsi: fix scsi_convert_sense crash when in_buf == NULL && in_len == 0, Paolo Bonzini, 2018/01/16
- [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