summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorbors <bors@rust-lang.org>2021-11-06 15:19:43 +0000
committerbors <bors@rust-lang.org>2021-11-06 15:19:43 +0000
commit312447584ca33913d95ea5616e5c2f67ec77dd68 (patch)
tree562a18474b099cbaf419660b4bdb7297cab10604
parentafd3951113e89d7eac1d1f764ec8ac30039935fe (diff)
parent58a015cd2528eb571f0bd0f57759bc8e330a12c7 (diff)
downloadrust-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.rs17
-rw-r--r--src/unix/linux_like/android/mod.rs4
-rw-r--r--src/unix/linux_like/linux/gnu/b32/arm/mod.rs4
-rw-r--r--src/unix/linux_like/linux/gnu/b32/mips/mod.rs4
-rw-r--r--src/unix/linux_like/linux/gnu/b32/riscv32/mod.rs4
-rw-r--r--src/unix/linux_like/linux/gnu/b32/sparc/mod.rs4
-rw-r--r--src/unix/linux_like/linux/gnu/b32/x86/mod.rs4
-rw-r--r--src/unix/linux_like/linux/gnu/b64/aarch64/mod.rs4
-rw-r--r--src/unix/linux_like/linux/gnu/b64/mips64/mod.rs4
-rw-r--r--src/unix/linux_like/linux/gnu/b64/riscv64/mod.rs4
-rw-r--r--src/unix/linux_like/linux/gnu/b64/sparc64/mod.rs4
-rw-r--r--src/unix/linux_like/linux/gnu/b64/x86_64/mod.rs4
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;