[PATCH v9 12/14] termios: unify the naming of the termios speed fields

H. Peter Anvin hpa@zytor.com
Thu Jun 12 01:35:43 GMT 2025


From: "H. Peter Anvin (Intel)" <hpa@zytor.com>

The generic code has __ispeed and __ospeed; Linux has c_ispeed and
c_ospeed. Use an anonymous union member to allow both set of names on
all platforms.

Reviewed-by: Adhemerval Zanella  <adhemerval.zanella@linaro.org>
Signed-off-by: H. Peter Anvin (Intel) <hpa@zytor.com>
---
 bits/termios.h                                      | 11 ++++++++++-
 sysdeps/unix/sysv/linux/alpha/bits/termios-struct.h | 11 +++++++++--
 sysdeps/unix/sysv/linux/bits/termios-struct.h       | 11 +++++++++--
 3 files changed, 28 insertions(+), 5 deletions(-)

diff --git a/bits/termios.h b/bits/termios.h
index 8f0b817dbf4c..798012cb8ebc 100644
--- a/bits/termios.h
+++ b/bits/termios.h
@@ -286,7 +286,16 @@ struct termios
   cc_t c_cc[NCCS];
 
   /* Input and output baud rates.  */
-  speed_t __ispeed, __ospeed;
+  __extension__ union {
+    speed_t __ispeed;
+    speed_t c_ispeed;
+  };
+#define _HAVE_STRUCT_TERMIOS_C_ISPEED 1
+  __extension__ union {
+    speed_t __ospeed;
+    speed_t c_ospeed;
+  };
+#define _HAVE_STRUCT_TERMIOS_C_OSPEED 1
 };
 
 #define _IOT_termios /* Hurd ioctl type field.  */ \
diff --git a/sysdeps/unix/sysv/linux/alpha/bits/termios-struct.h b/sysdeps/unix/sysv/linux/alpha/bits/termios-struct.h
index de4d5fc0ed01..f50e9ef6e34f 100644
--- a/sysdeps/unix/sysv/linux/alpha/bits/termios-struct.h
+++ b/sysdeps/unix/sysv/linux/alpha/bits/termios-struct.h
@@ -30,8 +30,15 @@ struct termios
     tcflag_t c_lflag;		/* local mode flags */
     cc_t c_cc[NCCS];		/* control characters */
     cc_t c_line;		/* line discipline (== c_cc[33]) */
-    speed_t c_ispeed;		/* input speed */
-    speed_t c_ospeed;		/* output speed */
+    /* Input and output baud rates.  */
+    __extension__ union {
+      speed_t __ispeed;
+      speed_t c_ispeed;
+    };
 #define _HAVE_STRUCT_TERMIOS_C_ISPEED 1
+    __extension__ union {
+      speed_t __ospeed;
+      speed_t c_ospeed;
+    };
 #define _HAVE_STRUCT_TERMIOS_C_OSPEED 1
   };
diff --git a/sysdeps/unix/sysv/linux/bits/termios-struct.h b/sysdeps/unix/sysv/linux/bits/termios-struct.h
index 4c501a54b058..0aba1a446e73 100644
--- a/sysdeps/unix/sysv/linux/bits/termios-struct.h
+++ b/sysdeps/unix/sysv/linux/bits/termios-struct.h
@@ -29,8 +29,15 @@ struct termios
     tcflag_t c_lflag;		/* local mode flags */
     cc_t c_line;			/* line discipline */
     cc_t c_cc[NCCS];		/* control characters */
-    speed_t c_ispeed;		/* input speed */
-    speed_t c_ospeed;		/* output speed */
+    /* Input and output baud rates.  */
+    __extension__ union {
+      speed_t __ispeed;
+      speed_t c_ispeed;
+    };
 #define _HAVE_STRUCT_TERMIOS_C_ISPEED 1
+    __extension__ union {
+      speed_t __ospeed;
+      speed_t c_ospeed;
+    };
 #define _HAVE_STRUCT_TERMIOS_C_OSPEED 1
   };
-- 
2.49.0



More information about the Libc-alpha mailing list