Skip to content

Commit c2083a9

Browse files
Apple: Add additional pthread APIs
1 parent e19650d commit c2083a9

File tree

4 files changed

+94
-0
lines changed

4 files changed

+94
-0
lines changed

libc-test/semver/apple.txt

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1109,16 +1109,29 @@ PROC_CSM_TECS
11091109
PROC_PIDTASKALLINFO
11101110
PROC_PIDTASKINFO
11111111
PROC_PIDTHREADINFO
1112+
PTHREAD_CANCEL_ASYNCHRONOUS
1113+
PTHREAD_CANCEL_DEFERRED
1114+
PTHREAD_CANCEL_DISABLE
1115+
PTHREAD_CANCEL_ENABLE
1116+
PTHREAD_CANCELED
11121117
PTHREAD_CREATE_DETACHED
11131118
PTHREAD_CREATE_JOINABLE
1119+
PTHREAD_EXPLICIT_SCHED
1120+
PTHREAD_INHERIT_SCHED
11141121
PTHREAD_INTROSPECTION_THREAD_CREATE
11151122
PTHREAD_INTROSPECTION_THREAD_DESTROY
11161123
PTHREAD_INTROSPECTION_THREAD_START
11171124
PTHREAD_INTROSPECTION_THREAD_TERMINATE
11181125
PTHREAD_MUTEX_DEFAULT
11191126
PTHREAD_MUTEX_ERRORCHECK
1127+
PTHREAD_ONCE_INIT
1128+
PTHREAD_PRIO_INHERIT
1129+
PTHREAD_PRIO_NONE
1130+
PTHREAD_PRIO_PROTECT
11201131
PTHREAD_PROCESS_PRIVATE
11211132
PTHREAD_PROCESS_SHARED
1133+
PTHREAD_SCOPE_PROCESS
1134+
PTHREAD_SCOPE_SYSTEM
11221135
PTHREAD_STACK_MIN
11231136
PT_ATTACH
11241137
PT_ATTACHEXC
@@ -2023,8 +2036,18 @@ pseudo_AF_KEY
20232036
pseudo_AF_PIP
20242037
pseudo_AF_RTIP
20252038
pseudo_AF_XTP
2039+
pthread_atfork
2040+
pthread_attr_getdetachstate
2041+
pthread_attr_getinheritsched
20262042
pthread_attr_getschedparam
2043+
pthread_attr_getschedpolicy
2044+
pthread_attr_getscope
2045+
pthread_attr_getstackaddr
2046+
pthread_attr_setinheritsched
20272047
pthread_attr_setschedparam
2048+
pthread_attr_setschedpolicy
2049+
pthread_attr_setscope
2050+
pthread_attr_setstackaddr
20282051
pthread_cancel
20292052
pthread_condattr_getpshared
20302053
pthread_condattr_setpshared
@@ -2046,6 +2069,8 @@ pthread_kill
20462069
pthread_main_np
20472070
pthread_mutexattr_getpshared
20482071
pthread_mutexattr_setpshared
2072+
pthread_once
2073+
pthread_once_t
20492074
pthread_rwlockattr_getpshared
20502075
pthread_rwlockattr_setpshared
20512076
pthread_setname_np

src/unix/bsd/apple/b32/mod.rs

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,11 @@ s_no_extra_traits! {
5454
__sig: c_long,
5555
__opaque: [::c_char; 36]
5656
}
57+
58+
pub struct pthread_once_t {
59+
__sig: c_long,
60+
__opaque: [::c_char; 4],
61+
}
5762
}
5863

5964
cfg_if! {
@@ -103,6 +108,12 @@ pub const BIOCSRTIMEOUT: ::c_ulong = 0x8008426d;
103108
pub const BIOCGRTIMEOUT: ::c_ulong = 0x4008426e;
104109
pub const BIOCSETFNR: ::c_ulong = 0x8008427e;
105110

111+
const _PTHREAD_ONCE_SIG_INIT: c_long = 0x30B1BCBA;
112+
pub const PTHREAD_ONCE_INIT: ::pthread_once_t = ::pthread_once_t {
113+
__sig: _PTHREAD_ONCE_SIG_INIT,
114+
__opaque: [0; 4],
115+
};
116+
106117
extern "C" {
107118
pub fn exchangedata(
108119
path1: *const ::c_char,

src/unix/bsd/apple/b64/mod.rs

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,11 @@ s_no_extra_traits! {
5454
__sig: c_long,
5555
__opaque: [::c_char; 56]
5656
}
57+
58+
pub struct pthread_once_t {
59+
__sig: c_long,
60+
__opaque: [::c_char; 8],
61+
}
5762
}
5863

5964
cfg_if! {
@@ -103,6 +108,12 @@ pub const BIOCSRTIMEOUT: ::c_ulong = 0x8010426d;
103108
pub const BIOCGRTIMEOUT: ::c_ulong = 0x4010426e;
104109
pub const BIOCSETFNR: ::c_ulong = 0x8010427e;
105110

111+
const _PTHREAD_ONCE_SIG_INIT: c_long = 0x30B1BCBA;
112+
pub const PTHREAD_ONCE_INIT: ::pthread_once_t = ::pthread_once_t {
113+
__sig: _PTHREAD_ONCE_SIG_INIT,
114+
__opaque: [0; 8],
115+
};
116+
106117
extern "C" {
107118
pub fn exchangedata(
108119
path1: *const ::c_char,

src/unix/bsd/apple/mod.rs

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3770,6 +3770,19 @@ pub const PTHREAD_PROCESS_PRIVATE: ::c_int = 2;
37703770
pub const PTHREAD_PROCESS_SHARED: ::c_int = 1;
37713771
pub const PTHREAD_CREATE_JOINABLE: ::c_int = 1;
37723772
pub const PTHREAD_CREATE_DETACHED: ::c_int = 2;
3773+
pub const PTHREAD_INHERIT_SCHED: ::c_int = 1;
3774+
pub const PTHREAD_EXPLICIT_SCHED: ::c_int = 2;
3775+
pub const PTHREAD_CANCEL_ENABLE: ::c_int = 0x01;
3776+
pub const PTHREAD_CANCEL_DISABLE: ::c_int = 0x00;
3777+
pub const PTHREAD_CANCEL_DEFERRED: ::c_int = 0x02;
3778+
pub const PTHREAD_CANCEL_ASYNCHRONOUS: ::c_int = 0x00;
3779+
pub const PTHREAD_CANCELED: *mut ::c_void = 1 as *mut ::c_void;
3780+
pub const PTHREAD_SCOPE_SYSTEM: ::c_int = 1;
3781+
pub const PTHREAD_SCOPE_PROCESS: ::c_int = 2;
3782+
pub const PTHREAD_PRIO_NONE: ::c_int = 0;
3783+
pub const PTHREAD_PRIO_INHERIT: ::c_int = 1;
3784+
pub const PTHREAD_PRIO_PROTECT: ::c_int = 2;
3785+
37733786
#[cfg(target_arch = "aarch64")]
37743787
pub const PTHREAD_STACK_MIN: ::size_t = 16384;
37753788
#[cfg(not(target_arch = "aarch64"))]
@@ -5692,6 +5705,40 @@ extern "C" {
56925705
newp: *mut ::c_void,
56935706
newlen: ::size_t,
56945707
) -> ::c_int;
5708+
pub fn pthread_once(
5709+
once_control: *mut ::pthread_once_t,
5710+
init_routine: ::Option<unsafe extern "C" fn()>,
5711+
) -> ::c_int;
5712+
pub fn pthread_attr_getinheritsched(
5713+
attr: *const ::pthread_attr_t,
5714+
inheritsched: *mut ::c_int,
5715+
) -> ::c_int;
5716+
pub fn pthread_attr_getschedpolicy(
5717+
attr: *const ::pthread_attr_t,
5718+
policy: *mut ::c_int,
5719+
) -> ::c_int;
5720+
pub fn pthread_attr_getscope(
5721+
attr: *const ::pthread_attr_t,
5722+
contentionscope: *mut ::c_int,
5723+
) -> ::c_int;
5724+
pub fn pthread_attr_getstackaddr(
5725+
attr: *const ::pthread_attr_t,
5726+
stackaddr: *mut *mut ::c_void,
5727+
) -> ::c_int;
5728+
pub fn pthread_attr_getdetachstate(
5729+
attr: *const ::pthread_attr_t,
5730+
detachstate: *mut ::c_int,
5731+
) -> ::c_int;
5732+
pub fn pthread_attr_setinheritsched(
5733+
attr: *mut ::pthread_attr_t,
5734+
inheritsched: ::c_int,
5735+
) -> ::c_int;
5736+
pub fn pthread_attr_setschedpolicy(attr: *mut ::pthread_attr_t, policy: ::c_int) -> ::c_int;
5737+
pub fn pthread_attr_setscope(attr: *mut ::pthread_attr_t, contentionscope: ::c_int) -> ::c_int;
5738+
pub fn pthread_attr_setstackaddr(
5739+
attr: *mut ::pthread_attr_t,
5740+
stackaddr: *mut ::c_void,
5741+
) -> ::c_int;
56955742
pub fn pthread_setname_np(name: *const ::c_char) -> ::c_int;
56965743
pub fn pthread_getname_np(thread: ::pthread_t, name: *mut ::c_char, len: ::size_t) -> ::c_int;
56975744
pub fn pthread_mach_thread_np(thread: ::pthread_t) -> ::mach_port_t;

0 commit comments

Comments
 (0)