[v2,07/12] termios: Consolidate control mode definitions

Message ID 20181228011001.22260-8-adhemerval.zanella@linaro.org
State New
Headers show
Series
  • Linux termios refactor
Related show

Commit Message

Adhemerval Zanella Dec. 28, 2018, 1:09 a.m.
This patch consolidates the termios symbolic constants used for output
mode with c_oflag memver 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-c_cflag.h.
	* sysdeps/unix/sysv/linux/bits/termios-c_cflag.h: New file.
	* sysdeps/unix/sysv/linux/alpha/bits/termios-c_cflag.h: Likewise.
	* sysdeps/unix/sysv/linux/powerpc/bits/termios-c_cflag.h: Likewise.
	* sysdeps/unix/sysv/linux/bits/termios.h (CSIZE, CS5, CS6, CS7, CS8,
	CSTOPB, CREAD, PARENB, PARODD, HUPCL, CLOCAL): Move to
	termios-c_cflag.h.
	* sysdeps/unix/sysv/linux/alpha/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              |  2 +-
 .../sysv/linux/alpha/bits/termios-c_cflag.h   | 35 +++++++++++++++++++
 sysdeps/unix/sysv/linux/alpha/bits/termios.h  | 14 +-------
 .../unix/sysv/linux/bits/termios-c_cflag.h    | 34 ++++++++++++++++++
 sysdeps/unix/sysv/linux/bits/termios.h        | 12 +------
 sysdeps/unix/sysv/linux/mips/bits/termios.h   | 12 +------
 .../sysv/linux/powerpc/bits/termios-c_cflag.h | 35 +++++++++++++++++++
 .../unix/sysv/linux/powerpc/bits/termios.h    | 14 +-------
 sysdeps/unix/sysv/linux/sparc/bits/termios.h  | 12 +------
 9 files changed, 110 insertions(+), 60 deletions(-)
 create mode 100644 sysdeps/unix/sysv/linux/alpha/bits/termios-c_cflag.h
 create mode 100644 sysdeps/unix/sysv/linux/bits/termios-c_cflag.h
 create mode 100644 sysdeps/unix/sysv/linux/powerpc/bits/termios-c_cflag.h

Comments

Siddhesh Poyarekar Dec. 31, 2018, 3:48 p.m. | #1
On 28/12/18 6:39 AM, Adhemerval Zanella wrote:
> This patch consolidates the termios symbolic constants used for output
> mode with c_oflag memver on its own header.  The Linux generic

control mode with c_cflag member.

> 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-c_cflag.h.
> 	* sysdeps/unix/sysv/linux/bits/termios-c_cflag.h: New file.
> 	* sysdeps/unix/sysv/linux/alpha/bits/termios-c_cflag.h: Likewise.
> 	* sysdeps/unix/sysv/linux/powerpc/bits/termios-c_cflag.h: Likewise.
> 	* sysdeps/unix/sysv/linux/bits/termios.h (CSIZE, CS5, CS6, CS7, CS8,
> 	CSTOPB, CREAD, PARENB, PARODD, HUPCL, CLOCAL): Move to
> 	termios-c_cflag.h.
> 	* sysdeps/unix/sysv/linux/alpha/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 with the commit description fixup.

Siddhesh

Patch

diff --git a/sysdeps/unix/sysv/linux/Makefile b/sysdeps/unix/sysv/linux/Makefile
index e1ddbf9787..9186e3af96 100644
--- a/sysdeps/unix/sysv/linux/Makefile
+++ b/sysdeps/unix/sysv/linux/Makefile
@@ -46,7 +46,7 @@  sysdep_headers += sys/mount.h sys/acct.h sys/sysctl.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-baud.h
+		  bits/termios-baud.h bits/termios-c_cflag.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-c_cflag.h b/sysdeps/unix/sysv/linux/alpha/bits/termios-c_cflag.h
new file mode 100644
index 0000000000..f0948a9019
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/alpha/bits/termios-c_cflag.h
@@ -0,0 +1,35 @@ 
+/* termios control mode 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-c_cflag.h> directly; use <termios.h> instead."
+#endif
+
+#define CSIZE	00001400
+#define   CS5	00000000
+#define   CS6	00000400
+#define   CS7	00001000
+#define   CS8	00001400
+
+#define CSTOPB	00002000
+#define CREAD	00004000
+#define PARENB	00010000
+#define PARODD	00020000
+#define HUPCL	00040000
+
+#define CLOCAL	00100000
diff --git a/sysdeps/unix/sysv/linux/alpha/bits/termios.h b/sysdeps/unix/sysv/linux/alpha/bits/termios.h
index 530dd48410..e0963df7fa 100644
--- a/sysdeps/unix/sysv/linux/alpha/bits/termios.h
+++ b/sysdeps/unix/sysv/linux/alpha/bits/termios.h
@@ -52,19 +52,7 @@  typedef unsigned int	tcflag_t;
 #endif
 #include <bits/termios-baud.h>
 
-#define CSIZE	00001400
-#define   CS5	00000000
-#define   CS6	00000400
-#define   CS7	00001000
-#define   CS8	00001400
-
-#define CSTOPB	00002000
-#define CREAD	00004000
-#define PARENB	00010000
-#define PARODD	00020000
-#define HUPCL	00040000
-
-#define CLOCAL	00100000
+#include <bits/termios-c_cflag.h>
 
 /* c_lflag bits */
 #define ISIG	0x00000080
diff --git a/sysdeps/unix/sysv/linux/bits/termios-c_cflag.h b/sysdeps/unix/sysv/linux/bits/termios-c_cflag.h
new file mode 100644
index 0000000000..605a830498
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/bits/termios-c_cflag.h
@@ -0,0 +1,34 @@ 
+/* termios control mode 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-c_cflag.h> directly; use <termios.h> instead."
+#endif
+
+/* c_cflag bits.  */
+#define CSIZE	0000060
+#define   CS5	0000000
+#define   CS6	0000020
+#define   CS7	0000040
+#define   CS8	0000060
+#define CSTOPB	0000100
+#define CREAD	0000200
+#define PARENB	0000400
+#define PARODD	0001000
+#define HUPCL	0002000
+#define CLOCAL	0004000
diff --git a/sysdeps/unix/sysv/linux/bits/termios.h b/sysdeps/unix/sysv/linux/bits/termios.h
index 07ffdf9779..8ead02e00a 100644
--- a/sysdeps/unix/sysv/linux/bits/termios.h
+++ b/sysdeps/unix/sysv/linux/bits/termios.h
@@ -52,17 +52,7 @@  typedef unsigned int	tcflag_t;
 #endif
 #include <bits/termios-baud.h>
 
-#define CSIZE	0000060
-#define   CS5	0000000
-#define   CS6	0000020
-#define   CS7	0000040
-#define   CS8	0000060
-#define CSTOPB	0000100
-#define CREAD	0000200
-#define PARENB	0000400
-#define PARODD	0001000
-#define HUPCL	0002000
-#define CLOCAL	0004000
+#include <bits/termios-c_cflag.h>
 
 /* 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 008527577f..b846099b09 100644
--- a/sysdeps/unix/sysv/linux/mips/bits/termios.h
+++ b/sysdeps/unix/sysv/linux/mips/bits/termios.h
@@ -52,17 +52,7 @@  typedef unsigned int	tcflag_t;
 #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.  */
-#define   CS7	0000040		/* 7 bits per byte.  */
-#define   CS8	0000060		/* 8 bits per byte.  */
-#define CSTOPB	0000100		/* Two stop bits instead of one.  */
-#define CREAD	0000200		/* Enable receiver.  */
-#define PARENB	0000400		/* Parity enable.  */
-#define PARODD	0001000		/* Odd parity instead of even.  */
-#define HUPCL	0002000		/* Hang up on last close.  */
-#define CLOCAL	0004000		/* Ignore modem status lines.  */
+#include <bits/termios-c_cflag.h>
 
 /* c_lflag bits */
 #define ISIG	0000001		/* Enable signals.  */
diff --git a/sysdeps/unix/sysv/linux/powerpc/bits/termios-c_cflag.h b/sysdeps/unix/sysv/linux/powerpc/bits/termios-c_cflag.h
new file mode 100644
index 0000000000..0f33de096e
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/powerpc/bits/termios-c_cflag.h
@@ -0,0 +1,35 @@ 
+/* termios control mode 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-c_cflag.h> directly; use <termios.h> instead."
+#endif
+
+#define CSIZE	00001400
+#define   CS5	00000000
+#define   CS6	00000400
+#define   CS7	00001000
+#define   CS8	00001400
+
+#define CSTOPB	00002000
+#define CREAD	00004000
+#define PARENB	00010000
+#define PARODD	00020000
+#define HUPCL	00040000
+
+#define CLOCAL	00100000
diff --git a/sysdeps/unix/sysv/linux/powerpc/bits/termios.h b/sysdeps/unix/sysv/linux/powerpc/bits/termios.h
index 2f928d5217..d49a882ed9 100644
--- a/sysdeps/unix/sysv/linux/powerpc/bits/termios.h
+++ b/sysdeps/unix/sysv/linux/powerpc/bits/termios.h
@@ -51,19 +51,7 @@  typedef unsigned int	tcflag_t;
 #endif
 #include <bits/termios-baud.h>
 
-#define CSIZE	00001400
-#define   CS5	00000000
-#define   CS6	00000400
-#define   CS7	00001000
-#define   CS8	00001400
-
-#define CSTOPB	00002000
-#define CREAD	00004000
-#define PARENB	00010000
-#define PARODD	00020000
-#define HUPCL	00040000
-
-#define CLOCAL	00100000
+#include <bits/termios-c_cflag.h>
 
 /* 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 d612080754..31d588caeb 100644
--- a/sysdeps/unix/sysv/linux/sparc/bits/termios.h
+++ b/sysdeps/unix/sysv/linux/sparc/bits/termios.h
@@ -52,17 +52,7 @@  typedef unsigned int tcflag_t;
 #endif
 #include <bits/termios-baud.h>
 
-#define  CSIZE  0x00000030
-#define   CS5	0x00000000
-#define   CS6	0x00000010
-#define   CS7	0x00000020
-#define   CS8	0x00000030
-#define CSTOPB	0x00000040
-#define CREAD	0x00000080
-#define PARENB	0x00000100
-#define PARODD	0x00000200
-#define HUPCL	0x00000400
-#define CLOCAL	0x00000800
+#include <bits/termios-c_cflag.h>
 
 /* c_lflag bits */
 #define ISIG	0x00000001