From: Paolo Bonzini <pbonzini@redhat.com>
To: Michael Tokarev <mjt@tls.msk.ru>
Cc: Anthony Liguori <aliguori@us.ibm.com>, qemu-devel@nongnu.org
Subject: Re: [Qemu-devel] [PATCH v2 1/2] trap signals for "-serial mon:stdio"
Date: Wed, 03 Jul 2013 09:13:58 +0200 [thread overview]
Message-ID: <51D3CF36.2050302@redhat.com> (raw)
In-Reply-To: <1372833874-21416-1-git-send-email-mjt@msgid.tls.msk.ru>
Il 03/07/2013 08:44, Michael Tokarev ha scritto:
> From: Paolo Bonzini <pbonzini@redhat.com>
>
> With mon:stdio you can exit the VM by switching to the monitor and
> sending the "quit" command. It is then useful to pass Ctrl-C to the
> VM instead of exiting.
>
> This in turn lets us stop tying the default signal handling behavior
> to -nographic, removing gratuitous differences between "-display none"
> and "-nographic".
>
> This patch changes behavior for "-display none -serial mon:stdio", as
> expected, but not for "-display none -serial stdio".
>
> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
> Signed-off-by: Michael Tokarev <mjt@tls.msk.ru>
> ---
> V2: added code comments and documentation fixes by mjt
> (hopefully the s-o-b stands still)
>
> qemu-char.c | 13 +++++++++----
> qemu-options.hx | 8 +++++---
> 2 files changed, 14 insertions(+), 7 deletions(-)
>
> diff --git a/qemu-char.c b/qemu-char.c
> index 6cec5d7..18c42a3 100644
> --- a/qemu-char.c
> +++ b/qemu-char.c
> @@ -926,7 +926,6 @@ static void qemu_chr_set_echo_stdio(CharDriverState *chr, bool echo)
> tty.c_cc[VMIN] = 1;
> tty.c_cc[VTIME] = 0;
> }
> - /* if graphical mode, we allow Ctrl-C handling */
> if (!stdio_allow_signal)
> tty.c_lflag &= ~ISIG;
>
> @@ -955,7 +954,6 @@ static CharDriverState *qemu_chr_open_stdio(ChardevStdio *opts)
> chr = qemu_chr_open_fd(0, 1);
> chr->chr_close = qemu_chr_close_stdio;
> chr->chr_set_echo = qemu_chr_set_echo_stdio;
> - stdio_allow_signal = display_type != DT_NOGRAPHIC;
> if (opts->has_signal) {
> stdio_allow_signal = opts->signal;
> }
> @@ -2932,6 +2930,14 @@ QemuOpts *qemu_chr_parse_compat(const char *label, const char *filename)
> if (strstart(filename, "mon:", &p)) {
> filename = p;
> qemu_opt_set(opts, "mux", "on");
> + if (strcmp(filename, "stdio") == 0) {
> + /* Monitor is muxed to stdio: do not exit on Ctrl+C by default
> + * but pass it to the guest. Handle this only for compat syntax,
> + * for -chardev syntax we have special option for this.
> + * This is what -nographic did, redirecting+muxing serial+monitor
> + * to stdio causing Ctrl+C to be passed to guest. */
> + qemu_opt_set(opts, "signal", "off");
> + }
> }
>
> if (strcmp(filename, "null") == 0 ||
> @@ -3060,8 +3066,7 @@ static void qemu_chr_parse_stdio(QemuOpts *opts, ChardevBackend *backend,
> {
> backend->stdio = g_new0(ChardevStdio, 1);
> backend->stdio->has_signal = true;
> - backend->stdio->signal =
> - qemu_opt_get_bool(opts, "signal", display_type != DT_NOGRAPHIC);
> + backend->stdio->signal = qemu_opt_get_bool(opts, "signal", true);
> }
>
> static void qemu_chr_parse_serial(QemuOpts *opts, ChardevBackend *backend,
> diff --git a/qemu-options.hx b/qemu-options.hx
> index 137a39b..d676b03 100644
> --- a/qemu-options.hx
> +++ b/qemu-options.hx
> @@ -842,7 +842,8 @@ STEXI
> Normally, QEMU uses SDL to display the VGA output. With this option,
> you can totally disable graphical output so that QEMU is a simple
> command line application. The emulated serial port is redirected on
> -the console. Therefore, you can still use QEMU to debug a Linux kernel
> +the console and muxed with the monitor (unless redirected elsewhere
> +explicitly).
By default, the emulated serial port and the monitor are multiplexed on
the console; @option{-serial} and @option{-monitor} can be used to
change this default.
Therefore, you can still use QEMU to debug a Linux kernel
> with a serial console.
> ETEXI
>
> @@ -2485,14 +2486,15 @@ same as if you had specified @code{-serial tcp} except the unix domain socket
> @item mon:@var{dev_string}
> This is a special option to allow the monitor to be multiplexed onto
> another serial port. The monitor is accessed with key sequence of
> -@key{Control-a} and then pressing @key{c}. See monitor access
> -@ref{pcsys_keys} in the -nographic section for more keys.
> +@key{Control-a} and then pressing @key{c}.
> @var{dev_string} should be any one of the serial devices specified
> above. An example to multiplex the monitor onto a telnet server
> listening on port 4444 would be:
> @table @code
> @item -serial mon:telnet::4444,server,nowait
> @end table
> +When monitor is multiplexed to stdio this way, Ctrl+C will not terminate
> +guest anymore but will be passed to the guest as is.
will not terminate QEMU anymore...
>
> @item braille
> Braille device. This will use BrlAPI to display the braille output on a real
>
Also, there is another reference to -nographic here:
@item -echr @var{numeric_ascii_value}
@findex -echr
Change the escape character used for switching to the monitor when using
monitor and serial sharing. The default is @code{0x01} when using the
@code{-nographic} option. @code{0x01} is equal to pressing
@code{Control-a}. You can select a different character from the ascii
control keys where 1 through 26 map to Control-a through Control-z. For
instance you could use the either of the following to change the escape
character to Control-t.
You could remove "when using the @code{-nographic} option" from this
paragraph.
Paolo
next prev parent reply other threads:[~2013-07-03 7:14 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-07-03 6:44 [Qemu-devel] [PATCH v2 1/2] trap signals for "-serial mon:stdio" Michael Tokarev
2013-07-03 6:44 ` [Qemu-devel] [PATCH v2 2/2] display: stop using DT_NOGRAPHIC, use DT_NONE Michael Tokarev
2013-07-03 7:08 ` [Qemu-devel] [PATCH v2 1/2] trap signals for "-serial mon:stdio" Paolo Bonzini
2013-07-03 7:13 ` Paolo Bonzini [this message]
2013-07-03 8:09 ` Michael Tokarev
2013-07-03 8:13 ` Michael Tokarev
2013-07-03 8:21 ` Paolo Bonzini
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=51D3CF36.2050302@redhat.com \
--to=pbonzini@redhat.com \
--cc=aliguori@us.ibm.com \
--cc=mjt@tls.msk.ru \
--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.