aboutsummaryrefslogtreecommitdiff
path: root/system
diff options
context:
space:
mode:
authorMarc-André Lureau <marcandre.lureau@redhat.com>2023-09-05 23:18:08 +0400
committerMarc-André Lureau <marcandre.lureau@redhat.com>2023-11-07 14:04:25 +0400
commit1bec1cc0da497e55c16e2a7b50f94cdb2a02197f (patch)
tree1da84c3a57cd2665e4d3c5d9e8fe2815054182d8 /system
parent2aeaa4b2000d95139d5dfae8ca5061c1b19e749e (diff)
downloadqemu-1bec1cc0da497e55c16e2a7b50f94cdb2a02197f.zip
qemu-1bec1cc0da497e55c16e2a7b50f94cdb2a02197f.tar.gz
qemu-1bec1cc0da497e55c16e2a7b50f94cdb2a02197f.tar.bz2
ui/console: allow to override the default VC
If a display is backed by a specialized VC, allow to override the default "vc:80Cx24C". As suggested by Paolo, if the display doesn't implement a VC (get_vc() returns NULL), use a fallback that will use a muxed console on stdio. This changes the behaviour of "qemu -display none", to create a muxed serial/monitor by default (on TTY & not daemonized). Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com> Reviewed-by: Thomas Huth <thuth@redhat.com>
Diffstat (limited to 'system')
-rw-r--r--system/vl.c27
1 files changed, 17 insertions, 10 deletions
diff --git a/system/vl.c b/system/vl.c
index cf46e43..bd7fad7 100644
--- a/system/vl.c
+++ b/system/vl.c
@@ -1372,6 +1372,7 @@ static void qemu_setup_display(void)
static void qemu_create_default_devices(void)
{
MachineClass *machine_class = MACHINE_GET_CLASS(current_machine);
+ const char *vc = qemu_display_get_vc(&dpy);
if (is_daemonized()) {
/* According to documentation and historically, -nographic redirects
@@ -1390,24 +1391,30 @@ static void qemu_create_default_devices(void)
}
}
- if (nographic) {
- if (default_parallel)
+ if (nographic || (!vc && !is_daemonized() && isatty(STDOUT_FILENO))) {
+ if (default_parallel) {
add_device_config(DEV_PARALLEL, "null");
+ }
if (default_serial && default_monitor) {
add_device_config(DEV_SERIAL, "mon:stdio");
} else {
- if (default_serial)
+ if (default_serial) {
add_device_config(DEV_SERIAL, "stdio");
- if (default_monitor)
+ }
+ if (default_monitor) {
monitor_parse("stdio", "readline", false);
+ }
}
} else {
- if (default_serial)
- add_device_config(DEV_SERIAL, "vc:80Cx24C");
- if (default_parallel)
- add_device_config(DEV_PARALLEL, "vc:80Cx24C");
- if (default_monitor)
- monitor_parse("vc:80Cx24C", "readline", false);
+ if (default_serial) {
+ add_device_config(DEV_SERIAL, vc ?: "null");
+ }
+ if (default_parallel) {
+ add_device_config(DEV_PARALLEL, vc ?: "null");
+ }
+ if (default_monitor && vc) {
+ monitor_parse(vc, "readline", false);
+ }
}
if (default_net) {