All of lore.kernel.org
 help / color / mirror / Atom feed
From: Peter Xu <peterx@redhat.com>
To: "Marc-André Lureau" <marcandre.lureau@redhat.com>
Cc: qemu-devel@nongnu.org, pbonzini@redhat.com, berrange@redhat.com,
	armbru@redhat.com
Subject: Re: [Qemu-devel] [PATCH 6/9] terminal3270: do not use backend timer sources
Date: Tue, 28 Aug 2018 11:52:32 +0800	[thread overview]
Message-ID: <20180828035232.GD4446@xz-x1> (raw)
In-Reply-To: <20180827222322.26009-7-marcandre.lureau@redhat.com>

On Tue, Aug 28, 2018 at 12:23:19AM +0200, Marc-André Lureau wrote:
> terminal3270 is uses the front-end side of the chardev. It shouldn't
> create sources from backend side context. Fwiw, send_timing_mark_cb
> calls qemu_chr_fe_write_all() which should be thread safe.
> 
> This partially reverts changes from commit
> 2c716ba1506769c9be2caa02f0f6d6e7c00f4304.

I don't fully understand too on why "It shouldn't create sources from
backend side context".  Could you explain a bit?

If you don't want the backend gcontext to be exposed to the frontend,
IMHO the simplest thing is just to use the NULL gcontext in
qemu_chr_timeout_add_ms() which is a one-liner change. I don't see
much point on re-using the GSource tags since IMHO GSource pointer is
always superior to the old tag system.

> 
> CC: Peter Xu <peterx@redhat.com>
> Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
> ---
>  hw/char/terminal3270.c | 15 ++++++---------
>  1 file changed, 6 insertions(+), 9 deletions(-)
> 
> diff --git a/hw/char/terminal3270.c b/hw/char/terminal3270.c
> index e9c45e55b1..35b079d5c4 100644
> --- a/hw/char/terminal3270.c
> +++ b/hw/char/terminal3270.c
> @@ -31,7 +31,7 @@ typedef struct Terminal3270 {
>      uint8_t outv[OUTPUT_BUFFER_SIZE];
>      int in_len;
>      bool handshake_done;
> -    GSource *timer_src;
> +    guint timer_tag;
>  } Terminal3270;
>  
>  #define TYPE_TERMINAL_3270 "x-terminal3270"
> @@ -47,10 +47,9 @@ static int terminal_can_read(void *opaque)
>  
>  static void terminal_timer_cancel(Terminal3270 *t)
>  {
> -    if (t->timer_src) {
> -        g_source_destroy(t->timer_src);
> -        g_source_unref(t->timer_src);
> -        t->timer_src = NULL;
> +    if (t->timer_tag) {
> +        g_source_remove(t->timer_tag);
> +        t->timer_tag = 0;
>      }
>  }
>  
> @@ -100,8 +99,7 @@ static void terminal_read(void *opaque, const uint8_t *buf, int size)
>      assert(size <= (INPUT_BUFFER_SIZE - t->in_len));
>  
>      terminal_timer_cancel(t);
> -    t->timer_src = qemu_chr_timeout_add_ms(t->chr.chr, 600 * 1000,
> -                                           send_timing_mark_cb, t);
> +    t->timer_tag = g_timeout_add_seconds(600, send_timing_mark_cb, t);
>      memcpy(&t->inv[t->in_len], buf, size);
>      t->in_len += size;
>      if (t->in_len < 2) {
> @@ -160,8 +158,7 @@ static void chr_event(void *opaque, int event)
>           * char-socket.c. Once qemu receives the terminal-type of the
>           * client, mark handshake done and trigger everything rolling again.
>           */
> -        t->timer_src = qemu_chr_timeout_add_ms(t->chr.chr, 600 * 1000,
> -                                               send_timing_mark_cb, t);
> +        t->timer_tag = g_timeout_add_seconds(600, send_timing_mark_cb, t);
>          break;
>      case CHR_EVENT_CLOSED:
>          sch->curr_status.scsw.dstat = SCSW_DSTAT_DEVICE_END;
> -- 
> 2.18.0.547.g1d89318c48
> 

Regards,

-- 
Peter Xu

  reply	other threads:[~2018-08-28  3:52 UTC|newest]

Thread overview: 29+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-08-27 22:23 [Qemu-devel] [PATCH 0/9] chardev: various cleanups and improvements Marc-André Lureau
2018-08-27 22:23 ` [Qemu-devel] [PATCH 1/9] char.h: fix gtk-doc comment style Marc-André Lureau
2018-08-29 16:44   ` Daniel P. Berrangé
2018-08-30 14:38   ` Markus Armbruster
2018-08-27 22:23 ` [Qemu-devel] [PATCH 2/9] chardev: mark the calls that allow an implicit mux monitor Marc-André Lureau
2018-08-30 14:55   ` Markus Armbruster
2018-08-30 16:16     ` Marc-André Lureau
2018-08-27 22:23 ` [Qemu-devel] [PATCH 3/9] chardev: use a child source for qio input source Marc-André Lureau
2018-08-29 16:48   ` Daniel P. Berrangé
2019-04-04 15:18   ` KONRAD Frederic
2019-04-04 15:44     ` Marc-André Lureau
2019-04-04 15:49       ` KONRAD Frederic
2019-04-05  7:46         ` KONRAD Frederic
2019-04-05  7:46           ` KONRAD Frederic
2018-08-27 22:23 ` [Qemu-devel] [PATCH 4/9] char: update the mux hanlders in class callback Marc-André Lureau
2018-08-30 14:57   ` Markus Armbruster
2018-08-30 16:18     ` Marc-André Lureau
2018-08-31  6:14       ` Markus Armbruster
2018-08-27 22:23 ` [Qemu-devel] [PATCH 5/9] char-fe: set_handlers() needs an associted chardev Marc-André Lureau
2018-08-30 14:57   ` Markus Armbruster
2018-08-30 16:20     ` Marc-André Lureau
2018-08-27 22:23 ` [Qemu-devel] [PATCH 6/9] terminal3270: do not use backend timer sources Marc-André Lureau
2018-08-28  3:52   ` Peter Xu [this message]
2018-08-28  9:09     ` Marc-André Lureau
2018-08-28 10:20       ` Peter Xu
2018-08-28 10:40         ` Marc-André Lureau
2018-08-27 22:23 ` [Qemu-devel] [PATCH 7/9] chardev: add a note about frontend sources and context switch Marc-André Lureau
2018-08-27 22:23 ` [Qemu-devel] [PATCH 8/9] char-pty: remove check for connection on write Marc-André Lureau
2018-08-27 22:23 ` [Qemu-devel] [PATCH 9/9] char-pty: remove write_lock usage Marc-André Lureau

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20180828035232.GD4446@xz-x1 \
    --to=peterx@redhat.com \
    --cc=armbru@redhat.com \
    --cc=berrange@redhat.com \
    --cc=marcandre.lureau@redhat.com \
    --cc=pbonzini@redhat.com \
    --cc=qemu-devel@nongnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.