From d4faa6c650c22318eae6e5421f0dcd67a498a67a Mon Sep 17 00:00:00 2001 From: Kyle Huey Date: Sat, 9 May 2020 21:59:25 -0700 Subject: [PATCH] Add f_owner_ex, F_GET/SETOWN_EX, F_GET/SETSIG, and move F_OWNER_* to the toplevel linux-like module because they're libc and platform agnostic. --- libc-test/build.rs | 5 +++-- src/unix/linux_like/linux/gnu/b64/x86_64/mod.rs | 4 ++++ src/unix/linux_like/linux/mod.rs | 5 +++++ src/unix/linux_like/linux/musl/b32/hexagon.rs | 3 --- src/unix/linux_like/mod.rs | 4 ++++ 5 files changed, 16 insertions(+), 5 deletions(-) diff --git a/libc-test/build.rs b/libc-test/build.rs index c46837c49b65f..7871db9f5c5b3 100755 --- a/libc-test/build.rs +++ b/libc-test/build.rs @@ -2472,7 +2472,7 @@ fn test_linux(target: &str) { s if s.ends_with("_nsec") && struct_.starts_with("stat") => { s.replace("e_nsec", ".tv_nsec") } - // FIXME: epoll_event.data is actuall a union in C, but in Rust + // FIXME: epoll_event.data is actually a union in C, but in Rust // it is only a u64 because we only expose one field // http://man7.org/linux/man-pages/man2/epoll_wait.2.html "u64" if struct_ == "epoll_event" => "data.u64".to_string(), @@ -2482,7 +2482,8 @@ fn test_linux(target: &str) { "type_" if struct_ == "input_event" || struct_ == "input_mask" - || struct_ == "ff_effect" => + || struct_ == "ff_effect" + || struct_ == "f_owner_ex" => { "type".to_string() } 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 faad040ef99e6..7dd203c65f092 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 @@ -634,7 +634,11 @@ pub const EFD_NONBLOCK: ::c_int = 0x800; pub const F_GETLK: ::c_int = 5; pub const F_GETOWN: ::c_int = 9; +pub const F_GETOWN_EX: ::c_int = 16; +pub const F_GETSIG: ::c_int = 11; pub const F_SETOWN: ::c_int = 8; +pub const F_SETOWN_EX: ::c_int = 15; +pub const F_SETSIG: ::c_int = 10; pub const F_SETLK: ::c_int = 6; pub const F_SETLKW: ::c_int = 7; pub const F_OFD_GETLK: ::c_int = 36; diff --git a/src/unix/linux_like/linux/mod.rs b/src/unix/linux_like/linux/mod.rs index c526d0207a7da..5f77e4477ee8d 100644 --- a/src/unix/linux_like/linux/mod.rs +++ b/src/unix/linux_like/linux/mod.rs @@ -541,6 +541,11 @@ s! { pub can_id: canid_t, pub can_mask: canid_t, } + + pub struct f_owner_ex { + pub type_: ::c_int, + pub pid: ::pid_t, + } } s_no_extra_traits! { diff --git a/src/unix/linux_like/linux/musl/b32/hexagon.rs b/src/unix/linux_like/linux/musl/b32/hexagon.rs index 0006197625094..b8ec54c44e75e 100644 --- a/src/unix/linux_like/linux/musl/b32/hexagon.rs +++ b/src/unix/linux_like/linux/musl/b32/hexagon.rs @@ -245,9 +245,6 @@ pub const FLUSHO: ::c_int = 4096; pub const F_OFD_GETLK: ::c_int = 36; pub const F_OFD_SETLK: ::c_int = 37; pub const F_OFD_SETLKW: ::c_int = 38; -pub const F_OWNER_PGRP: ::c_int = 2; -pub const F_OWNER_PID: ::c_int = 1; -pub const F_OWNER_TID: ::c_int = 0; pub const F_SETLK: ::c_int = 13; pub const F_SETLKW: ::c_int = 14; pub const F_SETOWN: ::c_int = 8; diff --git a/src/unix/linux_like/mod.rs b/src/unix/linux_like/mod.rs index 2a1b95f10adf0..7ecc8c94051cd 100644 --- a/src/unix/linux_like/mod.rs +++ b/src/unix/linux_like/mod.rs @@ -476,6 +476,10 @@ pub const F_SEAL_WRITE: ::c_int = 0x0008; // FIXME(#235): Include file sealing fcntls once we have a way to verify them. +pub const F_OWNER_PGRP: ::c_int = 2; +pub const F_OWNER_PID: ::c_int = 1; +pub const F_OWNER_TID: ::c_int = 0; + pub const SIGTRAP: ::c_int = 5; pub const PTHREAD_CREATE_JOINABLE: ::c_int = 0;