struct ktermios is not, nor has it ever been, a UAPI. Remove it from the UAPI headers.
Normally we have shadowed kernel-only headers that include the uapi ones; in this case this would be <asm/termbits.h>, however, I was unable to find a way by which *some* paths would still somehow pick up the UAPI header only (presumably due to the mix of arch-specific and asm-generic headers), so I separated out the kernel-specific parts into a new header <asm/ktermios.h>. <linux/termios.h> now has a kernel version, which only differs by including <asm/ktermios.h>. Signed-off-by: H. Peter Anvin <h...@zytor.com> --- arch/alpha/include/asm/ktermios.h | 2 ++ arch/alpha/include/uapi/asm/termbits.h | 17 ++-------------- arch/arc/include/asm/ktermios.h | 1 + arch/arm/include/asm/ktermios.h | 1 + arch/arm64/include/asm/ktermios.h | 1 + arch/csky/include/asm/ktermios.h | 1 + arch/hexagon/include/asm/ktermios.h | 1 + arch/loongarch/include/asm/ktermios.h | 1 + arch/m68k/include/asm/ktermios.h | 1 + arch/microblaze/include/asm/ktermios.h | 1 + arch/mips/include/asm/ktermios.h | 1 + arch/mips/include/uapi/asm/termbits.h | 15 ++------------ arch/nios2/include/asm/ktermios.h | 1 + arch/openrisc/include/asm/ktermios.h | 1 + arch/parisc/include/asm/ktermios.h | 1 + arch/parisc/include/uapi/asm/termbits.h | 15 ++------------ arch/powerpc/include/asm/ktermios.h | 2 ++ arch/powerpc/include/uapi/asm/termbits.h | 13 ------------ arch/riscv/include/asm/ktermios.h | 1 + arch/s390/include/asm/ktermios.h | 1 + arch/sh/include/asm/ktermios.h | 1 + arch/sparc/include/asm/ktermios.h | 11 ++++++++++ arch/sparc/include/asm/termbits.h | 9 -------- arch/um/include/asm/ktermios.h | 1 + arch/x86/include/asm/ktermios.h | 1 + arch/xtensa/include/asm/ktermios.h | 1 + include/asm-generic/ktermios.h | 26 ++++++++++++++++++++++++ include/linux/termios.h | 7 +++++++ include/uapi/asm-generic/termbits.h | 15 ++------------ include/uapi/linux/termios.h | 4 ++-- 30 files changed, 76 insertions(+), 78 deletions(-) create mode 100644 arch/alpha/include/asm/ktermios.h create mode 100644 arch/arc/include/asm/ktermios.h create mode 100644 arch/arm/include/asm/ktermios.h create mode 100644 arch/arm64/include/asm/ktermios.h create mode 100644 arch/csky/include/asm/ktermios.h create mode 100644 arch/hexagon/include/asm/ktermios.h create mode 100644 arch/loongarch/include/asm/ktermios.h create mode 100644 arch/m68k/include/asm/ktermios.h create mode 100644 arch/microblaze/include/asm/ktermios.h create mode 100644 arch/mips/include/asm/ktermios.h create mode 100644 arch/nios2/include/asm/ktermios.h create mode 100644 arch/openrisc/include/asm/ktermios.h create mode 100644 arch/parisc/include/asm/ktermios.h create mode 100644 arch/powerpc/include/asm/ktermios.h create mode 100644 arch/riscv/include/asm/ktermios.h create mode 100644 arch/s390/include/asm/ktermios.h create mode 100644 arch/sh/include/asm/ktermios.h create mode 100644 arch/sparc/include/asm/ktermios.h delete mode 100644 arch/sparc/include/asm/termbits.h create mode 100644 arch/um/include/asm/ktermios.h create mode 100644 arch/x86/include/asm/ktermios.h create mode 100644 arch/xtensa/include/asm/ktermios.h create mode 100644 include/asm-generic/ktermios.h create mode 100644 include/linux/termios.h diff --git a/arch/alpha/include/asm/ktermios.h b/arch/alpha/include/asm/ktermios.h new file mode 100644 index 000000000000..f1e3d24b8e61 --- /dev/null +++ b/arch/alpha/include/asm/ktermios.h @@ -0,0 +1,2 @@ +#define KTERMIOS_C_CC_BEFORE_C_LINE 1 +#include <asm-generic/ktermios.h> diff --git a/arch/alpha/include/uapi/asm/termbits.h b/arch/alpha/include/uapi/asm/termbits.h index f1290b22072b..50a1b468b81c 100644 --- a/arch/alpha/include/uapi/asm/termbits.h +++ b/arch/alpha/include/uapi/asm/termbits.h @@ -1,6 +1,6 @@ /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ -#ifndef _ALPHA_TERMBITS_H -#define _ALPHA_TERMBITS_H +#ifndef _UAPI_ALPHA_TERMBITS_H +#define _UAPI_ALPHA_TERMBITS_H #include <asm-generic/termbits-common.h> @@ -37,19 +37,6 @@ struct termios2 { speed_t c_ospeed; /* output speed */ }; -/* Alpha has matching termios and ktermios */ - -struct ktermios { - tcflag_t c_iflag; /* input mode flags */ - tcflag_t c_oflag; /* output mode flags */ - tcflag_t c_cflag; /* control mode flags */ - tcflag_t c_lflag; /* local mode flags */ - cc_t c_cc[NCCS]; /* control characters */ - cc_t c_line; /* line discipline (== c_cc[19]) */ - speed_t c_ispeed; /* input speed */ - speed_t c_ospeed; /* output speed */ -}; - /* c_cc characters */ #define VEOF 0 #define VEOL 1 diff --git a/arch/arc/include/asm/ktermios.h b/arch/arc/include/asm/ktermios.h new file mode 100644 index 000000000000..4320921a82a9 --- /dev/null +++ b/arch/arc/include/asm/ktermios.h @@ -0,0 +1 @@ +#include <asm-generic/ktermios.h> diff --git a/arch/arm/include/asm/ktermios.h b/arch/arm/include/asm/ktermios.h new file mode 100644 index 000000000000..4320921a82a9 --- /dev/null +++ b/arch/arm/include/asm/ktermios.h @@ -0,0 +1 @@ +#include <asm-generic/ktermios.h> diff --git a/arch/arm64/include/asm/ktermios.h b/arch/arm64/include/asm/ktermios.h new file mode 100644 index 000000000000..4320921a82a9 --- /dev/null +++ b/arch/arm64/include/asm/ktermios.h @@ -0,0 +1 @@ +#include <asm-generic/ktermios.h> diff --git a/arch/csky/include/asm/ktermios.h b/arch/csky/include/asm/ktermios.h new file mode 100644 index 000000000000..4320921a82a9 --- /dev/null +++ b/arch/csky/include/asm/ktermios.h @@ -0,0 +1 @@ +#include <asm-generic/ktermios.h> diff --git a/arch/hexagon/include/asm/ktermios.h b/arch/hexagon/include/asm/ktermios.h new file mode 100644 index 000000000000..4320921a82a9 --- /dev/null +++ b/arch/hexagon/include/asm/ktermios.h @@ -0,0 +1 @@ +#include <asm-generic/ktermios.h> diff --git a/arch/loongarch/include/asm/ktermios.h b/arch/loongarch/include/asm/ktermios.h new file mode 100644 index 000000000000..4320921a82a9 --- /dev/null +++ b/arch/loongarch/include/asm/ktermios.h @@ -0,0 +1 @@ +#include <asm-generic/ktermios.h> diff --git a/arch/m68k/include/asm/ktermios.h b/arch/m68k/include/asm/ktermios.h new file mode 100644 index 000000000000..4320921a82a9 --- /dev/null +++ b/arch/m68k/include/asm/ktermios.h @@ -0,0 +1 @@ +#include <asm-generic/ktermios.h> diff --git a/arch/microblaze/include/asm/ktermios.h b/arch/microblaze/include/asm/ktermios.h new file mode 100644 index 000000000000..4320921a82a9 --- /dev/null +++ b/arch/microblaze/include/asm/ktermios.h @@ -0,0 +1 @@ +#include <asm-generic/ktermios.h> diff --git a/arch/mips/include/asm/ktermios.h b/arch/mips/include/asm/ktermios.h new file mode 100644 index 000000000000..4320921a82a9 --- /dev/null +++ b/arch/mips/include/asm/ktermios.h @@ -0,0 +1 @@ +#include <asm-generic/ktermios.h> diff --git a/arch/mips/include/uapi/asm/termbits.h b/arch/mips/include/uapi/asm/termbits.h index 1eb60903d6f0..dacefee984d6 100644 --- a/arch/mips/include/uapi/asm/termbits.h +++ b/arch/mips/include/uapi/asm/termbits.h @@ -8,8 +8,8 @@ * Copyright (C) 1999 Silicon Graphics, Inc. * Copyright (C) 2001 MIPS Technologies, Inc. */ -#ifndef _ASM_TERMBITS_H -#define _ASM_TERMBITS_H +#ifndef _UAPI_ASM_TERMBITS_H +#define _UAPI_ASM_TERMBITS_H #include <asm-generic/termbits-common.h> @@ -40,17 +40,6 @@ struct termios2 { speed_t c_ospeed; /* output speed */ }; -struct ktermios { - tcflag_t c_iflag; /* input mode flags */ - tcflag_t c_oflag; /* output mode flags */ - tcflag_t c_cflag; /* control mode flags */ - 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 */ -}; - /* c_cc characters */ #define VINTR 0 /* Interrupt character [ISIG] */ #define VQUIT 1 /* Quit character [ISIG] */ diff --git a/arch/nios2/include/asm/ktermios.h b/arch/nios2/include/asm/ktermios.h new file mode 100644 index 000000000000..4320921a82a9 --- /dev/null +++ b/arch/nios2/include/asm/ktermios.h @@ -0,0 +1 @@ +#include <asm-generic/ktermios.h> diff --git a/arch/openrisc/include/asm/ktermios.h b/arch/openrisc/include/asm/ktermios.h new file mode 100644 index 000000000000..4320921a82a9 --- /dev/null +++ b/arch/openrisc/include/asm/ktermios.h @@ -0,0 +1 @@ +#include <asm-generic/ktermios.h> diff --git a/arch/parisc/include/asm/ktermios.h b/arch/parisc/include/asm/ktermios.h new file mode 100644 index 000000000000..4320921a82a9 --- /dev/null +++ b/arch/parisc/include/asm/ktermios.h @@ -0,0 +1 @@ +#include <asm-generic/ktermios.h> diff --git a/arch/parisc/include/uapi/asm/termbits.h b/arch/parisc/include/uapi/asm/termbits.h index 3a8938d26fb4..d8818b887680 100644 --- a/arch/parisc/include/uapi/asm/termbits.h +++ b/arch/parisc/include/uapi/asm/termbits.h @@ -1,6 +1,6 @@ /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ -#ifndef __ARCH_PARISC_TERMBITS_H__ -#define __ARCH_PARISC_TERMBITS_H__ +#ifndef _UAPI_PARISC_TERMBITS_H +#define _UAPI_PARISC_TERMBITS_H #include <asm-generic/termbits-common.h> @@ -27,17 +27,6 @@ struct termios2 { speed_t c_ospeed; /* output speed */ }; -struct ktermios { - tcflag_t c_iflag; /* input mode flags */ - tcflag_t c_oflag; /* output mode flags */ - tcflag_t c_cflag; /* control mode flags */ - 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 */ -}; - /* c_cc characters */ #define VINTR 0 #define VQUIT 1 diff --git a/arch/powerpc/include/asm/ktermios.h b/arch/powerpc/include/asm/ktermios.h new file mode 100644 index 000000000000..f1e3d24b8e61 --- /dev/null +++ b/arch/powerpc/include/asm/ktermios.h @@ -0,0 +1,2 @@ +#define KTERMIOS_C_CC_BEFORE_C_LINE 1 +#include <asm-generic/ktermios.h> diff --git a/arch/powerpc/include/uapi/asm/termbits.h b/arch/powerpc/include/uapi/asm/termbits.h index 21dc86dcb2f1..f4e4d8270c8e 100644 --- a/arch/powerpc/include/uapi/asm/termbits.h +++ b/arch/powerpc/include/uapi/asm/termbits.h @@ -31,19 +31,6 @@ struct termios { speed_t c_ospeed; /* output speed */ }; -/* For PowerPC the termios and ktermios are the same */ - -struct ktermios { - tcflag_t c_iflag; /* input mode flags */ - tcflag_t c_oflag; /* output mode flags */ - tcflag_t c_cflag; /* control mode flags */ - tcflag_t c_lflag; /* local mode flags */ - cc_t c_cc[NCCS]; /* control characters */ - cc_t c_line; /* line discipline (== c_cc[19]) */ - speed_t c_ispeed; /* input speed */ - speed_t c_ospeed; /* output speed */ -}; - /* c_cc characters */ #define VINTR 0 #define VQUIT 1 diff --git a/arch/riscv/include/asm/ktermios.h b/arch/riscv/include/asm/ktermios.h new file mode 100644 index 000000000000..4320921a82a9 --- /dev/null +++ b/arch/riscv/include/asm/ktermios.h @@ -0,0 +1 @@ +#include <asm-generic/ktermios.h> diff --git a/arch/s390/include/asm/ktermios.h b/arch/s390/include/asm/ktermios.h new file mode 100644 index 000000000000..4320921a82a9 --- /dev/null +++ b/arch/s390/include/asm/ktermios.h @@ -0,0 +1 @@ +#include <asm-generic/ktermios.h> diff --git a/arch/sh/include/asm/ktermios.h b/arch/sh/include/asm/ktermios.h new file mode 100644 index 000000000000..4320921a82a9 --- /dev/null +++ b/arch/sh/include/asm/ktermios.h @@ -0,0 +1 @@ +#include <asm-generic/ktermios.h> diff --git a/arch/sparc/include/asm/ktermios.h b/arch/sparc/include/asm/ktermios.h new file mode 100644 index 000000000000..bdd3682eecef --- /dev/null +++ b/arch/sparc/include/asm/ktermios.h @@ -0,0 +1,11 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +#ifndef _SPARC_KTERMIOS_H +#define _SPARC_KTERMIOS_H + +#define VMIN 16 +#define VTIME 17 +#define KNCCS (NCCS+2) + +#include <asm-generic/ktermios.h> + +#endif /* !(_SPARC_KTERMIOS_H) */ diff --git a/arch/sparc/include/asm/termbits.h b/arch/sparc/include/asm/termbits.h deleted file mode 100644 index fa9de4a46d36..000000000000 --- a/arch/sparc/include/asm/termbits.h +++ /dev/null @@ -1,9 +0,0 @@ -/* SPDX-License-Identifier: GPL-2.0 */ -#ifndef _SPARC_TERMBITS_H -#define _SPARC_TERMBITS_H - -#include <uapi/asm/termbits.h> - -#define VMIN 16 -#define VTIME 17 -#endif /* !(_SPARC_TERMBITS_H) */ diff --git a/arch/um/include/asm/ktermios.h b/arch/um/include/asm/ktermios.h new file mode 100644 index 000000000000..4320921a82a9 --- /dev/null +++ b/arch/um/include/asm/ktermios.h @@ -0,0 +1 @@ +#include <asm-generic/ktermios.h> diff --git a/arch/x86/include/asm/ktermios.h b/arch/x86/include/asm/ktermios.h new file mode 100644 index 000000000000..4320921a82a9 --- /dev/null +++ b/arch/x86/include/asm/ktermios.h @@ -0,0 +1 @@ +#include <asm-generic/ktermios.h> diff --git a/arch/xtensa/include/asm/ktermios.h b/arch/xtensa/include/asm/ktermios.h new file mode 100644 index 000000000000..4320921a82a9 --- /dev/null +++ b/arch/xtensa/include/asm/ktermios.h @@ -0,0 +1 @@ +#include <asm-generic/ktermios.h> diff --git a/include/asm-generic/ktermios.h b/include/asm-generic/ktermios.h new file mode 100644 index 000000000000..bf22e22d8130 --- /dev/null +++ b/include/asm-generic/ktermios.h @@ -0,0 +1,26 @@ +#ifndef _ASM_GENERIC_KTERMIOS_H +#define _ASM_GENERIC_KTERMIOS_H + +#ifndef KNCCS +# define KNCCS NCCS +#endif + +struct ktermios { + tcflag_t c_iflag; /* input mode flags */ + tcflag_t c_oflag; /* output mode flags */ + tcflag_t c_cflag; /* control mode flags */ + tcflag_t c_lflag; /* local mode flags */ +#ifndef KTERMIOS_C_CC_BEFORE_C_LINE + /* Most architectures */ + cc_t c_line; /* line discipline */ + cc_t c_cc[KNCCS]; /* control characters */ +#else + /* Alpha and PowerPC */ + cc_t c_cc[KNCCS]; /* control characters */ + cc_t c_line; /* line discipline */ +#endif + speed_t c_ispeed; /* input speed */ + speed_t c_ospeed; /* output speed */ +}; + +#endif /* _ASM_GENERIC_KTERMIOS_H */ diff --git a/include/linux/termios.h b/include/linux/termios.h new file mode 100644 index 000000000000..9d37d24cae02 --- /dev/null +++ b/include/linux/termios.h @@ -0,0 +1,7 @@ +#ifndef _LINUX_TERMIOS_H +#define _LINUX_TERMIOS_H + +#include <uapi/linux/termios.h> +#include <asm/ktermios.h> + +#endif diff --git a/include/uapi/asm-generic/termbits.h b/include/uapi/asm-generic/termbits.h index 890ef29053e2..df60b006657f 100644 --- a/include/uapi/asm-generic/termbits.h +++ b/include/uapi/asm-generic/termbits.h @@ -1,6 +1,6 @@ /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ -#ifndef __ASM_GENERIC_TERMBITS_H -#define __ASM_GENERIC_TERMBITS_H +#ifndef _UAPI_ASM_GENERIC_TERMBITS_H +#define _UAPI_ASM_GENERIC_TERMBITS_H #include <asm-generic/termbits-common.h> @@ -27,17 +27,6 @@ struct termios2 { speed_t c_ospeed; /* output speed */ }; -struct ktermios { - tcflag_t c_iflag; /* input mode flags */ - tcflag_t c_oflag; /* output mode flags */ - tcflag_t c_cflag; /* control mode flags */ - 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 */ -}; - /* c_cc characters */ #define VINTR 0 #define VQUIT 1 diff --git a/include/uapi/linux/termios.h b/include/uapi/linux/termios.h index e6da9d4433d1..32ff18b0dfbc 100644 --- a/include/uapi/linux/termios.h +++ b/include/uapi/linux/termios.h @@ -1,6 +1,6 @@ /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ -#ifndef _LINUX_TERMIOS_H -#define _LINUX_TERMIOS_H +#ifndef _UAPI_LINUX_TERMIOS_H +#define _UAPI_LINUX_TERMIOS_H #include <linux/types.h> #include <asm/termios.h> -- 2.50.1