ioctl_tty.2: Document ioctls: TCGETS2, TCSETS2, TCSETSW2, TCSETSF2
PATCH 1/1 ioctl_tty.2: Document ioctls: TCGETS2, TCSETS2, TCSETSW2, TCSETSF2
--- man2/ioctl_tty.2 | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+)
man2/ioctl_tty.2 +29 -0
@@ -77,6 +77,35 @@ The following four ioctls are just like .BR TCSETSW , .BR TCSETSF , except that they take a +.I "struct termios2\ *" +instead of a +.IR "struct termios\ *" . +.I "struct termios2\ *" +is defined in header file +.IR "<asm/termbits.h>" . +If struct member +.B c_cflag +contains +.B BOTHER +then baudrate is stored in struct members +.BR c_ispeed " and " c_ospeed +as integer values. +These ioctls are not supported on all architectures. +.IP +.BI "TCGETS2 struct termios2 *" argp +.IP +.BI "TCSETS2 const struct termios2 *" argp +.IP +.BI "TCSETSW2 const struct termios2 *" argp +.IP +.BI "TCSETSF2 const struct termios2 *" argp +.PP +The following four ioctls are just like +.BR TCGETS , +.BR TCSETS , +.BR TCSETSW , +.BR TCSETSF , +except that they take a .I "struct termio\ *" instead of a .IR "struct termios\ *" .
Signature · 1 line
2.20.1
Hi Pali,
Quoted 2 lines · Pali Rohár
Signed-off-by Pali Rohár <[email protected]>---
Please see some comments below.
Thanks,
Alex
Quoted 8 lines
man2/ioctl_tty.2 | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+)man2/ioctl_tty.2 +0
-0
man2/ioctl_tty.2 The following four ioctls are just like · line 84
Quoted 8 lines
man2/ioctl_tty.2 +5
-0@@ -77,6 +77,35 @@ The following four ioctls are just like .BR TCSETSW , .BR TCSETSF , except that they take a +.I "struct termios2\ *" +instead of a +.IR "struct termios\ *" . +.I "struct termios2\ *" +is defined in header file
Maybe s/in/in the/ ?
man2/ioctl_tty.2 The following four ioctls are just like · line 85
Quoted 1 line
man2/ioctl_tty.2 +1
-0+.IR "<asm/termbits.h>" .
Quotes are unnecessary here.
man2/ioctl_tty.2 The following four ioctls are just like · line 91
Quoted 6 lines
man2/ioctl_tty.2 +6
-0+If struct member +.B c_cflag +contains +.B BOTHER +then baudrate is stored in struct members +.BR c_ispeed " and " c_ospeed
We always break this into:
.B c_ispeed
and
.B c_ospeed
man2/ioctl_tty.2 The following four ioctls are just like · line 95
Quoted 4 lines
man2/ioctl_tty.2 +4
-0+as integer values. +These ioctls are not supported on all architectures. +.IP +.BI "TCGETS2 struct termios2 *" argp
Please follow the same style as in the rest of the page:
.TP
.B TCGETS2
Argument:
.BI "struct termios2 *" argp
Unless there's a good reason not to.
Quoted 17 lines
man2/ioctl_tty.2 +13
-0+.IP +.BI "TCSETS2 const struct termios2 *" argp +.IP +.BI "TCSETSW2 const struct termios2 *" argp +.IP +.BI "TCSETSF2 const struct termios2 *" argp +.PP +The following four ioctls are just like +.BR TCGETS , +.BR TCSETS , +.BR TCSETSW , +.BR TCSETSF , +except that they take a .I "struct termio\ *" instead of a .IR "struct termios\ *" .
Signature · 3 lines
Alejandro Colomar Linux man-pages comaintainer; https://www.kernel.org/doc/man-pages/ http://www.alejandro-colomar.es/
Hello!
Quoted 16 lines · On Thursday 29 July 2021 13:30:11 Alejandro Colomar (man-pages) wrote:
Hi Pali,
Quoted 2 lines · Pali Rohár
Signed-off-by Pali Rohár <[email protected]>---
Please see some comments below.
Thanks,
Alex
Quoted 3 lines
man2/ioctl_tty.2 | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+)
Quoted 15 lines
man2/ioctl_tty.2 The following four ioctls are just like · line 84
Quoted 13 lines
man2/ioctl_tty.2 +5
-0@@ -77,6 +77,35 @@ The following four ioctls are just like .BR TCSETSW , .BR TCSETSF , except that they take a +.I "struct termios2\ *" +instead of a +.IR "struct termios\ *" . +.I "struct termios2\ *" +is defined in header fileMaybe s/in/in the/ ?
Ok, I will change it.
Quoted 3 lines
man2/ioctl_tty.2 The following four ioctls are just like · line 85
Quoted 1 line
man2/ioctl_tty.2 +1
-0+.IR "<asm/termbits.h>" .Quotes are unnecessary here.
Ok.
Quoted 9 lines
man2/ioctl_tty.2 The following four ioctls are just like · line 91
Quoted 6 lines
man2/ioctl_tty.2 +6
-0+If struct member +.B c_cflag +contains +.B BOTHER +then baudrate is stored in struct members +.BR c_ispeed " and " c_ospeedWe always break this into:
Quoted 3 lines
.B
c_ispeed
and
.Bc_ospeed
Ok.
Quoted 7 lines
man2/ioctl_tty.2 The following four ioctls are just like · line 95
Quoted 4 lines
man2/ioctl_tty.2 +4
-0+as integer values. +These ioctls are not supported on all architectures. +.IP +.BI "TCGETS2 struct termios2 *" argpPlease follow the same style as in the rest of the page:
Quoted 6 lines
.TP
.B TCGETS2
Argument:
.BI "struct termios2 *" argpUnless there's a good reason not to.
Few lines below in this file is:
.IR "struct termios\ *" .
.IP
.BI "TCGETA struct termio *" argp
.IP
.BI "TCSETA const struct termio *" argp
.IP
.BI "TCSETAW const struct termio *" argp
.IP
.BI "TCSETAF const struct termio *" argp
Therefore I used same style for TCGETS2...
So, how should I format this part to be consistent?
Quoted 23 lines
Quoted 17 lines
man2/ioctl_tty.2 +13
-0+.IP +.BI "TCSETS2 const struct termios2 *" argp +.IP +.BI "TCSETSW2 const struct termios2 *" argp +.IP +.BI "TCSETSF2 const struct termios2 *" argp +.PP +The following four ioctls are just like +.BR TCGETS , +.BR TCSETS , +.BR TCSETSW , +.BR TCSETSF , +except that they take a .I "struct termio\ *" instead of a .IR "struct termios\ *" .Signature · 3 lines
Alejandro Colomar Linux man-pages comaintainer; https://www.kernel.org/doc/man-pages/ http://www.alejandro-colomar.es/
Hi Pali,
Quoted 2 lines · Pali Rohár
Quoted 2 lines
Quoted 2 lines
+.IR "<
asm/termbits.h>" .
Is that the header that the user should include?
I don't know. I typically avoid 'asm/' includes, but maybe in this case it's the correct one. Shouldn't the user maybe include <linux/termios.h>?
user@sqli:/usr/include$ grep -rn 'struct termios {'
asm-generic/termbits.h:12:struct termios {
user@sqli:/usr/include$ grep -rn '<asm-generic/termbits.h>'
x86_64-linux-gnu/asm/termbits.h:1:#include <asm-generic/termbits.h>
user@sqli:/usr/include$ grep -rn '<asm/termbits.h>'
asm-generic/termios.h:12:#include <asm/termbits.h>
user@sqli:/usr/include$ grep -rn '<asm-generic/termios.h>'
x86_64-linux-gnu/asm/termios.h:1:#include <asm-generic/termios.h>
user@sqli:/usr/include$ grep -rn '<asm/termios.h>'
linux/termios.h:6:#include <asm/termios.h>
user@sqli:/usr/include$ grep -rn '<linux/termios.h>'
user@sqli:/usr/include$Quoted 25 lines
Quoted 4 lines
Quoted 3 lines
+These ioctls are not supported on all architectures. +.IP
+.BI "TCGETS2 struct termios2 *" argpQuoted 8 lines
Please follow the same style as in the rest of the page:
.TP
.B TCGETS2
Argument:
.BI "struct termios2 *" argpUnless there's a good reason not to.
Few lines below in this file is:
.IR "struct termios\ *" .
.IP
.BI "TCGETA struct termio *" argp
.IP
.BI "TCSETA const struct termio *" argp
.IP
.BI "TCSETAW const struct termio *" argp
.IP
.BI "TCSETAF const struct termio *" argp
Quoted 3 lines
Therefore I used same style for TCGETS2...
So, how should I format this part to be consistent?
Hmm, sorry, I didn't see those.
So there's a mix in the file.
The more correct form is the one I used, so please use that one (the one with .TP)
Thanks,
Alex
Quoted 24 lines
Quoted 24 lines
Quoted 18 lines
+.IP
+.BI "TCSETS2 const struct termios2 *" argp
+.IP
+.BI "TCSETSW2 const struct termios2 *" argp
+.IP
+.BI "TCSETSF2 const struct termios2 *" argp
+.PPman2/ioctl_tty.2 +6
-0+The following four ioctls are just like +.BR TCGETS , +.BR TCSETS , +.BR TCSETSW , +.BR TCSETSF , +except that they take a .I "struct termio\ *" instead of a .IR "struct termios\ *" .Signature · 3 lines
Alejandro Colomar Linux man-pages comaintainer; https://www.kernel.org/doc/man-pages/ http://www.alejandro-colomar.es/
Signature · 3 lines
Alejandro Colomar Linux man-pages comaintainer; https://www.kernel.org/doc/man-pages/ http://www.alejandro-colomar.es/
Hello!
Quoted 7 lines · On Friday 30 July 2021 01:39:11 Alejandro Colomar (man-pages) wrote:
Hi Pali,
Quoted 2 lines · Pali Rohár
Quoted 2 lines
Quoted 2 lines
+.IR "<
asm/termbits.h>" .Is that the header that the user should include?
Yes.
Quoted 2 lines
I don't know. I typically avoid 'asm/' includes, but maybe in this case it's the correct one. Shouldn't the user maybe include <
linux/termios.h>?
Problem is that you cannot include <linux/termios.h> together with <sys/ioctl.h>. It cause redefinition of symbols and compile errors.
And without <sys/ioctl.h> you cannot call ioctl() function which basically means that you cannot use TCGETS2 (as it is ioctl).
Probably this is a bug in glibc header files...
So currently it is needed to include <asm/termbits.h> file to use TCGETS2 ioctl. I'm not sure if it is "correct", but it is the only possible option for now about which I know (unless you want to copy+paste structures and macros from that file into your program, to avoid inclusion of asm/* files).
If you want, I can send a patch for ioctl_tty.2 example section with simple C program to show how to use TCGETS2/TCSETS2 ioctl.
Quoted 39 lines
user@sqli:/usr/include$ grep -rn 'struct termios {' asm-generic/termbits.h:12:struct termios { user@sqli:/usr/include$ grep -rn '<asm-generic/termbits.h>' x86_64-linux-gnu/asm/termbits.h:1:#include <asm-generic/termbits.h> user@sqli:/usr/include$ grep -rn '<asm/termbits.h>' asm-generic/termios.h:12:#include <asm/termbits.h> user@sqli:/usr/include$ grep -rn '<asm-generic/termios.h>' x86_64-linux-gnu/asm/termios.h:1:#include <asm-generic/termios.h> user@sqli:/usr/include$ grep -rn '<asm/termios.h>' linux/termios.h:6:#include <asm/termios.h> user@sqli:/usr/include$ grep -rn '<linux/termios.h>' user@sqli:/usr/include$Quoted 25 lines
Quoted 4 lines
Quoted 3 lines
+These ioctls are not supported on all architectures. +.IP
+.BI "TCGETS2 struct termios2 *" argpQuoted 8 lines
Please follow the same style as in the rest of the page:
.TP
.B TCGETS2
Argument:
.BI "struct termios2 *" argpUnless there's a good reason not to.
Few lines below in this file is:
.IR "struct termios\ *" .
.IP
.BI "TCGETA struct termio *" argp
.IP
.BI "TCSETA const struct termio *" argp
.IP
.BI "TCSETAW const struct termio *" argp
.IP
.BI "TCSETAF const struct termio *" argp
Quoted 6 lines
Quoted 3 lines
Therefore I used same style for TCGETS2...
So, how should I format this part to be consistent?
Hmm, sorry, I didn't see those.
Ah, now I see that Michael one hour later (after I sent this patch) fixed above style to another. See commit aceee9e827e6.
But changed it to another new style:
.RS
.TS
lb l.
TCGETA \fBstruct termio *\fPargp
TCSETA \fBconst struct termio *\fPargp
TCSETAW \fBconst struct termio *\fPargp
TCSETAF \fBconst struct termio *\fPargp
.TE
.RE
Quoted 3 lines
So there's a mix in the file.
The more correct form is the one I used, so please use that one (the one with .TP)
So, could you check with Michael which style to use? Because now there are 3 different (yours, Michael's and the one which was there before) and I'm really not sure what is correct...
Quoted 36 lines
Thanks,
Alex
Quoted 24 lines
Quoted 24 lines
Quoted 18 lines
+.IP
+.BI "TCSETS2 const struct termios2 *" argp
+.IP
+.BI "TCSETSW2 const struct termios2 *" argp
+.IP
+.BI "TCSETSF2 const struct termios2 *" argp
+.PPman2/ioctl_tty.2 +6
-0+The following four ioctls are just like +.BR TCGETS , +.BR TCSETS , +.BR TCSETSW , +.BR TCSETSF , +except that they take a .I "struct termio\ *" instead of a .IR "struct termios\ *" .Signature · 3 lines
Alejandro Colomar Linux man-pages comaintainer; https://www.kernel.org/doc/man-pages/ http://www.alejandro-colomar.es/Signature · 3 lines
Alejandro Colomar Linux man-pages comaintainer; https://www.kernel.org/doc/man-pages/ http://www.alejandro-colomar.es/
CC += glibc
Quoted 13 lines · Pali Rohár
Hello!
Quoted 7 lines · On Friday 30 July 2021 01:39:11 Alejandro Colomar (man-pages) wrote:
Hi Pali,
Quoted 2 lines · Pali Rohár
Quoted 2 lines
Quoted 2 lines
+.IR "<
asm/termbits.h>" .Is that the header that the user should include?
Yes.
Quoted 8 lines
Quoted 2 lines
I don't know. I typically avoid 'asm/' includes, but maybe in this case it's the correct one. Shouldn't the user maybe include <
linux/termios.h>?Problem is that you cannot include <
linux/termios.h> together with <sys/ioctl.h>. It cause redefinition of symbols and compile errors.And without <
sys/ioctl.h> you cannot callioctl()function which basically means that you cannot use TCGETS2 (as it is ioctl).
Seems fair.
Quoted 2 lines
Probably this is a bug in glibc header files...
I CCed glibc just in case they want to comment.
Quoted 6 lines
So currently it is needed to include <
asm/termbits.h> file to use TCGETS2 ioctl. I'm not sure if it is "correct", but it is the only possible option for now about which I know (unless you want to copy+paste structures and macros from that file into your program, to avoid inclusion of asm/* files).
Re copy&paste: no thanks :)
Quoted 3 lines
If you want, I can send a patch for ioctl_tty.2 example section with simple C program to show how to use TCGETS2/TCSETS2 ioctl.
Great! Please CC glibc in the patch.
Quoted 62 lines
Quoted 40 lines
user@sqli:/usr/include$ grep -rn 'struct termios {' asm-generic/termbits.h:12:struct termios { user@sqli:/usr/include$ grep -rn '<asm-generic/termbits.h>' x86_64-linux-gnu/asm/termbits.h:1:#include <asm-generic/termbits.h> user@sqli:/usr/include$ grep -rn '<asm/termbits.h>' asm-generic/termios.h:12:#include <asm/termbits.h> user@sqli:/usr/include$ grep -rn '<asm-generic/termios.h>' x86_64-linux-gnu/asm/termios.h:1:#include <asm-generic/termios.h> user@sqli:/usr/include$ grep -rn '<asm/termios.h>' linux/termios.h:6:#include <asm/termios.h> user@sqli:/usr/include$ grep -rn '<linux/termios.h>' user@sqli:/usr/include$Quoted 25 lines
Quoted 4 lines
Quoted 3 lines
+These ioctls are not supported on all architectures. +.IP
+.BI "TCGETS2 struct termios2 *" argpQuoted 8 lines
Please follow the same style as in the rest of the page:
.TP
.B TCGETS2
Argument:
.BI "struct termios2 *" argpUnless there's a good reason not to.
Few lines below in this file is:
.IR "struct termios\ *" .
.IP
.BI "TCGETA struct termio *" argp
.IP
.BI "TCSETA const struct termio *" argp
.IP
.BI "TCSETAW const struct termio *" argp
.IP
.BI "TCSETAF const struct termio *" argpQuoted 6 lines
Quoted 3 lines
Therefore I used same style for TCGETS2...
So, how should I format this part to be consistent?
Hmm, sorry, I didn't see those.
Ah, now I see that Michael one hour later (after I sent this patch) fixed above style to another. See commit
aceee9e827e6.But changed it to another new style:
.RS
.TS
lb l.
TCGETA \fBstruct termio *\fPargp
TCSETA \fBconst struct termio *\fPargp
TCSETAW \fBconst struct termio *\fPargp
TCSETAF \fBconst struct termio *\fPargp
.TE
.RE
Quoted 7 lines
Quoted 3 lines
So there's a mix in the file.
The more correct form is the one I used, so please use that one (the one with .TP)So, could you check with Michael which style to use? Because now there are 3 different (yours, Michael's and the one which was there before) and I'm really not sure what is correct...
Sorry, I was also confused, as I had Michael's version, and didn't see the table he reformatted, which I now understand was what you were doing (in the old format). So if what you wrote corresponds to what Michael reformatted, please use Michael's new format (the table).
Thanks,
Alex
Quoted 37 lines
Quoted 37 lines
Thanks,
Alex
Quoted 24 lines
Quoted 24 lines
Quoted 18 lines
+.IP
+.BI "TCSETS2 const struct termios2 *" argp
+.IP
+.BI "TCSETSW2 const struct termios2 *" argp
+.IP
+.BI "TCSETSF2 const struct termios2 *" argp
+.PPman2/ioctl_tty.2 +6
-0+The following four ioctls are just like +.BR TCGETS , +.BR TCSETS , +.BR TCSETSW , +.BR TCSETSF , +except that they take a .I "struct termio\ *" instead of a .IR "struct termios\ *" .Signature · 3 lines
Alejandro Colomar Linux man-pages comaintainer; https://www.kernel.org/doc/man-pages/ http://www.alejandro-colomar.es/Signature · 3 lines
Alejandro Colomar Linux man-pages comaintainer; https://www.kernel.org/doc/man-pages/ http://www.alejandro-colomar.es/
Signature · 3 lines
Alejandro Colomar Linux man-pages comaintainer; https://www.kernel.org/doc/man-pages/ http://www.alejandro-colomar.es/
Quoted 117 lines · On Friday 30 July 2021 09:04:46 Alejandro Colomar (man-pages) wrote:
CC += glibc
Quoted 13 lines · Pali Rohár
Hello!
Quoted 7 lines · On Friday 30 July 2021 01:39:11 Alejandro Colomar (man-pages) wrote:
Hi Pali,
Quoted 2 lines · Pali Rohár
Quoted 2 lines
Quoted 2 lines
+.IR "<
asm/termbits.h>" .Is that the header that the user should include?
Yes.
Quoted 8 lines
Quoted 2 lines
I don't know. I typically avoid 'asm/' includes, but maybe in this case it's the correct one. Shouldn't the user maybe include <
linux/termios.h>?Problem is that you cannot include <
linux/termios.h> together with <sys/ioctl.h>. It cause redefinition of symbols and compile errors.And without <
sys/ioctl.h> you cannot callioctl()function which basically means that you cannot use TCGETS2 (as it is ioctl).Seems fair.
Quoted 2 lines
Probably this is a bug in glibc header files...
I CCed glibc just in case they want to comment.
Quoted 6 lines
So currently it is needed to include <
asm/termbits.h> file to use TCGETS2 ioctl. I'm not sure if it is "correct", but it is the only possible option for now about which I know (unless you want to copy+paste structures and macros from that file into your program, to avoid inclusion of asm/* files).Re copy&paste: no thanks :)
Quoted 3 lines
If you want, I can send a patch for ioctl_tty.2 example section with simple C program to show how to use TCGETS2/TCSETS2 ioctl.
Great! Please CC glibc in the patch.
Quoted 62 lines
Quoted 40 lines
user@sqli:/usr/include$ grep -rn 'struct termios {' asm-generic/termbits.h:12:struct termios { user@sqli:/usr/include$ grep -rn '<asm-generic/termbits.h>' x86_64-linux-gnu/asm/termbits.h:1:#include <asm-generic/termbits.h> user@sqli:/usr/include$ grep -rn '<asm/termbits.h>' asm-generic/termios.h:12:#include <asm/termbits.h> user@sqli:/usr/include$ grep -rn '<asm-generic/termios.h>' x86_64-linux-gnu/asm/termios.h:1:#include <asm-generic/termios.h> user@sqli:/usr/include$ grep -rn '<asm/termios.h>' linux/termios.h:6:#include <asm/termios.h> user@sqli:/usr/include$ grep -rn '<linux/termios.h>' user@sqli:/usr/include$Quoted 25 lines
Quoted 4 lines
Quoted 3 lines
+These ioctls are not supported on all architectures. +.IP
+.BI "TCGETS2 struct termios2 *" argpQuoted 8 lines
Please follow the same style as in the rest of the page:
.TP
.B TCGETS2
Argument:
.BI "struct termios2 *" argpUnless there's a good reason not to.
Few lines below in this file is:
.IR "struct termios\ *" .
.IP
.BI "TCGETA struct termio *" argp
.IP
.BI "TCSETA const struct termio *" argp
.IP
.BI "TCSETAW const struct termio *" argp
.IP
.BI "TCSETAF const struct termio *" argpQuoted 6 lines
Quoted 3 lines
Therefore I used same style for TCGETS2...
So, how should I format this part to be consistent?
Hmm, sorry, I didn't see those.
Ah, now I see that Michael one hour later (after I sent this patch) fixed above style to another. See commit
aceee9e827e6.But changed it to another new style:
.RS
.TS
lb l.
TCGETA \fBstruct termio *\fPargp
TCSETA \fBconst struct termio *\fPargp
TCSETAW \fBconst struct termio *\fPargp
TCSETAF \fBconst struct termio *\fPargp
.TE
.REQuoted 7 lines
Quoted 3 lines
So there's a mix in the file.
The more correct form is the one I used, so please use that one (the one with .TP)So, could you check with Michael which style to use? Because now there are 3 different (yours, Michael's and the one which was there before) and I'm really not sure what is correct...
Quoted 8 lines
Sorry, I was also confused, as I had Michael's version, and didn't see the table he reformatted, which I now understand was what you were doing (in the old format). So if what you wrote corresponds to what Michael reformatted, please use Michael's new format (the table).
Thanks,
Alex
Hello! Now I sent a new version and reformatted this part according to Michael style.
Quoted 43 lines
Quoted 37 lines
Quoted 37 lines
Thanks,
Alex
Quoted 24 lines
Quoted 24 lines
Quoted 18 lines
+.IP
+.BI "TCSETS2 const struct termios2 *" argp
+.IP
+.BI "TCSETSW2 const struct termios2 *" argp
+.IP
+.BI "TCSETSF2 const struct termios2 *" argp
+.PPman2/ioctl_tty.2 +6
-0+The following four ioctls are just like +.BR TCGETS , +.BR TCSETS , +.BR TCSETSW , +.BR TCSETSF , +except that they take a .I "struct termio\ *" instead of a .IR "struct termios\ *" .Signature · 3 lines
Alejandro Colomar Linux man-pages comaintainer; https://www.kernel.org/doc/man-pages/ http://www.alejandro-colomar.es/Signature · 3 lines
Alejandro Colomar Linux man-pages comaintainer; https://www.kernel.org/doc/man-pages/ http://www.alejandro-colomar.es/Signature · 3 lines
Alejandro Colomar Linux man-pages comaintainer; https://www.kernel.org/doc/man-pages/ http://www.alejandro-colomar.es/
Quoted 2 lines · On Friday 30 July 2021 01:39:11 Alejandro Colomar (man-pages) wrote:
user@sqli:/usr/include$ grep -rn 'struct termios {'
asm-generic/termbits.h:12:struct termios {You have there a mistake. It is 'struct termios2', not 'struct termios'.
And for 'struct termios' it is more complicated as there are two different 'struct termios'. One in file <bits/termios.h> (included from <termios.h>) and one in file <asm-generic/termbits.h> (included from <linux/termios.h>).
Function tcsetattr() uses 'struct termios' from <bits/termios.h> and ioctl TCSETS uses 'struct termios' from <asm-generic/termbits.h>.
Quoted 10 lines
user@sqli:/usr/include$ grep -rn '<asm-generic/termbits.h>' x86_64-linux-gnu/asm/termbits.h:1:#include <asm-generic/termbits.h> user@sqli:/usr/include$ grep -rn '<asm/termbits.h>' asm-generic/termios.h:12:#include <asm/termbits.h> user@sqli:/usr/include$ grep -rn '<asm-generic/termios.h>' x86_64-linux-gnu/asm/termios.h:1:#include <asm-generic/termios.h> user@sqli:/usr/include$ grep -rn '<asm/termios.h>' linux/termios.h:6:#include <asm/termios.h> user@sqli:/usr/include$ grep -rn '<linux/termios.h>' user@sqli:/usr/include$
Hi Pali,
Quoted 6 lines · Pali Rohár
Quoted 2 lines · On Friday 30 July 2021 01:39:11 Alejandro Colomar (man-pages) wrote:
user@sqli:/usr/include$ grep -rn 'struct termios {' asm-generic/termbits.h:12:struct termios {You have there a mistake. It is 'struct termios2', not 'struct termios'.
Quoted 7 lines
And for 'struct termios' it is more complicated as there are two different 'struct termios'. One in file <
bits/termios.h> (included from <termios.h>) and one in file <asm-generic/termbits.h> (included from <linux/termios.h>).Function
tcsetattr()uses 'struct termios' from <bits/termios.h> and ioctl TCSETS uses 'struct termios' from <asm-generic/termbits.h>.
Right.
Anyway, it is in the same header:
user@sqli:/usr/include$ grep -rn 'struct termios2' | grep -v define
asm-generic/termbits.h:21:struct termios2 {Regards,
Alex
Quoted 11 lines
Quoted 11 lines
user@sqli:/usr/include$ grep -rn '<asm-generic/termbits.h>' x86_64-linux-gnu/asm/termbits.h:1:#include <asm-generic/termbits.h> user@sqli:/usr/include$ grep -rn '<asm/termbits.h>' asm-generic/termios.h:12:#include <asm/termbits.h> user@sqli:/usr/include$ grep -rn '<asm-generic/termios.h>' x86_64-linux-gnu/asm/termios.h:1:#include <asm-generic/termios.h> user@sqli:/usr/include$ grep -rn '<asm/termios.h>' linux/termios.h:6:#include <asm/termios.h> user@sqli:/usr/include$ grep -rn '<linux/termios.h>' user@sqli:/usr/include$
Signature · 3 lines
Alejandro Colomar Linux man-pages comaintainer; https://www.kernel.org/doc/man-pages/ http://www.alejandro-colomar.es/
PATCH v2 1/1 ioctl_tty.2: Document ioctls: TCGETS2, TCSETS2, TCSETSW2, TCSETSF2
In reply to Pali Rohár---
Changes in v2:
* Remove information about asm/termbits.h (will be in followup patch)
* Style fixes
--- man2/ioctl_tty.2 | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+)
man2/ioctl_tty.2 +29 -0
@@ -77,6 +77,35 @@ The following four ioctls are just like .BR TCSETSW , .BR TCSETSF , except that they take a +.I "struct termios2\ *" +instead of a +.IR "struct termios\ *" . +If struct member +.B c_cflag +contains +.B BOTHER +then baudrate is stored in struct members +.B c_ispeed +and +.B c_ospeed +as integer values. +These ioctls are not supported on all architectures. +.RS +.TS +lb l. +TCGETS2 \fBstruct termios2 *\fPargp +TCSETS2 \fBconst struct termios2 *\fPargp +TCSETSW2 \fBconst struct termios2 *\fPargp +TCSETSF2 \fBconst struct termios2 *\fPargp +.TE +.RE +.PP +The following four ioctls are just like +.BR TCGETS , +.BR TCSETS , +.BR TCSETSW , +.BR TCSETSF , +except that they take a .I "struct termio\ *" instead of a .IR "struct termios\ *" .
Signature · 1 line
2.20.1
Hi Pali,
Quoted 2 lines · Pali Rohár
Signed-off-by Pali Rohár <[email protected]>
Patch applied. Thanks,
Alex
Quoted 49 lines
---
Changes in v2:
* Remove information aboutasm/termbits.h(will be in followup patch)
* Style fixes--- man2/ioctl_tty.2 | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+)man2/ioctl_tty.2 +29
-0@@ -77,6 +77,35 @@ The following four ioctls are just like .BR TCSETSW , .BR TCSETSF , except that they take a +.I "struct termios2\ *" +instead of a +.IR "struct termios\ *" . +If struct member +.B c_cflag +contains +.B BOTHER +then baudrate is stored in struct members +.B c_ispeed +and +.B c_ospeed +as integer values. +These ioctls are not supported on all architectures. +.RS +.TS +lb l. +TCGETS2 \fBstruct termios2 *\fPargp +TCSETS2 \fBconst struct termios2 *\fPargp +TCSETSW2 \fBconst struct termios2 *\fPargp +TCSETSF2 \fBconst struct termios2 *\fPargp +.TE +.RE +.PP +The following four ioctls are just like +.BR TCGETS , +.BR TCSETS , +.BR TCSETSW , +.BR TCSETSF , +except that they take a .I "struct termio\ *" instead of a .IR "struct termios\ *" .
Signature · 3 lines
Alejandro Colomar Linux man-pages comaintainer; https://www.kernel.org/doc/man-pages/ http://www.alejandro-colomar.es/