Re: [PATCH 06/33] tty: vt: use sane types for userspace API

Nicolas Pitre
2025-06-11T14:38:30Z

On Wed, 11 Jun 2025, Jiri Slaby (SUSE) wrote:

> As discussed earlier (see the Link below), use the preferred ioctl types
> in vt.h (__u8, __u16, ...).
>
> These types are already used for the new VT_GETCONSIZECSRPOS.
> Therefore, the necessary includes are already present. Since now, the
> types are used for every structure defined in the header now.
>
> Note the kernel is built with -funsigned-char, therefore 'char' becomes
> '__u8' in here.
>
> Signed-off-by: Jiri Slaby (SUSE) <jirislaby@kernel.org>
> Cc: Nicolas Pitre <nico@fluxnic.net>
> Link: https://lore.kernel.org/all/p7p83sq1-4ro2-o924-s9o2-30spr74n076o@syhkavp.arg/

Reviewed-by: Nicolas Pitre <npitre@baylibre.com>

> ---
> include/uapi/linux/vt.h | 44 ++++++++++++++++++++---------------------
> 1 file changed, 22 insertions(+), 22 deletions(-)
>
> diff --git a/include/uapi/linux/vt.h b/include/uapi/linux/vt.h
> index e5b0c492aa18..714483d68c69 100644
> --- a/include/uapi/linux/vt.h
> +++ b/include/uapi/linux/vt.h
> @@ -19,11 +19,11 @@
> #define VT_OPENQRY 0x5600 /* find available vt */
>
> struct vt_mode {
> - char mode; /* vt mode */
> - char waitv; /* if set, hang on writes if not active */
> - short relsig; /* signal to raise on release req */
> - short acqsig; /* signal to raise on acquisition */
> - short frsig; /* unused (set to 0) */
> + __u8 mode; /* vt mode */
> + __u8 waitv; /* if set, hang on writes if not active */
> + __s16 relsig; /* signal to raise on release req */
> + __s16 acqsig; /* signal to raise on acquisition */
> + __s16 frsig; /* unused (set to 0) */
> };
> #define VT_GETMODE 0x5601 /* get mode of active vt */
> #define VT_SETMODE 0x5602 /* set mode of active vt */
> @@ -32,9 +32,9 @@ struct vt_mode {
> #define VT_ACKACQ 0x02 /* acknowledge switch */
>
> struct vt_stat {
> - unsigned short v_active; /* active vt */
> - unsigned short v_signal; /* signal to send */
> - unsigned short v_state; /* vt bitmask */
> + __u16 v_active; /* active vt */
> + __u16 v_signal; /* signal to send */
> + __u16 v_state; /* vt bitmask */
> };
> #define VT_GETSTATE 0x5603 /* get global vt state info */
> #define VT_SENDSIG 0x5604 /* signal to send to bitmask of vts */
> @@ -46,19 +46,19 @@ struct vt_stat {
> #define VT_DISALLOCATE 0x5608 /* free memory associated to vt */
>
> struct vt_sizes {
> - unsigned short v_rows; /* number of rows */
> - unsigned short v_cols; /* number of columns */
> - unsigned short v_scrollsize; /* number of lines of scrollback */
> + __u16 v_rows; /* number of rows */
> + __u16 v_cols; /* number of columns */
> + __u16 v_scrollsize; /* number of lines of scrollback */
> };
> #define VT_RESIZE 0x5609 /* set kernel's idea of screensize */
>
> struct vt_consize {
> - unsigned short v_rows; /* number of rows */
> - unsigned short v_cols; /* number of columns */
> - unsigned short v_vlin; /* number of pixel rows on screen */
> - unsigned short v_clin; /* number of pixel rows per character */
> - unsigned short v_vcol; /* number of pixel columns on screen */
> - unsigned short v_ccol; /* number of pixel columns per character */
> + __u16 v_rows; /* number of rows */
> + __u16 v_cols; /* number of columns */
> + __u16 v_vlin; /* number of pixel rows on screen */
> + __u16 v_clin; /* number of pixel rows per character */
> + __u16 v_vcol; /* number of pixel columns on screen */
> + __u16 v_ccol; /* number of pixel columns per character */
> };
> #define VT_RESIZEX 0x560A /* set kernel's idea of screensize + more */
> #define VT_LOCKSWITCH 0x560B /* disallow vt switching */
> @@ -66,21 +66,21 @@ struct vt_consize {
> #define VT_GETHIFONTMASK 0x560D /* return hi font mask */
>
> struct vt_event {
> - unsigned int event;
> + __u32 event;
> #define VT_EVENT_SWITCH 0x0001 /* Console switch */
> #define VT_EVENT_BLANK 0x0002 /* Screen blank */
> #define VT_EVENT_UNBLANK 0x0004 /* Screen unblank */
> #define VT_EVENT_RESIZE 0x0008 /* Resize display */
> #define VT_MAX_EVENT 0x000F
> - unsigned int oldev; /* Old console */
> - unsigned int newev; /* New console (if changing) */
> - unsigned int pad[4]; /* Padding for expansion */
> + __u32 oldev; /* Old console */
> + __u32 newev; /* New console (if changing) */
> + __u32 pad[4]; /* Padding for expansion */
> };
>
> #define VT_WAITEVENT 0x560E /* Wait for an event */
>
> struct vt_setactivate {
> - unsigned int console;
> + __u32 console;
> struct vt_mode mode;
> };
>
> --
> 2.49.0
>
>