summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorbors <bors@rust-lang.org>2021-10-19 03:51:42 +0000
committerbors <bors@rust-lang.org>2021-10-19 03:51:42 +0000
commit5d7f90ca900ef440c96aa0eacbf780a12c145f6b (patch)
tree4b9cd7d6b527ece2b3079d2365c0e03a4f89d9cf
parent6172388c68a1207acbbb5883b8141ca4039bc931 (diff)
parent5ddd0153e4da2c0749bcda428ae1c5f78aaf811e (diff)
downloadrust-libc-5d7f90ca900ef440c96aa0eacbf780a12c145f6b.tar.gz
Auto merge of #2455 - awidegreen:add_pthread_mutex_robust_support, r=JohnTitor
Adds pthread_mutexattr_[g|s]etrobust and pthread_mutex_consistent bindings Adds pthread_mutexattr_[g|s]etrobust and pthread_mutex_consistent bindings FreeBSD: https://cgit.freebsd.org/src/tree/include/pthread.h?id=65436b2e1207a98a1c752c14f8c059238c0eafda#n140 Linux: https://sourceware.org/git?p=glibc.git;a=blob;f=sysdeps/htl/bits/pthreadtypes.h;h=74127aea488a69af8fb63b8f353307e5d401a62b;hb=HEAD#l83
-rw-r--r--libc-test/semver/freebsd.txt3
-rw-r--r--libc-test/semver/linux.txt3
-rw-r--r--src/unix/bsd/freebsdlike/freebsd/mod.rs13
-rw-r--r--src/unix/linux_like/linux/mod.rs11
4 files changed, 30 insertions, 0 deletions
diff --git a/libc-test/semver/freebsd.txt b/libc-test/semver/freebsd.txt
index 0a36d714d6..5e8cf83b9c 100644
--- a/libc-test/semver/freebsd.txt
+++ b/libc-test/semver/freebsd.txt
@@ -1650,9 +1650,12 @@ pthread_getcpuclockid
pthread_getthreadid_np
pthread_kill
pthread_main_np
+pthread_mutex_consistent
pthread_mutex_timedlock
pthread_mutexattr_getpshared
pthread_mutexattr_setpshared
+pthread_mutexattr_getrobust
+pthread_mutexattr_setrobust
pthread_rwlockattr_getpshared
pthread_rwlockattr_setpshared
pthread_setaffinity_np
diff --git a/libc-test/semver/linux.txt b/libc-test/semver/linux.txt
index 08b79ba28d..ccfc2fb202 100644
--- a/libc-test/semver/linux.txt
+++ b/libc-test/semver/linux.txt
@@ -2897,9 +2897,12 @@ pthread_getattr_np
pthread_getcpuclockid
pthread_getschedparam
pthread_kill
+pthread_mutex_consistent
pthread_mutex_timedlock
pthread_mutexattr_getpshared
pthread_mutexattr_setpshared
+pthread_mutexattr_getrobust
+pthread_mutexattr_setrobust
pthread_rwlockattr_setpshared
pthread_setaffinity_np
pthread_setschedparam
diff --git a/src/unix/bsd/freebsdlike/freebsd/mod.rs b/src/unix/bsd/freebsdlike/freebsd/mod.rs
index 1f34b1abf6..92d8dac922 100644
--- a/src/unix/bsd/freebsdlike/freebsd/mod.rs
+++ b/src/unix/bsd/freebsdlike/freebsd/mod.rs
@@ -609,6 +609,8 @@ pub const EXTATTR_NAMESPACE_SYSTEM: ::c_int = 2;
pub const PTHREAD_STACK_MIN: ::size_t = MINSIGSTKSZ;
pub const PTHREAD_MUTEX_ADAPTIVE_NP: ::c_int = 4;
+pub const PTHREAD_MUTEX_STALLED: ::c_int = 0;
+pub const PTHREAD_MUTEX_ROBUST: ::c_int = 1;
pub const SIGSTKSZ: ::size_t = MINSIGSTKSZ + 32768;
pub const SF_NODISKIO: ::c_int = 0x00000001;
pub const SF_MNOWAIT: ::c_int = 0x00000002;
@@ -1808,6 +1810,17 @@ extern "C" {
cpusetp: *const cpuset_t,
) -> ::c_int;
+ pub fn pthread_mutex_consistent(mutex: *mut ::pthread_mutex_t) -> ::c_int;
+
+ pub fn pthread_mutexattr_getrobust(
+ attr: *mut ::pthread_mutexattr_t,
+ robust: *mut ::c_int,
+ ) -> ::c_int;
+ pub fn pthread_mutexattr_setrobust(
+ attr: *mut ::pthread_mutexattr_t,
+ robust: ::c_int,
+ ) -> ::c_int;
+
pub fn pthread_spin_init(lock: *mut pthread_spinlock_t, pshared: ::c_int) -> ::c_int;
pub fn pthread_spin_destroy(lock: *mut pthread_spinlock_t) -> ::c_int;
pub fn pthread_spin_lock(lock: *mut pthread_spinlock_t) -> ::c_int;
diff --git a/src/unix/linux_like/linux/mod.rs b/src/unix/linux_like/linux/mod.rs
index 5f725f0e67..7f837f2ab8 100644
--- a/src/unix/linux_like/linux/mod.rs
+++ b/src/unix/linux_like/linux/mod.rs
@@ -1491,6 +1491,8 @@ pub const PTHREAD_MUTEX_NORMAL: ::c_int = 0;
pub const PTHREAD_MUTEX_RECURSIVE: ::c_int = 1;
pub const PTHREAD_MUTEX_ERRORCHECK: ::c_int = 2;
pub const PTHREAD_MUTEX_DEFAULT: ::c_int = PTHREAD_MUTEX_NORMAL;
+pub const PTHREAD_MUTEX_STALLED: ::c_int = 0;
+pub const PTHREAD_MUTEX_ROBUST: ::c_int = 1;
pub const PTHREAD_PROCESS_PRIVATE: ::c_int = 0;
pub const PTHREAD_PROCESS_SHARED: ::c_int = 1;
pub const __SIZEOF_PTHREAD_COND_T: usize = 48;
@@ -3619,6 +3621,7 @@ extern "C" {
timeout: *const ::timespec,
sigmask: *const sigset_t,
) -> ::c_int;
+ pub fn pthread_mutex_consistent(mutex: *mut pthread_mutex_t) -> ::c_int;
pub fn pthread_mutex_timedlock(
lock: *mut pthread_mutex_t,
abstime: *const ::timespec,
@@ -3734,6 +3737,14 @@ extern "C" {
attr: *const pthread_mutexattr_t,
pshared: *mut ::c_int,
) -> ::c_int;
+ pub fn pthread_mutexattr_getrobust(
+ attr: *const pthread_mutexattr_t,
+ robustness: *mut ::c_int,
+ ) -> ::c_int;
+ pub fn pthread_mutexattr_setrobust(
+ attr: *mut pthread_mutexattr_t,
+ robustness: ::c_int,
+ ) -> ::c_int;
pub fn popen(command: *const c_char, mode: *const c_char) -> *mut ::FILE;
pub fn faccessat(
dirfd: ::c_int,