From 8c24117c6369d6be40302070dc7871d02f6ea876 Mon Sep 17 00:00:00 2001 From: Joerg Thalheim <joerg@thalheim.io> Date: Mon, 16 Oct 2017 17:12:16 +0100 Subject: [PATCH] define SYS_renameat2 + flags on linux Motivation: there is no glibc wrapper for this syscall --- libc-test/build.rs | 4 +++- src/unix/notbsd/linux/mod.rs | 4 ++++ src/unix/notbsd/linux/musl/b32/arm.rs | 3 +++ src/unix/notbsd/linux/musl/b64/aarch64.rs | 3 +++ src/unix/notbsd/linux/musl/b64/powerpc64.rs | 3 +++ src/unix/notbsd/linux/other/b32/arm.rs | 3 +++ src/unix/notbsd/linux/other/b64/aarch64.rs | 3 +++ src/unix/notbsd/linux/other/b64/powerpc64.rs | 3 +++ src/unix/notbsd/linux/s390x.rs | 3 +++ 9 files changed, 28 insertions(+), 1 deletion(-) diff --git a/libc-test/build.rs b/libc-test/build.rs index 9bb46e0a..b7f78907 100644 --- a/libc-test/build.rs +++ b/libc-test/build.rs @@ -226,6 +226,7 @@ fn main() { cfg.header("sys/reboot.h"); if !emscripten { cfg.header("linux/netfilter_ipv4.h"); + cfg.header("linux/fs.h"); } if !musl { cfg.header("asm/mman.h"); @@ -464,7 +465,8 @@ fn main() { // Musl uses old, patched kernel headers "FALLOC_FL_COLLAPSE_RANGE" | "FALLOC_FL_ZERO_RANGE" | - "FALLOC_FL_INSERT_RANGE" | "FALLOC_FL_UNSHARE_RANGE" if musl => true, + "FALLOC_FL_INSERT_RANGE" | "FALLOC_FL_UNSHARE_RANGE" | + "RENAME_NOREPLACE" | "RENAME_EXCHANGE" | "RENAME_WHITEOUT" if musl => true, // Defined by libattr not libc on linux (hard to test). // See constant definition for more details. diff --git a/src/unix/notbsd/linux/mod.rs b/src/unix/notbsd/linux/mod.rs index c656e1dc..0841dd2e 100644 --- a/src/unix/notbsd/linux/mod.rs +++ b/src/unix/notbsd/linux/mod.rs @@ -673,6 +673,10 @@ pub const PTHREAD_PROCESS_PRIVATE: ::c_int = 0; pub const PTHREAD_PROCESS_SHARED: ::c_int = 1; pub const __SIZEOF_PTHREAD_COND_T: usize = 48; +pub const RENAME_NOREPLACE: ::c_int = 1; +pub const RENAME_EXCHANGE: ::c_int = 2; +pub const RENAME_WHITEOUT: ::c_int = 4; + pub const SCHED_OTHER: ::c_int = 0; pub const SCHED_FIFO: ::c_int = 1; pub const SCHED_RR: ::c_int = 2; diff --git a/src/unix/notbsd/linux/musl/b32/arm.rs b/src/unix/notbsd/linux/musl/b32/arm.rs index d0b46600..4f2d0bdc 100644 --- a/src/unix/notbsd/linux/musl/b32/arm.rs +++ b/src/unix/notbsd/linux/musl/b32/arm.rs @@ -390,3 +390,6 @@ pub const TIOCM_RNG: ::c_int = 0x080; pub const TIOCM_DSR: ::c_int = 0x100; pub const TIOCM_CD: ::c_int = TIOCM_CAR; pub const TIOCM_RI: ::c_int = TIOCM_RNG; + +// Syscall table +pub const SYS_renameat2: ::c_long = 382; diff --git a/src/unix/notbsd/linux/musl/b64/aarch64.rs b/src/unix/notbsd/linux/musl/b64/aarch64.rs index fc5863d3..e3a14c0d 100644 --- a/src/unix/notbsd/linux/musl/b64/aarch64.rs +++ b/src/unix/notbsd/linux/musl/b64/aarch64.rs @@ -79,3 +79,6 @@ pub const SIGSTKSZ: ::size_t = 12288; pub const PF_MAX: ::c_int = 43; #[doc(hidden)] pub const AF_MAX: ::c_int = PF_MAX; + +// Syscall table +pub const SYS_renameat2: ::c_long = 276; diff --git a/src/unix/notbsd/linux/musl/b64/powerpc64.rs b/src/unix/notbsd/linux/musl/b64/powerpc64.rs index 5f31ab89..1574bff5 100644 --- a/src/unix/notbsd/linux/musl/b64/powerpc64.rs +++ b/src/unix/notbsd/linux/musl/b64/powerpc64.rs @@ -78,3 +78,6 @@ pub const MINSIGSTKSZ: ::size_t = 2048; pub const AF_MAX: ::c_int = 42; #[doc(hidden)] pub const PF_MAX: ::c_int = AF_MAX; + +// Syscall table +pub const SYS_renameat2: ::c_long = 357; diff --git a/src/unix/notbsd/linux/other/b32/arm.rs b/src/unix/notbsd/linux/other/b32/arm.rs index 4de1f32b..8a8f3cee 100644 --- a/src/unix/notbsd/linux/other/b32/arm.rs +++ b/src/unix/notbsd/linux/other/b32/arm.rs @@ -249,3 +249,6 @@ pub const TIOCOUTQ: ::c_ulong = 0x5411; pub const TIOCGWINSZ: ::c_ulong = 0x5413; pub const TIOCSWINSZ: ::c_ulong = 0x5414; pub const FIONREAD: ::c_ulong = 0x541B; + +// Syscall table +pub const SYS_renameat2: ::c_long = 382; diff --git a/src/unix/notbsd/linux/other/b64/aarch64.rs b/src/unix/notbsd/linux/other/b64/aarch64.rs index f4583d58..3bae5375 100644 --- a/src/unix/notbsd/linux/other/b64/aarch64.rs +++ b/src/unix/notbsd/linux/other/b64/aarch64.rs @@ -488,3 +488,6 @@ pub const TIOCOUTQ: ::c_ulong = 0x5411; pub const TIOCGWINSZ: ::c_ulong = 0x5413; pub const TIOCSWINSZ: ::c_ulong = 0x5414; pub const FIONREAD: ::c_ulong = 0x541B; + +// Syscall table +pub const SYS_renameat2: ::c_long = 276; diff --git a/src/unix/notbsd/linux/other/b64/powerpc64.rs b/src/unix/notbsd/linux/other/b64/powerpc64.rs index 56a78b06..e3b81bed 100644 --- a/src/unix/notbsd/linux/other/b64/powerpc64.rs +++ b/src/unix/notbsd/linux/other/b64/powerpc64.rs @@ -485,3 +485,6 @@ pub const TIOCOUTQ: ::c_ulong = 0x40047473; pub const TIOCGWINSZ: ::c_ulong = 0x40087468; pub const TIOCSWINSZ: ::c_ulong = 0x80087467; pub const FIONREAD: ::c_ulong = 0x4004667f; + +// Syscall table +pub const SYS_renameat2: ::c_long = 357; diff --git a/src/unix/notbsd/linux/s390x.rs b/src/unix/notbsd/linux/s390x.rs index fa550730..aac10046 100644 --- a/src/unix/notbsd/linux/s390x.rs +++ b/src/unix/notbsd/linux/s390x.rs @@ -779,6 +779,9 @@ pub const TIOCMSET: ::c_ulong = 0x5418; pub const FIONREAD: ::c_ulong = 0x541B; pub const TIOCCONS: ::c_ulong = 0x541D; +// Syscall table +pub const SYS_renameat2: ::c_long = 347; + pub const RTLD_DEEPBIND: ::c_int = 0x8; pub const RTLD_GLOBAL: ::c_int = 0x100; pub const RTLD_NOLOAD: ::c_int = 0x4; -- GitLab