]> git.saurik.com Git - apple/libpthread.git/blobdiff - pthread/pthread_spis.h
libpthread-416.11.1.tar.gz
[apple/libpthread.git] / pthread / pthread_spis.h
index c54d3f51ffa95aedb706284156ef2386122120ea..91fb6419fa42e6734f1aaf13b13fd4f0ce3f6c21 100644 (file)
@@ -46,7 +46,7 @@
  */
 
 /*
- * Extension SPIs.
+ * Extension SPIs; installed to /usr/include.
  */
 
 #ifndef _PTHREAD_SPIS_H
 
 #include <pthread/pthread.h>
 
+#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 */