Patchwork Add chardev option to disable signal.

login
register
mail settings
Submitter Kusanagi Kouichi
Date Oct. 16, 2009, 1:31 p.m.
Message ID <20091016133139.9D5E715C033@msa104.auone-net.jp>
Download mbox | patch
Permalink /patch/36209/
State New
Headers show

Comments

Kusanagi Kouichi - Oct. 16, 2009, 1:31 p.m.
If I am using vga and serial which is stdio and hit C-c on
serial console, qemu terminates. That is annoying for me.
So make it configurable whether signal is generated when C-c is hit.

Signed-off-by: Kusanagi Kouichi <slash@ac.auone-net.jp>
---
 qemu-char.c   |    6 +++---
 qemu-config.c |    3 +++
 2 files changed, 6 insertions(+), 3 deletions(-)
Anthony Liguori - Oct. 16, 2009, 2:04 p.m.
Kusanagi Kouichi wrote:
> If I am using vga and serial which is stdio and hit C-c on
> serial console, qemu terminates. That is annoying for me.
> So make it configurable whether signal is generated when C-c is hit.
>
> Signed-off-by: Kusanagi Kouichi <slash@ac.auone-net.jp>
> ---
>  qemu-char.c   |    6 +++---
>  qemu-config.c |    3 +++
>  2 files changed, 6 insertions(+), 3 deletions(-)
>
> diff --git a/qemu-char.c b/qemu-char.c
> index 8084a67..dd23e63 100644
> --- a/qemu-char.c
> +++ b/qemu-char.c
> @@ -727,7 +727,7 @@ static void term_exit(void)
>      fcntl(0, F_SETFL, old_fd0_flags);
>  }
>  
> -static void term_init(void)
> +static void term_init(QemuOpts *opts)
>  {
>      struct termios tty;
>  
> @@ -740,7 +740,7 @@ static void term_init(void)
>      tty.c_oflag |= OPOST;
>      tty.c_lflag &= ~(ECHO|ECHONL|ICANON|IEXTEN);
>      /* if graphical mode, we allow Ctrl-C handling */
> -    if (display_type == DT_NOGRAPHIC)
> +    if (!qemu_opt_get_bool(opts, "signal", display_type != DT_NOGRAPHIC))
>          tty.c_lflag &= ~ISIG;
>   

Would be nice to eliminate the DT_NOGRAPHIC check here.  In fact, 
looking at the other nographic check, they look bogus.

So how about eliminating DT_NOGRAPHIC entirely and replacing it with 
DT_NONE + appropriate serial config?

Regards,

Anthony Liguori
Kusanagi Kouichi - Oct. 17, 2009, 10:59 a.m.
On 2009-10-16 09:04:51 -0500, Anthony Liguori wrote:
> Kusanagi Kouichi wrote:
> >If I am using vga and serial which is stdio and hit C-c on
> >serial console, qemu terminates. That is annoying for me.
> >So make it configurable whether signal is generated when C-c is hit.
> >
> >Signed-off-by: Kusanagi Kouichi <slash@ac.auone-net.jp>
> >---
> > qemu-char.c   |    6 +++---
> > qemu-config.c |    3 +++
> > 2 files changed, 6 insertions(+), 3 deletions(-)
> >
> >diff --git a/qemu-char.c b/qemu-char.c
> >index 8084a67..dd23e63 100644
> >--- a/qemu-char.c
> >+++ b/qemu-char.c
> >@@ -727,7 +727,7 @@ static void term_exit(void)
> >     fcntl(0, F_SETFL, old_fd0_flags);
> > }
> >-static void term_init(void)
> >+static void term_init(QemuOpts *opts)
> > {
> >     struct termios tty;
> >@@ -740,7 +740,7 @@ static void term_init(void)
> >     tty.c_oflag |= OPOST;
> >     tty.c_lflag &= ~(ECHO|ECHONL|ICANON|IEXTEN);
> >     /* if graphical mode, we allow Ctrl-C handling */
> >-    if (display_type == DT_NOGRAPHIC)
> >+    if (!qemu_opt_get_bool(opts, "signal", display_type != DT_NOGRAPHIC))
> >         tty.c_lflag &= ~ISIG;
> 
> Would be nice to eliminate the DT_NOGRAPHIC check here.  In fact,
> looking at the other nographic check, they look bogus.
> 
> So how about eliminating DT_NOGRAPHIC entirely and replacing it with
> DT_NONE + appropriate serial config?

That sounds good.

> Regards,
> 
> Anthony Liguori

Patch

diff --git a/qemu-char.c b/qemu-char.c
index 8084a67..dd23e63 100644
--- a/qemu-char.c
+++ b/qemu-char.c
@@ -727,7 +727,7 @@  static void term_exit(void)
     fcntl(0, F_SETFL, old_fd0_flags);
 }
 
-static void term_init(void)
+static void term_init(QemuOpts *opts)
 {
     struct termios tty;
 
@@ -740,7 +740,7 @@  static void term_init(void)
     tty.c_oflag |= OPOST;
     tty.c_lflag &= ~(ECHO|ECHONL|ICANON|IEXTEN);
     /* if graphical mode, we allow Ctrl-C handling */
-    if (display_type == DT_NOGRAPHIC)
+    if (!qemu_opt_get_bool(opts, "signal", display_type != DT_NOGRAPHIC))
         tty.c_lflag &= ~ISIG;
     tty.c_cflag &= ~(CSIZE|PARENB);
     tty.c_cflag |= CS8;
@@ -773,7 +773,7 @@  static CharDriverState *qemu_chr_open_stdio(QemuOpts *opts)
     chr->chr_close = qemu_chr_close_stdio;
     qemu_set_fd_handler2(0, stdio_read_poll, stdio_read, NULL, chr);
     stdio_nb_clients++;
-    term_init();
+    term_init(opts);
 
     return chr;
 }
diff --git a/qemu-config.c b/qemu-config.c
index cae92f7..fc73bea 100644
--- a/qemu-config.c
+++ b/qemu-config.c
@@ -134,6 +134,9 @@  QemuOptsList qemu_chardev_opts = {
         },{
             .name = "mux",
             .type = QEMU_OPT_BOOL,
+        },{
+            .name = "signal",
+            .type = QEMU_OPT_BOOL,
         },
         { /* end if list */ }
     },