From f6cf436cf447cd8ee431913d57370c64555232a0 Mon Sep 17 00:00:00 2001 From: Ryan Zoeller Date: Mon, 21 Mar 2022 21:27:44 -0500 Subject: [PATCH] Add pthread_mutexattr_setprotocol and pthread_mutexattr_getprotocol on Linux and Android Include the PTHREAD_PRIO_* constants. Android does not define PTHREAD_PRIO_PROTECT. --- libc-test/semver/android.txt | 4 ++++ libc-test/semver/linux.txt | 5 +++++ src/unix/linux_like/android/mod.rs | 10 ++++++++++ src/unix/linux_like/linux/mod.rs | 11 +++++++++++ 4 files changed, 30 insertions(+) diff --git a/libc-test/semver/android.txt b/libc-test/semver/android.txt index a68ff86d7e38a..3f66b20e1a554 100644 --- a/libc-test/semver/android.txt +++ b/libc-test/semver/android.txt @@ -1659,6 +1659,8 @@ PTHREAD_MUTEX_ERRORCHECK PTHREAD_MUTEX_INITIALIZER PTHREAD_MUTEX_NORMAL PTHREAD_MUTEX_RECURSIVE +PTHREAD_PRIO_NONE +PTHREAD_PRIO_INHERIT PTHREAD_RWLOCK_INITIALIZER PTHREAD_STACK_MIN PTRACE_ATTACH @@ -3040,8 +3042,10 @@ pthread_mutex_timedlock pthread_mutex_trylock pthread_mutex_unlock pthread_mutexattr_destroy +pthread_mutexattr_getprotocol pthread_mutexattr_getpshared pthread_mutexattr_init +pthread_mutexattr_setprotocol pthread_mutexattr_setpshared pthread_mutexattr_settype pthread_mutexattr_t diff --git a/libc-test/semver/linux.txt b/libc-test/semver/linux.txt index 9eb096efe89aa..a548a3f44f997 100644 --- a/libc-test/semver/linux.txt +++ b/libc-test/semver/linux.txt @@ -1653,6 +1653,9 @@ PTHREAD_CREATE_DETACHED PTHREAD_CREATE_JOINABLE PTHREAD_MUTEX_DEFAULT PTHREAD_MUTEX_ERRORCHECK +PTHREAD_PRIO_NONE +PTHREAD_PRIO_INHERIT +PTHREAD_PRIO_PROTECT PTHREAD_PROCESS_PRIVATE PTHREAD_PROCESS_SHARED PTHREAD_STACK_MIN @@ -2951,7 +2954,9 @@ pthread_getschedparam pthread_kill pthread_mutex_consistent pthread_mutex_timedlock +pthread_mutexattr_getprotocol pthread_mutexattr_getpshared +pthread_mutexattr_setprotocol pthread_mutexattr_setpshared pthread_mutexattr_getrobust pthread_mutexattr_setrobust diff --git a/src/unix/linux_like/android/mod.rs b/src/unix/linux_like/android/mod.rs index 13d85b3f44540..4e4b6ae5614ba 100644 --- a/src/unix/linux_like/android/mod.rs +++ b/src/unix/linux_like/android/mod.rs @@ -1002,6 +1002,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_PRIO_NONE: ::c_int = 0; +pub const PTHREAD_PRIO_INHERIT: ::c_int = 1; // stdio.h pub const RENAME_NOREPLACE: ::c_int = 1; @@ -2783,6 +2785,14 @@ extern "C" { timeout: *const ::timespec, sigmask: *const sigset_t, ) -> ::c_int; + pub fn pthread_mutexattr_getprotocol( + attr: *const pthread_mutexattr_t, + protocol: *mut ::c_int, + ) -> ::c_int; + pub fn pthread_mutexattr_setprotocol( + attr: *mut pthread_mutexattr_t, + protocol: ::c_int, + ) -> ::c_int; pub fn pthread_mutex_timedlock( lock: *mut pthread_mutex_t, abstime: *const ::timespec, diff --git a/src/unix/linux_like/linux/mod.rs b/src/unix/linux_like/linux/mod.rs index bbc76f5daad63..6b41fd51aa2ce 100644 --- a/src/unix/linux_like/linux/mod.rs +++ b/src/unix/linux_like/linux/mod.rs @@ -1519,6 +1519,9 @@ 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_PRIO_NONE: ::c_int = 0; +pub const PTHREAD_PRIO_INHERIT: ::c_int = 1; +pub const PTHREAD_PRIO_PROTECT: ::c_int = 2; pub const PTHREAD_PROCESS_PRIVATE: ::c_int = 0; pub const PTHREAD_PROCESS_SHARED: ::c_int = 1; pub const __SIZEOF_PTHREAD_COND_T: usize = 48; @@ -3785,6 +3788,14 @@ extern "C" { timeout: *const ::timespec, sigmask: *const sigset_t, ) -> ::c_int; + pub fn pthread_mutexattr_getprotocol( + attr: *const pthread_mutexattr_t, + protocol: *mut ::c_int, + ) -> ::c_int; + pub fn pthread_mutexattr_setprotocol( + attr: *mut pthread_mutexattr_t, + protocol: ::c_int, + ) -> ::c_int; pub fn pthread_mutex_consistent(mutex: *mut pthread_mutex_t) -> ::c_int; pub fn pthread_mutex_timedlock( lock: *mut pthread_mutex_t,