This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
Re: [PATCH 06/12] termios: Consolidate Baud Rate Selection definitions
- From: Adhemerval Zanella <adhemerval dot zanella at linaro dot org>
- To: libc-alpha at sourceware dot org
- Date: Tue, 6 Nov 2018 15:14:52 -0200
- Subject: Re: [PATCH 06/12] termios: Consolidate Baud Rate Selection definitions
- References: <20181015204956.25558-1-adhemerval.zanella@linaro.org> <20181015204956.25558-6-adhemerval.zanella@linaro.org>
Ping.
On 15/10/2018 17:49, 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.
>
> * 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
>
> diff --git a/sysdeps/unix/sysv/linux/Makefile b/sysdeps/unix/sysv/linux/Makefile
> index 097107c82c..1af8145b13 100644
> --- a/sysdeps/unix/sysv/linux/Makefile
> +++ b/sysdeps/unix/sysv/linux/Makefile
> @@ -44,7 +44,8 @@ sysdep_headers += sys/mount.h sys/acct.h sys/sysctl.h \
> bits/procfs.h bits/procfs-id.h bits/procfs-extra.h \
> bits/procfs-prregset.h bits/mman-map-flags-generic.h \
> bits/msq-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
>