chardev: add CHR_EVENT_RESIZE

Add a new chardev event, CHR_EVENT_RESIZE, which a backend should
trigger if it detects the size of the connected terminal changed.

Signed-off-by: Szymon Lukasz <noh4hss@gmail.com>
[Filip: add note that only the focused frontend gets the event]
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
Signed-off-by: Filip Hejsek <filip.hejsek@gmail.com>
Acked-by: Michael S. Tsirkin <mst@redhat.com>
Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Message-ID: <20261012-console-resize-v10-2-2c3b10d829b3@gmail.com>
This commit is contained in:
Szymon Lukasz authored and Marc-André Lureau committed 2026-10-13 17:22:48 +04:00
1 parent 0c859d3441
commit 13d2f5e4b0
18 files changed
+23

No files matched your search

+1
View File
@@ -173,6 +173,7 @@ static void cryptodev_vhost_user_event(void *opaque, QEMUChrEvent event)
case CHR_EVENT_BREAK: case CHR_EVENT_BREAK:
case CHR_EVENT_MUX_IN: case CHR_EVENT_MUX_IN:
case CHR_EVENT_MUX_OUT: case CHR_EVENT_MUX_OUT:
case CHR_EVENT_RESIZE:
/* Ignore */ /* Ignore */
break; break;
} }
+1
View File
@@ -75,6 +75,7 @@ void qemu_chr_be_event(Chardev *s, QEMUChrEvent event)
case CHR_EVENT_BREAK: case CHR_EVENT_BREAK:
case CHR_EVENT_MUX_IN: case CHR_EVENT_MUX_IN:
case CHR_EVENT_MUX_OUT: case CHR_EVENT_MUX_OUT:
case CHR_EVENT_RESIZE:
/* Ignore */ /* Ignore */
break; break;
} }
+1
View File
@@ -441,6 +441,7 @@ static void vhost_user_blk_event(void *opaque, QEMUChrEvent event)
case CHR_EVENT_BREAK: case CHR_EVENT_BREAK:
case CHR_EVENT_MUX_IN: case CHR_EVENT_MUX_IN:
case CHR_EVENT_MUX_OUT: case CHR_EVENT_MUX_OUT:
case CHR_EVENT_RESIZE:
/* Ignore */ /* Ignore */
break; break;
} }
+1
View File
@@ -169,6 +169,7 @@ static void chr_event(void *opaque, QEMUChrEvent event)
case CHR_EVENT_BREAK: case CHR_EVENT_BREAK:
case CHR_EVENT_MUX_IN: case CHR_EVENT_MUX_IN:
case CHR_EVENT_MUX_OUT: case CHR_EVENT_MUX_OUT:
case CHR_EVENT_RESIZE:
/* Ignore */ /* Ignore */
break; break;
} }
+1
View File
@@ -165,6 +165,7 @@ static void chr_event(void *opaque, QEMUChrEvent event)
case CHR_EVENT_BREAK: case CHR_EVENT_BREAK:
case CHR_EVENT_MUX_IN: case CHR_EVENT_MUX_IN:
case CHR_EVENT_MUX_OUT: case CHR_EVENT_MUX_OUT:
case CHR_EVENT_RESIZE:
/* Ignore */ /* Ignore */
break; break;
} }
+1
View File
@@ -241,6 +241,7 @@ static void vu_media_event(void *opaque, QEMUChrEvent event)
case CHR_EVENT_BREAK: case CHR_EVENT_BREAK:
case CHR_EVENT_MUX_IN: case CHR_EVENT_MUX_IN:
case CHR_EVENT_MUX_OUT: case CHR_EVENT_MUX_OUT:
case CHR_EVENT_RESIZE:
/* Ignore */ /* Ignore */
break; break;
} }
+1
View File
@@ -436,6 +436,7 @@ static void chr_event(void *opaque, QEMUChrEvent event)
case CHR_EVENT_BREAK: case CHR_EVENT_BREAK:
case CHR_EVENT_MUX_IN: case CHR_EVENT_MUX_IN:
case CHR_EVENT_MUX_OUT: case CHR_EVENT_MUX_OUT:
case CHR_EVENT_RESIZE:
/* Ignore */ /* Ignore */
break; break;
} }
+1
View File
@@ -225,6 +225,7 @@ static void vhost_user_scsi_event(void *opaque, QEMUChrEvent event)
case CHR_EVENT_BREAK: case CHR_EVENT_BREAK:
case CHR_EVENT_MUX_IN: case CHR_EVENT_MUX_IN:
case CHR_EVENT_MUX_OUT: case CHR_EVENT_MUX_OUT:
case CHR_EVENT_RESIZE:
/* Ignore */ /* Ignore */
break; break;
} }
+1
View File
@@ -323,6 +323,7 @@ static void ccid_card_vscard_event(void *opaque, QEMUChrEvent event)
case CHR_EVENT_MUX_IN: case CHR_EVENT_MUX_IN:
case CHR_EVENT_MUX_OUT: case CHR_EVENT_MUX_OUT:
case CHR_EVENT_CLOSED: case CHR_EVENT_CLOSED:
case CHR_EVENT_RESIZE:
/* Ignore */ /* Ignore */
break; break;
} }
+1
View File
@@ -576,6 +576,7 @@ static void usb_serial_event(void *opaque, QEMUChrEvent event)
break; break;
case CHR_EVENT_MUX_IN: case CHR_EVENT_MUX_IN:
case CHR_EVENT_MUX_OUT: case CHR_EVENT_MUX_OUT:
case CHR_EVENT_RESIZE:
/* Ignore */ /* Ignore */
break; break;
} }
+1
View File
@@ -1390,6 +1390,7 @@ static void usbredir_chardev_event(void *opaque, QEMUChrEvent event)
case CHR_EVENT_BREAK: case CHR_EVENT_BREAK:
case CHR_EVENT_MUX_IN: case CHR_EVENT_MUX_IN:
case CHR_EVENT_MUX_OUT: case CHR_EVENT_MUX_OUT:
case CHR_EVENT_RESIZE:
/* Ignore */ /* Ignore */
break; break;
} }
+1
View File
@@ -277,6 +277,7 @@ static void vub_event(void *opaque, QEMUChrEvent event)
case CHR_EVENT_BREAK: case CHR_EVENT_BREAK:
case CHR_EVENT_MUX_IN: case CHR_EVENT_MUX_IN:
case CHR_EVENT_MUX_OUT: case CHR_EVENT_MUX_OUT:
case CHR_EVENT_RESIZE:
/* Ignore */ /* Ignore */
break; break;
} }
+1
View File
@@ -215,6 +215,7 @@ static void vu_scmi_event(void *opaque, QEMUChrEvent event)
case CHR_EVENT_BREAK: case CHR_EVENT_BREAK:
case CHR_EVENT_MUX_IN: case CHR_EVENT_MUX_IN:
case CHR_EVENT_MUX_OUT: case CHR_EVENT_MUX_OUT:
case CHR_EVENT_RESIZE:
/* Ignore */ /* Ignore */
break; break;
} }
+6
View File
@@ -22,6 +22,12 @@ typedef enum {
CHR_EVENT_OPENED, /* new connection established */ CHR_EVENT_OPENED, /* new connection established */
CHR_EVENT_MUX_IN, /* mux-focus was set to this terminal */ CHR_EVENT_MUX_IN, /* mux-focus was set to this terminal */
CHR_EVENT_MUX_OUT, /* mux-focus will move on */ CHR_EVENT_MUX_OUT, /* mux-focus will move on */
CHR_EVENT_RESIZE, /*
* the size of the terminal connected to
* the chardev has changed. NOTE: this event is only
* sent to the focused frontend, so you should also
* update the size on receiving CHR_EVENT_MUX_IN.
*/
CHR_EVENT_CLOSED /* connection closed. NOTE: currently this event CHR_EVENT_CLOSED /* connection closed. NOTE: currently this event
* is only bound to the read port of the chardev. * is only bound to the read port of the chardev.
* Normally the read port and write port of a * Normally the read port and write port of a
+1
View File
@@ -1587,6 +1587,7 @@ static void monitor_event(void *opaque, QEMUChrEvent event)
break; break;
case CHR_EVENT_BREAK: case CHR_EVENT_BREAK:
case CHR_EVENT_RESIZE:
/* Ignored */ /* Ignored */
break; break;
} }
+1
View File
@@ -663,6 +663,7 @@ static void monitor_qmp_event(void *opaque, QEMUChrEvent event)
case CHR_EVENT_BREAK: case CHR_EVENT_BREAK:
case CHR_EVENT_MUX_IN: case CHR_EVENT_MUX_IN:
case CHR_EVENT_MUX_OUT: case CHR_EVENT_MUX_OUT:
case CHR_EVENT_RESIZE:
/* Ignore */ /* Ignore */
break; break;
} }
+1
View File
@@ -428,6 +428,7 @@ static void passt_vhost_user_event(void *opaque, QEMUChrEvent event)
case CHR_EVENT_BREAK: case CHR_EVENT_BREAK:
case CHR_EVENT_MUX_IN: case CHR_EVENT_MUX_IN:
case CHR_EVENT_MUX_OUT: case CHR_EVENT_MUX_OUT:
case CHR_EVENT_RESIZE:
/* Ignore */ /* Ignore */
break; break;
} }
+1
View File
@@ -363,6 +363,7 @@ static void net_vhost_user_event(void *opaque, QEMUChrEvent event)
case CHR_EVENT_BREAK: case CHR_EVENT_BREAK:
case CHR_EVENT_MUX_IN: case CHR_EVENT_MUX_IN:
case CHR_EVENT_MUX_OUT: case CHR_EVENT_MUX_OUT:
case CHR_EVENT_RESIZE:
/* Ignore */ /* Ignore */
break; break;
} }