qemu-options.hx: Improve documentation of chardev multiplexing mode

The current documentation of chardev mux=on is rather brief and opaque;
expand it to hopefully be a bit more helpful.

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Message-Id: <1455643738-6068-1-git-send-email-peter.maydell@linaro.org>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
Peter Maydell 2016-02-16 17:28:58 +00:00 committed by Paolo Bonzini
parent dd5e38b19d
commit a40db1b36b
2 changed files with 63 additions and 12 deletions

View File

@ -158,7 +158,8 @@ TODO (no longer available)
* pcsys_introduction:: Introduction * pcsys_introduction:: Introduction
* pcsys_quickstart:: Quick Start * pcsys_quickstart:: Quick Start
* sec_invocation:: Invocation * sec_invocation:: Invocation
* pcsys_keys:: Keys * pcsys_keys:: Keys in the graphical frontends
* mux_keys:: Keys in the character backend multiplexer
* pcsys_monitor:: QEMU Monitor * pcsys_monitor:: QEMU Monitor
* disk_images:: Disk Images * disk_images:: Disk Images
* pcsys_network:: Network emulation * pcsys_network:: Network emulation
@ -272,7 +273,7 @@ targets do not need a disk image.
@c man end @c man end
@node pcsys_keys @node pcsys_keys
@section Keys @section Keys in the graphical frontends
@c man begin OPTIONS @c man begin OPTIONS
@ -322,15 +323,23 @@ Toggle mouse and keyboard grab.
In the virtual consoles, you can use @key{Ctrl-Up}, @key{Ctrl-Down}, In the virtual consoles, you can use @key{Ctrl-Up}, @key{Ctrl-Down},
@key{Ctrl-PageUp} and @key{Ctrl-PageDown} to move in the back log. @key{Ctrl-PageUp} and @key{Ctrl-PageDown} to move in the back log.
@kindex Ctrl-a h @c man end
During emulation, if you are using the @option{-nographic} option, use
@key{Ctrl-a h} to get terminal commands: @node mux_keys
@section Keys in the character backend multiplexer
@c man begin OPTIONS
During emulation, if you are using a character backend multiplexer
(which is the default if you are using @option{-nographic}) then
several commands are available via an escape sequence. These
key sequences all start with an escape character, which is @key{Ctrl-a}
by default, but can be changed with @option{-echr}. The list below assumes
you're using the default.
@table @key @table @key
@item Ctrl-a h @item Ctrl-a h
@kindex Ctrl-a h @kindex Ctrl-a h
@item Ctrl-a ?
@kindex Ctrl-a ?
Print this help Print this help
@item Ctrl-a x @item Ctrl-a x
@kindex Ctrl-a x @kindex Ctrl-a x
@ -346,10 +355,11 @@ Toggle console timestamps
Send break (magic sysrq in Linux) Send break (magic sysrq in Linux)
@item Ctrl-a c @item Ctrl-a c
@kindex Ctrl-a c @kindex Ctrl-a c
Switch between console and monitor Rotate between the frontends connected to the multiplexer (usually
this switches between the monitor and the console)
@item Ctrl-a Ctrl-a @item Ctrl-a Ctrl-a
@kindex Ctrl-a a @kindex Ctrl-a Ctrl-a
Send Ctrl-a Send the escape character to the frontend
@end table @end table
@c man end @c man end

View File

@ -2162,8 +2162,49 @@ All devices must have an id, which can be any string up to 127 characters long.
It is used to uniquely identify this device in other command line directives. It is used to uniquely identify this device in other command line directives.
A character device may be used in multiplexing mode by multiple front-ends. A character device may be used in multiplexing mode by multiple front-ends.
The key sequence of @key{Control-a} and @key{c} will rotate the input focus Specify @option{mux=on} to enable this mode.
between attached front-ends. Specify @option{mux=on} to enable this mode. A multiplexer is a "1:N" device, and here the "1" end is your specified chardev
backend, and the "N" end is the various parts of QEMU that can talk to a chardev.
If you create a chardev with @option{id=myid} and @option{mux=on}, QEMU will
create a multiplexer with your specified ID, and you can then configure multiple
front ends to use that chardev ID for their input/output. Up to four different
front ends can be connected to a single multiplexed chardev. (Without
multiplexing enabled, a chardev can only be used by a single front end.)
For instance you could use this to allow a single stdio chardev to be used by
two serial ports and the QEMU monitor:
@example
-chardev stdio,mux=on,id=char0 \
-mon chardev=char0,mode=readline,default \
-serial chardev:char0 \
-serial chardev:char0
@end example
You can have more than one multiplexer in a system configuration; for instance
you could have a TCP port multiplexed between UART 0 and UART 1, and stdio
multiplexed between the QEMU monitor and a parallel port:
@example
-chardev stdio,mux=on,id=char0 \
-mon chardev=char0,mode=readline,default \
-parallel chardev:char0 \
-chardev tcp,...,mux=on,id=char1 \
-serial chardev:char1 \
-serial chardev:char1
@end example
When you're using a multiplexed character device, some escape sequences are
interpreted in the input. @xref{mux_keys, Keys in the character backend
multiplexer}.
Note that some other command line options may implicitly create multiplexed
character backends; for instance @option{-serial mon:stdio} creates a
multiplexed stdio backend connected to the serial port and the QEMU monitor,
and @option{-nographic} also multiplexes the console and the monitor to
stdio.
There is currently no support for multiplexing in the other direction
(where a single QEMU front end takes input and output from multiple chardevs).
Every backend supports the @option{logfile} option, which supplies the path Every backend supports the @option{logfile} option, which supplies the path
to a file to record all data transmitted via the backend. The @option{logappend} to a file to record all data transmitted via the backend. The @option{logappend}