Patchwork [v2,06/12] termios: Consolidate Baud Rate Selection definitions

login
register
mail settings
Submitter Adhemerval Zanella Netto
Date Dec. 28, 2018, 1:09 a.m.
Message ID <20181228011001.22260-7-adhemerval.zanella@linaro.org>
Download mbox | patch
Permalink /patch/30884/
State New
Headers show

Comments

Adhemerval Zanella Netto - Dec. 28, 2018, 1:09 a.m.
This patch consolidates the termios symbolic constants used for baud rates
selection used along with speed_t on its own header.  The Linux generic
implementation values match the kernel UAPI and each architecture with
deviate values have their own implementation (in this case alpha and
powerpc).

No semantic change is expected, checked on a build against x86_64-linux-gnu,
alpha-linux-gnu, mips64-linux-gnu, and sparc64-linux-gnu.

	[BZ #23783]
	* sysdeps/unix/sysv/linux/Makefile (sysdep_headers): Add
	termios-baud.h.
	* sysdeps/unix/sysv/linux/bits/termios-baud.h: New file.
	* sysdeps/unix/sysv/linux/alpha/bits/termios-baud.h: Likewise.
	* sysdeps/unix/sysv/linux/powerpc/bits/termios-baud.h: Likewise.
	* sysdeps/unix/sysv/linux/alpha/bits/termios.h (B57600, B115200,
	B230400, B460800, B500000, B576000, B921600, B1000000, B1152000,
	B1500000, B2000000, B2500000, B3000000, B3500000, B4000000,
	__MAX_BAUD): Move to termios-baud.h.
	[__USE_MISC] (CBAUD, CBAUDEX): Likewise.
	* sysdeps/unix/sysv/linux/bits/termios.h: Likewise.
	* sysdeps/unix/sysv/linux/mips/bits/termios.h: Likewise.
	* sysdeps/unix/sysv/linux/powerpc/bits/termios.h: Likewise.
	* sysdeps/unix/sysv/linux/sparc/bits/termios.h: Likewise.
---
 sysdeps/unix/sysv/linux/Makefile              |  3 +-
 .../unix/sysv/linux/alpha/bits/termios-baud.h | 46 ++++++++++++++++++
 sysdeps/unix/sysv/linux/alpha/bits/termios.h  | 26 +---------
 sysdeps/unix/sysv/linux/bits/termios-baud.h   | 48 +++++++++++++++++++
 sysdeps/unix/sysv/linux/bits/termios.h        | 29 +----------
 sysdeps/unix/sysv/linux/mips/bits/termios.h   | 28 +----------
 .../sysv/linux/powerpc/bits/termios-baud.h    | 45 +++++++++++++++++
 .../unix/sysv/linux/powerpc/bits/termios.h    | 25 +---------
 sysdeps/unix/sysv/linux/sparc/bits/termios.h  | 30 +-----------
 9 files changed, 149 insertions(+), 131 deletions(-)
 create mode 100644 sysdeps/unix/sysv/linux/alpha/bits/termios-baud.h
 create mode 100644 sysdeps/unix/sysv/linux/bits/termios-baud.h
 create mode 100644 sysdeps/unix/sysv/linux/powerpc/bits/termios-baud.h
Siddhesh Poyarekar - Dec. 31, 2018, 3:45 p.m.
On 28/12/18 6:39 AM, Adhemerval Zanella wrote:
> This patch consolidates the termios symbolic constants used for baud rates
> selection used along with speed_t on its own header.  The Linux generic
> implementation values match the kernel UAPI and each architecture with
> deviate values have their own implementation (in this case alpha and
> powerpc).
> 
> No semantic change is expected, checked on a build against x86_64-linux-gnu,
> alpha-linux-gnu, mips64-linux-gnu, and sparc64-linux-gnu.
> 
> 	[BZ #23783]
> 	* sysdeps/unix/sysv/linux/Makefile (sysdep_headers): Add
> 	termios-baud.h.
> 	* sysdeps/unix/sysv/linux/bits/termios-baud.h: New file.
> 	* sysdeps/unix/sysv/linux/alpha/bits/termios-baud.h: Likewise.
> 	* sysdeps/unix/sysv/linux/powerpc/bits/termios-baud.h: Likewise.
> 	* sysdeps/unix/sysv/linux/alpha/bits/termios.h (B57600, B115200,
> 	B230400, B460800, B500000, B576000, B921600, B1000000, B1152000,
> 	B1500000, B2000000, B2500000, B3000000, B3500000, B4000000,
> 	__MAX_BAUD): Move to termios-baud.h.
> 	[__USE_MISC] (CBAUD, CBAUDEX): Likewise.
> 	* sysdeps/unix/sysv/linux/bits/termios.h: Likewise.
> 	* sysdeps/unix/sysv/linux/mips/bits/termios.h: Likewise.
> 	* sysdeps/unix/sysv/linux/powerpc/bits/termios.h: Likewise.
> 	* sysdeps/unix/sysv/linux/sparc/bits/termios.h: Likewise.

OK.

Siddhesh

Patch

diff --git a/sysdeps/unix/sysv/linux/Makefile b/sysdeps/unix/sysv/linux/Makefile
index 686b3e236b..e1ddbf9787 100644
--- a/sysdeps/unix/sysv/linux/Makefile
+++ b/sysdeps/unix/sysv/linux/Makefile
@@ -45,7 +45,8 @@  sysdep_headers += sys/mount.h sys/acct.h sys/sysctl.h \
 		  bits/procfs-prregset.h bits/mman-map-flags-generic.h \
 		  bits/msq-pad.h bits/sem-pad.h bits/shmlba.h bits/shm-pad.h \
 		  bits/termios-struct.h bits/termios-c_cc.h \
-		  bits/termios-c_iflag.h bits/termios-c_oflag.h
+		  bits/termios-c_iflag.h bits/termios-c_oflag.h \
+		  bits/termios-baud.h
 
 tests += tst-clone tst-clone2 tst-clone3 tst-fanotify tst-personality \
 	 tst-quota tst-sync_file_range tst-sysconf-iov_max tst-ttyname \
diff --git a/sysdeps/unix/sysv/linux/alpha/bits/termios-baud.h b/sysdeps/unix/sysv/linux/alpha/bits/termios-baud.h
new file mode 100644
index 0000000000..eba263a67d
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/alpha/bits/termios-baud.h
@@ -0,0 +1,46 @@ 
+/* termios baud rate selection definitions.  Linux/alpha version.
+   Copyright (C) 2018 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library.  If not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#ifndef _TERMIOS_H
+# error "Never include <bits/termios-baud.h> directly; use <termios.h> instead."
+#endif
+
+#ifdef __USE_MISC
+# define CBAUD	0000037
+# define CBAUDEX 0000000
+# define CMSPAR	  010000000000		/* mark or space (stick) parity */
+# define CRTSCTS  020000000000		/* flow control */
+#endif
+
+#define  B57600   00020
+#define  B115200  00021
+#define  B230400  00022
+#define  B460800  00023
+#define  B500000  00024
+#define  B576000  00025
+#define  B921600  00026
+#define  B1000000 00027
+#define  B1152000 00030
+#define  B1500000 00031
+#define  B2000000 00032
+#define  B2500000 00033
+#define  B3000000 00034
+#define  B3500000 00035
+#define  B4000000 00036
+
+#define __MAX_BAUD B4000000
diff --git a/sysdeps/unix/sysv/linux/alpha/bits/termios.h b/sysdeps/unix/sysv/linux/alpha/bits/termios.h
index 7259c1dd30..530dd48410 100644
--- a/sysdeps/unix/sysv/linux/alpha/bits/termios.h
+++ b/sysdeps/unix/sysv/linux/alpha/bits/termios.h
@@ -30,9 +30,6 @@  typedef unsigned int	tcflag_t;
 #include <bits/termios-c_oflag.h>
 
 /* c_cflag bit meaning */
-#ifdef __USE_MISC
-# define CBAUD	0000037
-#endif
 #define  B0	0000000		/* hang up */
 #define  B50	0000001
 #define  B75	0000002
@@ -52,25 +49,8 @@  typedef unsigned int	tcflag_t;
 #ifdef __USE_MISC
 # define EXTA B19200
 # define EXTB B38400
-# define CBAUDEX 0000000
 #endif
-#define  B57600   00020
-#define  B115200  00021
-#define  B230400  00022
-#define  B460800  00023
-#define  B500000  00024
-#define  B576000  00025
-#define  B921600  00026
-#define  B1000000 00027
-#define  B1152000 00030
-#define  B1500000 00031
-#define  B2000000 00032
-#define  B2500000 00033
-#define  B3000000 00034
-#define  B3500000 00035
-#define  B4000000 00036
-
-#define __MAX_BAUD B4000000
+#include <bits/termios-baud.h>
 
 #define CSIZE	00001400
 #define   CS5	00000000
@@ -85,10 +65,6 @@  typedef unsigned int	tcflag_t;
 #define HUPCL	00040000
 
 #define CLOCAL	00100000
-#ifdef __USE_MISC
-# define CMSPAR	  010000000000		/* mark or space (stick) parity */
-# define CRTSCTS  020000000000		/* flow control */
-#endif
 
 /* c_lflag bits */
 #define ISIG	0x00000080
diff --git a/sysdeps/unix/sysv/linux/bits/termios-baud.h b/sysdeps/unix/sysv/linux/bits/termios-baud.h
new file mode 100644
index 0000000000..7f7f9c511c
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/bits/termios-baud.h
@@ -0,0 +1,48 @@ 
+/* termios baud rate selection definitions.  Linux/generic version.
+   Copyright (C) 2018 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library.  If not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#ifndef _TERMIOS_H
+# error "Never include <bits/termios-baud.h> directly; use <termios.h> instead."
+#endif
+
+#ifdef __USE_MISC
+# define CBAUD	 000000010017 /* Baud speed mask (not in POSIX).  */
+# define CBAUDEX 000000010000 /* Extra baud speed mask, included in CBAUD.
+				 (not in POSIX).  */
+# define CIBAUD	 002003600000 /* Input baud rate (not used).  */
+# define CMSPAR  010000000000 /* Mark or space (stick) parity.  */
+# define CRTSCTS 020000000000 /* Flow control.  */
+#endif
+
+/* Extra output baud rates (not in POSIX).  */
+#define  B57600    0010001
+#define  B115200   0010002
+#define  B230400   0010003
+#define  B460800   0010004
+#define  B500000   0010005
+#define  B576000   0010006
+#define  B921600   0010007
+#define  B1000000  0010010
+#define  B1152000  0010011
+#define  B1500000  0010012
+#define  B2000000  0010013
+#define  B2500000  0010014
+#define  B3000000  0010015
+#define  B3500000  0010016
+#define  B4000000  0010017
+#define __MAX_BAUD B4000000
diff --git a/sysdeps/unix/sysv/linux/bits/termios.h b/sysdeps/unix/sysv/linux/bits/termios.h
index 15b279b01e..07ffdf9779 100644
--- a/sysdeps/unix/sysv/linux/bits/termios.h
+++ b/sysdeps/unix/sysv/linux/bits/termios.h
@@ -30,9 +30,6 @@  typedef unsigned int	tcflag_t;
 #include <bits/termios-c_oflag.h>
 
 /* c_cflag bit meaning */
-#ifdef __USE_MISC
-# define CBAUD	0010017
-#endif
 #define  B0	0000000		/* hang up */
 #define  B50	0000001
 #define  B75	0000002
@@ -53,6 +50,8 @@  typedef unsigned int	tcflag_t;
 # define EXTA B19200
 # define EXTB B38400
 #endif
+#include <bits/termios-baud.h>
+
 #define CSIZE	0000060
 #define   CS5	0000000
 #define   CS6	0000020
@@ -64,30 +63,6 @@  typedef unsigned int	tcflag_t;
 #define PARODD	0001000
 #define HUPCL	0002000
 #define CLOCAL	0004000
-#ifdef __USE_MISC
-# define CBAUDEX 0010000
-#endif
-#define  B57600   0010001
-#define  B115200  0010002
-#define  B230400  0010003
-#define  B460800  0010004
-#define  B500000  0010005
-#define  B576000  0010006
-#define  B921600  0010007
-#define  B1000000 0010010
-#define  B1152000 0010011
-#define  B1500000 0010012
-#define  B2000000 0010013
-#define  B2500000 0010014
-#define  B3000000 0010015
-#define  B3500000 0010016
-#define  B4000000 0010017
-#define __MAX_BAUD B4000000
-#ifdef __USE_MISC
-# define CIBAUD	  002003600000		/* input baud rate (not used) */
-# define CMSPAR   010000000000		/* mark or space (stick) parity */
-# define CRTSCTS  020000000000		/* flow control */
-#endif
 
 /* c_lflag bits */
 #define ISIG	0000001
diff --git a/sysdeps/unix/sysv/linux/mips/bits/termios.h b/sysdeps/unix/sysv/linux/mips/bits/termios.h
index f851adbfe1..008527577f 100644
--- a/sysdeps/unix/sysv/linux/mips/bits/termios.h
+++ b/sysdeps/unix/sysv/linux/mips/bits/termios.h
@@ -30,9 +30,6 @@  typedef unsigned int	tcflag_t;
 #include <bits/termios-c_oflag.h>
 
 /* c_cflag bit meaning */
-#ifdef __USE_MISC
-# define CBAUD	0010017
-#endif
 #define  B0	0000000		/* hang up */
 #define  B50	0000001
 #define  B75	0000002
@@ -53,6 +50,8 @@  typedef unsigned int	tcflag_t;
 # define EXTA B19200
 # define EXTB B38400
 #endif
+#include <bits/termios-baud.h>
+
 #define CSIZE	0000060		/* Number of bits per byte (mask).  */
 #define   CS5	0000000		/* 5 bits per byte.  */
 #define   CS6	0000020		/* 6 bits per byte.  */
@@ -64,29 +63,6 @@  typedef unsigned int	tcflag_t;
 #define PARODD	0001000		/* Odd parity instead of even.  */
 #define HUPCL	0002000		/* Hang up on last close.  */
 #define CLOCAL	0004000		/* Ignore modem status lines.  */
-#ifdef __USE_MISC
-# define CBAUDEX   0010000
-#endif
-#define  B57600   0010001
-#define  B115200  0010002
-#define  B230400  0010003
-#define  B460800  0010004
-#define  B500000  0010005
-#define  B576000  0010006
-#define  B921600  0010007
-#define  B1000000 0010010
-#define  B1152000 0010011
-#define  B1500000 0010012
-#define  B2000000 0010013
-#define  B2500000 0010014
-#define  B3000000 0010015
-#define  B3500000 0010016
-#define  B4000000 0010017
-#define __MAX_BAUD B4000000
-#ifdef __USE_MISC
-# define CIBAUD	  002003600000	/* input baud rate (not used) */
-# define CRTSCTS  020000000000		/* flow control */
-#endif
 
 /* c_lflag bits */
 #define ISIG	0000001		/* Enable signals.  */
diff --git a/sysdeps/unix/sysv/linux/powerpc/bits/termios-baud.h b/sysdeps/unix/sysv/linux/powerpc/bits/termios-baud.h
new file mode 100644
index 0000000000..4f490a929f
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/powerpc/bits/termios-baud.h
@@ -0,0 +1,45 @@ 
+/* termios baud rate selection definitions.  Linux/powerpc version.
+   Copyright (C) 2018 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library.  If not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#ifndef _TERMIOS_H
+# error "Never include <bits/termios-baud.h> directly; use <termios.h> instead."
+#endif
+
+#ifdef __USE_MISC
+# define CBAUD	0000377
+# define CBAUDEX 0000020
+# define CMSPAR   010000000000		/* mark or space (stick) parity */
+# define CRTSCTS  020000000000		/* flow control */
+#endif
+
+#define  B57600   00020
+#define  B115200  00021
+#define  B230400  00022
+#define  B460800  00023
+#define  B500000  00024
+#define  B576000  00025
+#define  B921600  00026
+#define  B1000000 00027
+#define  B1152000 00030
+#define  B1500000 00031
+#define  B2000000 00032
+#define  B2500000 00033
+#define  B3000000 00034
+#define  B3500000 00035
+#define  B4000000 00036
+#define __MAX_BAUD B4000000
diff --git a/sysdeps/unix/sysv/linux/powerpc/bits/termios.h b/sysdeps/unix/sysv/linux/powerpc/bits/termios.h
index 4045274af9..2f928d5217 100644
--- a/sysdeps/unix/sysv/linux/powerpc/bits/termios.h
+++ b/sysdeps/unix/sysv/linux/powerpc/bits/termios.h
@@ -29,9 +29,6 @@  typedef unsigned int	tcflag_t;
 #include <bits/termios-c_oflag.h>
 
 /* c_cflag bit meaning */
-#ifdef __USE_MISC
-# define CBAUD	0000377
-#endif
 #define  B0	0000000		/* hang up */
 #define  B50	0000001
 #define  B75	0000002
@@ -51,24 +48,8 @@  typedef unsigned int	tcflag_t;
 #ifdef __USE_MISC
 # define EXTA B19200
 # define EXTB B38400
-# define CBAUDEX 0000020
 #endif
-#define  B57600   00020
-#define  B115200  00021
-#define  B230400  00022
-#define  B460800  00023
-#define  B500000  00024
-#define  B576000  00025
-#define  B921600  00026
-#define  B1000000 00027
-#define  B1152000 00030
-#define  B1500000 00031
-#define  B2000000 00032
-#define  B2500000 00033
-#define  B3000000 00034
-#define  B3500000 00035
-#define  B4000000 00036
-#define __MAX_BAUD B4000000
+#include <bits/termios-baud.h>
 
 #define CSIZE	00001400
 #define   CS5	00000000
@@ -83,10 +64,6 @@  typedef unsigned int	tcflag_t;
 #define HUPCL	00040000
 
 #define CLOCAL	00100000
-#ifdef __USE_MISC
-# define CMSPAR   010000000000		/* mark or space (stick) parity */
-# define CRTSCTS  020000000000		/* flow control */
-#endif
 
 /* c_lflag bits */
 #define ISIG	0x00000080
diff --git a/sysdeps/unix/sysv/linux/sparc/bits/termios.h b/sysdeps/unix/sysv/linux/sparc/bits/termios.h
index 9c884eb791..d612080754 100644
--- a/sysdeps/unix/sysv/linux/sparc/bits/termios.h
+++ b/sysdeps/unix/sysv/linux/sparc/bits/termios.h
@@ -30,9 +30,6 @@  typedef unsigned int tcflag_t;
 #include <bits/termios-c_oflag.h>
 
 /* c_cflag bit meaning */
-#ifdef __USE_MISC
-# define CBAUD	0x0000100f
-#endif
 #define  B0	0x00000000	/* hang up */
 #define  B50	0x00000001
 #define  B75	0x00000002
@@ -53,6 +50,8 @@  typedef unsigned int tcflag_t;
 # define EXTA    B19200
 # define EXTB    B38400
 #endif
+#include <bits/termios-baud.h>
+
 #define  CSIZE  0x00000030
 #define   CS5	0x00000000
 #define   CS6	0x00000010
@@ -64,31 +63,6 @@  typedef unsigned int tcflag_t;
 #define PARODD	0x00000200
 #define HUPCL	0x00000400
 #define CLOCAL	0x00000800
-#ifdef __USE_MISC
-# define CBAUDEX 0x00001000
-#endif
-#define  B57600  0x00001001
-#define  B115200 0x00001002
-#define  B230400 0x00001003
-#define  B460800 0x00001004
-#define  B76800  0x00001005
-#define  B153600 0x00001006
-#define  B307200 0x00001007
-#define  B614400 0x00001008
-#define  B921600 0x00001009
-#define  B500000 0x0000100a
-#define  B576000 0x0000100b
-#define B1000000 0x0000100c
-#define B1152000 0x0000100d
-#define B1500000 0x0000100e
-#define B2000000 0x0000100f
-#define __MAX_BAUD B2000000
-
-#ifdef __USE_MISC
-# define CIBAUD	 0x100f0000	/* input baud rate (not used) */
-# define CMSPAR	 0x40000000	/* mark or space (stick) parity */
-# define CRTSCTS 0x80000000	/* flow control */
-#endif
 
 /* c_lflag bits */
 #define ISIG	0x00000001