X-Git-Url: https://git.saurik.com/apple/libpthread.git/blobdiff_plain/964d3577b041867f776d8eb940bf4a1108ffb97c..c6e5f90c4dd303939f631da331df7b356da942e6:/pthread/pthread_spis.h diff --git a/pthread/pthread_spis.h b/pthread/pthread_spis.h index c54d3f5..91fb641 100644 --- a/pthread/pthread_spis.h +++ b/pthread/pthread_spis.h @@ -46,7 +46,7 @@ */ /* - * Extension SPIs. + * Extension SPIs; installed to /usr/include. */ #ifndef _PTHREAD_SPIS_H @@ -55,25 +55,51 @@ #include +#if __has_feature(assume_nonnull) +_Pragma("clang assume_nonnull begin") +#endif __BEGIN_DECLS #if (!defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE)) || defined(_DARWIN_C_SOURCE) /* firstfit */ #define PTHREAD_FIRSTFIT_MUTEX_INITIALIZER {_PTHREAD_FIRSTFIT_MUTEX_SIG_init, {0}} + /* * Mutex attributes */ -#define _PTHREAD_MUTEX_POLICY_NONE 0 -#define _PTHREAD_MUTEX_POLICY_FAIRSHARE 1 -#define _PTHREAD_MUTEX_POLICY_FIRSTFIT 2 - -/* sets the mutex policy attributes */ -__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0) -int pthread_mutexattr_setpolicy_np(pthread_mutexattr_t *, int ); +#define _PTHREAD_MUTEX_POLICY_NONE PTHREAD_MUTEX_POLICY_NONE +#define _PTHREAD_MUTEX_POLICY_FAIRSHARE PTHREAD_MUTEX_POLICY_FAIRSHARE_NP +#define _PTHREAD_MUTEX_POLICY_FIRSTFIT PTHREAD_MUTEX_POLICY_FIRSTFIT_NP #endif /* (!_POSIX_C_SOURCE && !_XOPEN_SOURCE) || _DARWIN_C_SOURCE */ +__API_AVAILABLE(macos(10.11)) +void _pthread_mutex_enable_legacy_mode(void); + +/* + * A version of pthread_create that is safely callable from an injected mach thread. + * + * The _create introspection hook will not fire for threads created from this function. + * + * It is not safe to call this function concurrently. + */ +__API_AVAILABLE(macos(10.12), ios(10.0), tvos(10.0), watchos(3.0)) +#if !_PTHREAD_SWIFT_IMPORTER_NULLABILITY_COMPAT +int pthread_create_from_mach_thread( + pthread_t _Nullable * _Nonnull __restrict, + const pthread_attr_t * _Nullable __restrict, + void * _Nullable (* _Nonnull)(void * _Nullable), + void * _Nullable __restrict); +#else +int pthread_create_from_mach_thread(pthread_t * __restrict, + const pthread_attr_t * _Nullable __restrict, + void *(* _Nonnull)(void *), void * _Nullable __restrict); +#endif + __END_DECLS +#if __has_feature(assume_nonnull) +_Pragma("clang assume_nonnull end") +#endif #endif /* _PTHREAD_SPIS_H */