diff options
author | bors <bors@rust-lang.org> | 2021-11-06 15:19:43 +0000 |
---|---|---|
committer | bors <bors@rust-lang.org> | 2021-11-06 15:19:43 +0000 |
commit | 312447584ca33913d95ea5616e5c2f67ec77dd68 (patch) | |
tree | 562a18474b099cbaf419660b4bdb7297cab10604 | |
parent | afd3951113e89d7eac1d1f764ec8ac30039935fe (diff) | |
parent | 58a015cd2528eb571f0bd0f57759bc8e330a12c7 (diff) | |
download | rust-libc-312447584ca33913d95ea5616e5c2f67ec77dd68.tar.gz |
Auto merge of #2508 - de-vri-es:tcgets2-and-friends, r=Amanieu
Add TCGETS2 and TCSETS2 (and variants) ioctl constants for Linux.
I noticed that the `termios2` struct is already exposed, but the ioctl constants to use it are not. This PR adds the `TCGETS2`, `TCSETS2`, `TCSETSW2` and `TCSETSF2` on Linux so that you can actually do something with the `termios2` struct.
The `powerpc` architecture is notably missing, because it does not seem to support the `TCGETS2`/`TCSETS2` ioctls.
I *think* the constants are correct for all platforms, but I'm also not 100% sure. Do the unit tests verify the values for all supported platforms, by any chance?
-rw-r--r-- | libc-test/build.rs | 17 | ||||
-rw-r--r-- | src/unix/linux_like/android/mod.rs | 4 | ||||
-rw-r--r-- | src/unix/linux_like/linux/gnu/b32/arm/mod.rs | 4 | ||||
-rw-r--r-- | src/unix/linux_like/linux/gnu/b32/mips/mod.rs | 4 | ||||
-rw-r--r-- | src/unix/linux_like/linux/gnu/b32/riscv32/mod.rs | 4 | ||||
-rw-r--r-- | src/unix/linux_like/linux/gnu/b32/sparc/mod.rs | 4 | ||||
-rw-r--r-- | src/unix/linux_like/linux/gnu/b32/x86/mod.rs | 4 | ||||
-rw-r--r-- | src/unix/linux_like/linux/gnu/b64/aarch64/mod.rs | 4 | ||||
-rw-r--r-- | src/unix/linux_like/linux/gnu/b64/mips64/mod.rs | 4 | ||||
-rw-r--r-- | src/unix/linux_like/linux/gnu/b64/riscv64/mod.rs | 4 | ||||
-rw-r--r-- | src/unix/linux_like/linux/gnu/b64/sparc64/mod.rs | 4 | ||||
-rw-r--r-- | src/unix/linux_like/linux/gnu/b64/x86_64/mod.rs | 4 |
12 files changed, 59 insertions, 2 deletions
diff --git a/libc-test/build.rs b/libc-test/build.rs index f2a0e1dafb..651f25039c 100644 --- a/libc-test/build.rs +++ b/libc-test/build.rs @@ -1659,6 +1659,10 @@ fn test_android(target: &str) { // Requires Linux kernel 5.6 "VMADDR_CID_LOCAL" => true, + // FIXME: conflicts with standard C headers and is tested in + // `linux_termios.rs` below: + "TCGETS2" | "TCSETS2" | "TCSETSW2" | "TCSETSF2" => true, + _ => false, } }); @@ -2884,7 +2888,11 @@ fn test_linux(target: &str) { // FIXME: conflicts with glibc headers and is tested in // `linux_termios.rs` below: - "BOTHER" => true, + | "BOTHER" + | "TCGETS2" + | "TCSETS2" + | "TCSETSW2" + | "TCSETSF2" => true, // FIXME: on musl the pthread types are defined a little differently // - these constants are used by the glibc implementation. @@ -3227,10 +3235,15 @@ fn test_linux_like_apis(target: &str) { // test termios let mut cfg = ctest_cfg(); cfg.header("asm/termbits.h"); + cfg.header("linux/termios.h"); cfg.skip_type(|_| true) .skip_static(|_| true) .skip_fn(|_| true) - .skip_const(|c| c != "BOTHER") + .skip_const(|c| match c { + "BOTHER" => false, + "TCGETS2" | "TCSETS2" | "TCSETSW2" | "TCSETSF2" => false, + _ => true, + }) .skip_struct(|s| s != "termios2") .type_name(move |ty, is_struct, is_union| match ty { t if is_struct => format!("struct {}", t), diff --git a/src/unix/linux_like/android/mod.rs b/src/unix/linux_like/android/mod.rs index a902eed588..04cc89ea27 100644 --- a/src/unix/linux_like/android/mod.rs +++ b/src/unix/linux_like/android/mod.rs @@ -1341,6 +1341,10 @@ pub const TCGETS: ::c_int = 0x5401; pub const TCSETS: ::c_int = 0x5402; pub const TCSETSW: ::c_int = 0x5403; pub const TCSETSF: ::c_int = 0x5404; +pub const TCGETS2: ::c_int = 0x802c542a; +pub const TCSETS2: ::c_int = 0x402c542b; +pub const TCSETSW2: ::c_int = 0x402c542c; +pub const TCSETSF2: ::c_int = 0x402c542d; pub const TCGETA: ::c_int = 0x5405; pub const TCSETA: ::c_int = 0x5406; pub const TCSETAW: ::c_int = 0x5407; diff --git a/src/unix/linux_like/linux/gnu/b32/arm/mod.rs b/src/unix/linux_like/linux/gnu/b32/arm/mod.rs index 0e7fb70f6e..a1eaa2b6a6 100644 --- a/src/unix/linux_like/linux/gnu/b32/arm/mod.rs +++ b/src/unix/linux_like/linux/gnu/b32/arm/mod.rs @@ -447,6 +447,10 @@ pub const TCGETS: ::c_ulong = 0x5401; pub const TCSETS: ::c_ulong = 0x5402; pub const TCSETSW: ::c_ulong = 0x5403; pub const TCSETSF: ::c_ulong = 0x5404; +pub const TCGETS2: ::c_ulong = 0x802c542a; +pub const TCSETS2: ::c_ulong = 0x402c542b; +pub const TCSETSW2: ::c_ulong = 0x402c542c; +pub const TCSETSF2: ::c_ulong = 0x402c542d; pub const TCGETA: ::c_ulong = 0x5405; pub const TCSETA: ::c_ulong = 0x5406; pub const TCSETAW: ::c_ulong = 0x5407; diff --git a/src/unix/linux_like/linux/gnu/b32/mips/mod.rs b/src/unix/linux_like/linux/gnu/b32/mips/mod.rs index 4ded201fb4..3208d82ddc 100644 --- a/src/unix/linux_like/linux/gnu/b32/mips/mod.rs +++ b/src/unix/linux_like/linux/gnu/b32/mips/mod.rs @@ -730,6 +730,10 @@ pub const TCGETS: ::c_ulong = 0x540d; pub const TCSETS: ::c_ulong = 0x540e; pub const TCSETSW: ::c_ulong = 0x540f; pub const TCSETSF: ::c_ulong = 0x5410; +pub const TCGETS2: ::c_ulong = 0x4030542a; +pub const TCSETS2: ::c_ulong = 0x8030542b; +pub const TCSETSW2: ::c_ulong = 0x8030542c; +pub const TCSETSF2: ::c_ulong = 0x8030542d; pub const TCGETA: ::c_ulong = 0x5401; pub const TCSETA: ::c_ulong = 0x5402; pub const TCSETAW: ::c_ulong = 0x5403; diff --git a/src/unix/linux_like/linux/gnu/b32/riscv32/mod.rs b/src/unix/linux_like/linux/gnu/b32/riscv32/mod.rs index 09061f3837..73b317fc86 100644 --- a/src/unix/linux_like/linux/gnu/b32/riscv32/mod.rs +++ b/src/unix/linux_like/linux/gnu/b32/riscv32/mod.rs @@ -483,6 +483,10 @@ pub const TCGETS: ::c_ulong = 21505; pub const TCSETS: ::c_ulong = 21506; pub const TCSETSW: ::c_ulong = 21507; pub const TCSETSF: ::c_ulong = 21508; +pub const TCGETS2: ::c_ulong = 0x802c542a; +pub const TCSETS2: ::c_ulong = 0x402c542b; +pub const TCSETSW2: ::c_ulong = 0x402c542c; +pub const TCSETSF2: ::c_ulong = 0x402c542d; pub const TCGETA: ::c_ulong = 21509; pub const TCSETA: ::c_ulong = 21510; pub const TCSETAW: ::c_ulong = 21511; diff --git a/src/unix/linux_like/linux/gnu/b32/sparc/mod.rs b/src/unix/linux_like/linux/gnu/b32/sparc/mod.rs index 4364814094..15074b45e8 100644 --- a/src/unix/linux_like/linux/gnu/b32/sparc/mod.rs +++ b/src/unix/linux_like/linux/gnu/b32/sparc/mod.rs @@ -508,6 +508,10 @@ pub const TCGETS: ::c_ulong = 0x40245408; pub const TCSETS: ::c_ulong = 0x80245409; pub const TCSETSW: ::c_ulong = 0x8024540a; pub const TCSETSF: ::c_ulong = 0x8024540b; +pub const TCGETS2: ::c_ulong = 0x402c540c; +pub const TCSETS2: ::c_ulong = 0x802c540d; +pub const TCSETSW2: ::c_ulong = 0x802c540e; +pub const TCSETSF2: ::c_ulong = 0x802c540f; pub const TCGETA: ::c_ulong = 0x40125401; pub const TCSETA: ::c_ulong = 0x80125402; pub const TCSETAW: ::c_ulong = 0x80125403; diff --git a/src/unix/linux_like/linux/gnu/b32/x86/mod.rs b/src/unix/linux_like/linux/gnu/b32/x86/mod.rs index 75edd27885..cf83785441 100644 --- a/src/unix/linux_like/linux/gnu/b32/x86/mod.rs +++ b/src/unix/linux_like/linux/gnu/b32/x86/mod.rs @@ -666,6 +666,10 @@ pub const TCGETS: ::c_ulong = 0x5401; pub const TCSETS: ::c_ulong = 0x5402; pub const TCSETSW: ::c_ulong = 0x5403; pub const TCSETSF: ::c_ulong = 0x5404; +pub const TCGETS2: ::c_ulong = 0x802c542a; +pub const TCSETS2: ::c_ulong = 0x402c542b; +pub const TCSETSW2: ::c_ulong = 0x402c542c; +pub const TCSETSF2: ::c_ulong = 0x402c542d; pub const TCGETA: ::c_ulong = 0x5405; pub const TCSETA: ::c_ulong = 0x5406; pub const TCSETAW: ::c_ulong = 0x5407; diff --git a/src/unix/linux_like/linux/gnu/b64/aarch64/mod.rs b/src/unix/linux_like/linux/gnu/b64/aarch64/mod.rs index 35fe306122..dfb254e694 100644 --- a/src/unix/linux_like/linux/gnu/b64/aarch64/mod.rs +++ b/src/unix/linux_like/linux/gnu/b64/aarch64/mod.rs @@ -560,6 +560,10 @@ pub const TCGETS: ::c_ulong = 0x5401; pub const TCSETS: ::c_ulong = 0x5402; pub const TCSETSW: ::c_ulong = 0x5403; pub const TCSETSF: ::c_ulong = 0x5404; +pub const TCGETS2: ::c_ulong = 0x802c542a; +pub const TCSETS2: ::c_ulong = 0x402c542b; +pub const TCSETSW2: ::c_ulong = 0x402c542c; +pub const TCSETSF2: ::c_ulong = 0x402c542d; pub const TCGETA: ::c_ulong = 0x5405; pub const TCSETA: ::c_ulong = 0x5406; pub const TCSETAW: ::c_ulong = 0x5407; diff --git a/src/unix/linux_like/linux/gnu/b64/mips64/mod.rs b/src/unix/linux_like/linux/gnu/b64/mips64/mod.rs index 87939566f7..cbd4cae8a5 100644 --- a/src/unix/linux_like/linux/gnu/b64/mips64/mod.rs +++ b/src/unix/linux_like/linux/gnu/b64/mips64/mod.rs @@ -830,6 +830,10 @@ pub const TCGETS: ::c_ulong = 0x540d; pub const TCSETS: ::c_ulong = 0x540e; pub const TCSETSW: ::c_ulong = 0x540f; pub const TCSETSF: ::c_ulong = 0x5410; +pub const TCGETS2: ::c_ulong = 0x4030542a; +pub const TCSETS2: ::c_ulong = 0x8030542b; +pub const TCSETSW2: ::c_ulong = 0x8030542c; +pub const TCSETSF2: ::c_ulong = 0x8030542d; pub const TCGETA: ::c_ulong = 0x5401; pub const TCSETA: ::c_ulong = 0x5402; pub const TCSETAW: ::c_ulong = 0x5403; diff --git a/src/unix/linux_like/linux/gnu/b64/riscv64/mod.rs b/src/unix/linux_like/linux/gnu/b64/riscv64/mod.rs index 982277d818..9986dcb6ae 100644 --- a/src/unix/linux_like/linux/gnu/b64/riscv64/mod.rs +++ b/src/unix/linux_like/linux/gnu/b64/riscv64/mod.rs @@ -521,6 +521,10 @@ pub const TCGETS: ::c_ulong = 21505; pub const TCSETS: ::c_ulong = 21506; pub const TCSETSW: ::c_ulong = 21507; pub const TCSETSF: ::c_ulong = 21508; +pub const TCGETS2: ::c_ulong = 0x802c542a; +pub const TCSETS2: ::c_ulong = 0x402c542b; +pub const TCSETSW2: ::c_ulong = 0x402c542c; +pub const TCSETSF2: ::c_ulong = 0x402c542d; pub const TCGETA: ::c_ulong = 21509; pub const TCSETA: ::c_ulong = 21510; pub const TCSETAW: ::c_ulong = 21511; diff --git a/src/unix/linux_like/linux/gnu/b64/sparc64/mod.rs b/src/unix/linux_like/linux/gnu/b64/sparc64/mod.rs index 5ed83ab8ed..302dba5a00 100644 --- a/src/unix/linux_like/linux/gnu/b64/sparc64/mod.rs +++ b/src/unix/linux_like/linux/gnu/b64/sparc64/mod.rs @@ -587,6 +587,10 @@ pub const TCGETS: ::c_ulong = 0x40245408; pub const TCSETS: ::c_ulong = 0x80245409; pub const TCSETSW: ::c_ulong = 0x8024540a; pub const TCSETSF: ::c_ulong = 0x8024540b; +pub const TCGETS2: ::c_ulong = 0x402c540c; +pub const TCSETS2: ::c_ulong = 0x802c540d; +pub const TCSETSW2: ::c_ulong = 0x802c540e; +pub const TCSETSF2: ::c_ulong = 0x802c540f; pub const TCGETA: ::c_ulong = 0x40125401; pub const TCSETA: ::c_ulong = 0x80125402; pub const TCSETAW: ::c_ulong = 0x80125403; diff --git a/src/unix/linux_like/linux/gnu/b64/x86_64/mod.rs b/src/unix/linux_like/linux/gnu/b64/x86_64/mod.rs index 99937dfabd..0f113500a7 100644 --- a/src/unix/linux_like/linux/gnu/b64/x86_64/mod.rs +++ b/src/unix/linux_like/linux/gnu/b64/x86_64/mod.rs @@ -772,6 +772,10 @@ pub const TCGETS: ::c_ulong = 0x5401; pub const TCSETS: ::c_ulong = 0x5402; pub const TCSETSW: ::c_ulong = 0x5403; pub const TCSETSF: ::c_ulong = 0x5404; +pub const TCGETS2: ::c_ulong = 0x802c542a; +pub const TCSETS2: ::c_ulong = 0x402c542b; +pub const TCSETSW2: ::c_ulong = 0x402c542c; +pub const TCSETSF2: ::c_ulong = 0x402c542d; pub const TCGETA: ::c_ulong = 0x5405; pub const TCSETA: ::c_ulong = 0x5406; pub const TCSETAW: ::c_ulong = 0x5407; |