[PATCH] linux/termio: remove <termio.h> and struct termio

H. Peter Anvin hpa@zytor.com
Thu Mar 27 20:59:54 GMT 2025


The <termio.h> interface is absolutely ancient: it was obsoleted by
<termios.h> already in the first version of POSIX (1988) and thus
predates the very first version of Linux. Unfortunately, some constant
macros are used both by <termio.h> and <termios.h>; particularly
problematic is the baud rate constants since the termio interface
*requires* that the baud rate is set via an enumeration as part of
c_cflag.

In preparation of revamping the termios interface to support the
arbitrary baud rate capability that the Linux kernel has supported
since 2008, remove <termio.h> in the hope that no one still uses this
archaic interface.

Note that there is no actual code in glibc to support termio: it is
purely an unabstracted ioctl() interface.
---
 sysdeps/unix/sysv/linux/Makefile           |  6 ------
 sysdeps/unix/sysv/linux/bits/ioctl-types.h | 11 -----------
 sysdeps/unix/sysv/linux/termio.h           |  6 ------
 3 files changed, 23 deletions(-)
 delete mode 100644 sysdeps/unix/sysv/linux/termio.h

diff --git a/sysdeps/unix/sysv/linux/Makefile b/sysdeps/unix/sysv/linux/Makefile
index dcd87b295e8d..ebcf820403ff 100644
--- a/sysdeps/unix/sysv/linux/Makefile
+++ b/sysdeps/unix/sysv/linux/Makefile
@@ -506,12 +506,6 @@ sysdep_headers += \
   # sysdep_headers
 endif
 
-ifeq ($(subdir),termios)
-sysdep_headers += \
-  termio.h \
-  # sysdep_headers
-endif
-
 ifeq ($(subdir),posix)
 sysdep_headers += \
   bits/initspin.h \
diff --git a/sysdeps/unix/sysv/linux/bits/ioctl-types.h b/sysdeps/unix/sysv/linux/bits/ioctl-types.h
index cc2c9d7af4ba..e8e5084f1e11 100644
--- a/sysdeps/unix/sysv/linux/bits/ioctl-types.h
+++ b/sysdeps/unix/sysv/linux/bits/ioctl-types.h
@@ -32,17 +32,6 @@ struct winsize
     unsigned short int ws_ypixel;
   };
 
-#define NCC 8
-struct termio
-  {
-    unsigned short int c_iflag;		/* input mode flags */
-    unsigned short int c_oflag;		/* output mode flags */
-    unsigned short int c_cflag;		/* control mode flags */
-    unsigned short int c_lflag;		/* local mode flags */
-    unsigned char c_line;		/* line discipline */
-    unsigned char c_cc[NCC];		/* control characters */
-};
-
 /* modem lines */
 #define TIOCM_LE	0x001
 #define TIOCM_DTR	0x002
diff --git a/sysdeps/unix/sysv/linux/termio.h b/sysdeps/unix/sysv/linux/termio.h
deleted file mode 100644
index 0e610f0c569c..000000000000
--- a/sysdeps/unix/sysv/linux/termio.h
+++ /dev/null
@@ -1,6 +0,0 @@
-/* Compatible <termio.h> for old `struct termio' ioctl interface.
-   This is obsolete; use the POSIX.1 `struct termios' interface
-   defined in <termios.h> instead.  */
-
-#include <termios.h>
-#include <sys/ioctl.h>
-- 
2.49.0



More information about the Libc-alpha mailing list