Changeset View
Changeset View
Standalone View
Standalone View
include/pthread.h
| Show All 40 Lines | |||||
| #include <sys/cdefs.h> | #include <sys/cdefs.h> | ||||
| #include <sys/_pthreadtypes.h> | #include <sys/_pthreadtypes.h> | ||||
| #include <machine/_limits.h> | #include <machine/_limits.h> | ||||
| #include <machine/_types.h> | #include <machine/_types.h> | ||||
| #include <sys/_sigset.h> | #include <sys/_sigset.h> | ||||
| #include <sched.h> | #include <sched.h> | ||||
| #include <time.h> | #include <time.h> | ||||
| #if defined(__clang__) | |||||
| #pragma clang diagnostic push | |||||
| #pragma clang diagnostic ignored "-Wnullability-completeness" | |||||
| #endif | |||||
| /* | /* | ||||
| * Run-time invariant values: | * Run-time invariant values: | ||||
| */ | */ | ||||
| #define PTHREAD_DESTRUCTOR_ITERATIONS 4 | #define PTHREAD_DESTRUCTOR_ITERATIONS 4 | ||||
| #define PTHREAD_KEYS_MAX 256 | #define PTHREAD_KEYS_MAX 256 | ||||
| #define PTHREAD_STACK_MIN __MINSIGSTKSZ | #define PTHREAD_STACK_MIN __MINSIGSTKSZ | ||||
| #define PTHREAD_THREADS_MAX __ULONG_MAX | #define PTHREAD_THREADS_MAX __ULONG_MAX | ||||
| #define PTHREAD_BARRIER_SERIAL_THREAD -1 | #define PTHREAD_BARRIER_SERIAL_THREAD -1 | ||||
| ▲ Show 20 Lines • Show All 85 Lines • ▼ Show 20 Lines | struct _pthread_cleanup_info { | ||||
| __uintptr_t pthread_cleanup_pad[8]; | __uintptr_t pthread_cleanup_pad[8]; | ||||
| }; | }; | ||||
| /* | /* | ||||
| * Thread function prototype definitions: | * Thread function prototype definitions: | ||||
| */ | */ | ||||
| __BEGIN_DECLS | __BEGIN_DECLS | ||||
| int pthread_atfork(void (*)(void), void (*)(void), void (*)(void)); | int pthread_atfork(void (*)(void), void (*)(void), void (*)(void)); | ||||
| int pthread_attr_destroy(pthread_attr_t *); | int pthread_attr_destroy(pthread_attr_t * _Nonnull); | ||||
| int pthread_attr_getstack(const pthread_attr_t * __restrict, | int pthread_attr_getstack( | ||||
| void ** __restrict, size_t * __restrict); | const pthread_attr_t * _Nonnull __restrict, | ||||
| int pthread_attr_getstacksize(const pthread_attr_t *, size_t *); | void ** _Nonnull __restrict, | ||||
| int pthread_attr_getguardsize(const pthread_attr_t *, size_t *); | size_t * _Nonnull __restrict); | ||||
| int pthread_attr_getstacksize(const pthread_attr_t * _Nonnull, | |||||
| size_t * _Nonnull); | |||||
| int pthread_attr_getguardsize(const pthread_attr_t * _Nonnull, | |||||
| size_t * _Nonnull); | |||||
| int pthread_attr_getstackaddr(const pthread_attr_t *, void **); | int pthread_attr_getstackaddr(const pthread_attr_t *, void **); | ||||
| int pthread_attr_getdetachstate(const pthread_attr_t *, int *); | int pthread_attr_getdetachstate(const pthread_attr_t * _Nonnull, | ||||
| int pthread_attr_init(pthread_attr_t *); | int * _Nonnull); | ||||
| int pthread_attr_setstacksize(pthread_attr_t *, size_t); | int pthread_attr_init(pthread_attr_t * _Nonnull); | ||||
| int pthread_attr_setguardsize(pthread_attr_t *, size_t); | int pthread_attr_setstacksize(pthread_attr_t * _Nonnull, size_t); | ||||
| int pthread_attr_setstack(pthread_attr_t *, void *, size_t); | int pthread_attr_setguardsize(pthread_attr_t * _Nonnull, size_t); | ||||
| int pthread_attr_setstack(pthread_attr_t * _Nonnull, void *, | |||||
| size_t); | |||||
| int pthread_attr_setstackaddr(pthread_attr_t *, void *); | int pthread_attr_setstackaddr(pthread_attr_t *, void *); | ||||
| int pthread_attr_setdetachstate(pthread_attr_t *, int); | int pthread_attr_setdetachstate(pthread_attr_t * _Nonnull, int); | ||||
| int pthread_barrier_destroy(pthread_barrier_t *); | int pthread_barrier_destroy(pthread_barrier_t * _Nonnull); | ||||
| int pthread_barrier_init(pthread_barrier_t *, | int pthread_barrier_init(pthread_barrier_t * _Nonnull, | ||||
| const pthread_barrierattr_t *, unsigned); | const pthread_barrierattr_t *, unsigned); | ||||
| int pthread_barrier_wait(pthread_barrier_t *); | int pthread_barrier_wait(pthread_barrier_t * _Nonnull); | ||||
| int pthread_barrierattr_destroy(pthread_barrierattr_t *); | int pthread_barrierattr_destroy(pthread_barrierattr_t * _Nonnull); | ||||
| int pthread_barrierattr_getpshared(const pthread_barrierattr_t *, | int pthread_barrierattr_getpshared( | ||||
| int *); | const pthread_barrierattr_t * _Nonnull, int * _Nonnull); | ||||
| int pthread_barrierattr_init(pthread_barrierattr_t *); | int pthread_barrierattr_init(pthread_barrierattr_t * _Nonnull); | ||||
| int pthread_barrierattr_setpshared(pthread_barrierattr_t *, int); | int pthread_barrierattr_setpshared(pthread_barrierattr_t * _Nonnull, | ||||
| int); | |||||
| #define pthread_cleanup_push(cleanup_routine, cleanup_arg) \ | #define pthread_cleanup_push(cleanup_routine, cleanup_arg) \ | ||||
| { \ | { \ | ||||
| struct _pthread_cleanup_info __cleanup_info__; \ | struct _pthread_cleanup_info __cleanup_info__; \ | ||||
| __pthread_cleanup_push_imp(cleanup_routine, cleanup_arg,\ | __pthread_cleanup_push_imp(cleanup_routine, cleanup_arg,\ | ||||
| &__cleanup_info__); \ | &__cleanup_info__); \ | ||||
| { | { | ||||
| #define pthread_cleanup_pop(execute) \ | #define pthread_cleanup_pop(execute) \ | ||||
| (void)0; \ | (void)0; \ | ||||
| } \ | } \ | ||||
| __pthread_cleanup_pop_imp(execute); \ | __pthread_cleanup_pop_imp(execute); \ | ||||
| } | } | ||||
| int pthread_condattr_destroy(pthread_condattr_t *); | int pthread_condattr_destroy(pthread_condattr_t * _Nonnull); | ||||
| int pthread_condattr_getclock(const pthread_condattr_t *, | int pthread_condattr_getclock(const pthread_condattr_t * _Nonnull, | ||||
| clockid_t *); | clockid_t * _Nonnull); | ||||
| int pthread_condattr_getpshared(const pthread_condattr_t *, int *); | int pthread_condattr_getpshared(const pthread_condattr_t * _Nonnull, | ||||
| int pthread_condattr_init(pthread_condattr_t *); | int * _Nonnull); | ||||
| int pthread_condattr_setclock(pthread_condattr_t *, clockid_t); | int pthread_condattr_init(pthread_condattr_t * _Nonnull); | ||||
| int pthread_condattr_setpshared(pthread_condattr_t *, int); | int pthread_condattr_setclock(pthread_condattr_t * _Nonnull, | ||||
| int pthread_cond_broadcast(pthread_cond_t *); | clockid_t); | ||||
| int pthread_cond_destroy(pthread_cond_t *); | int pthread_condattr_setpshared(pthread_condattr_t * _Nonnull, int); | ||||
| int pthread_cond_init(pthread_cond_t *, | int pthread_cond_broadcast(pthread_cond_t * _Nonnull); | ||||
| int pthread_cond_destroy(pthread_cond_t * _Nonnull); | |||||
| int pthread_cond_init(pthread_cond_t * _Nonnull, | |||||
| const pthread_condattr_t *); | const pthread_condattr_t *); | ||||
| int pthread_cond_signal(pthread_cond_t *); | int pthread_cond_signal(pthread_cond_t * _Nonnull); | ||||
| int pthread_cond_timedwait(pthread_cond_t *, | int pthread_cond_timedwait(pthread_cond_t * _Nonnull, | ||||
| pthread_mutex_t *__mutex, const struct timespec *) | pthread_mutex_t * _Nonnull __mutex, | ||||
| const struct timespec * _Nonnull) | |||||
| __requires_exclusive(*__mutex); | __requires_exclusive(*__mutex); | ||||
| int pthread_cond_wait(pthread_cond_t *, pthread_mutex_t *__mutex) | int pthread_cond_wait(pthread_cond_t * _Nonnull, | ||||
| pthread_mutex_t * _Nonnull __mutex) | |||||
| __requires_exclusive(*__mutex); | __requires_exclusive(*__mutex); | ||||
| int pthread_create(pthread_t *, const pthread_attr_t *, | int pthread_create(pthread_t * _Nonnull, const pthread_attr_t *, | ||||
| void *(*) (void *), void *); | void *(* _Nonnull) (void *), void *); | ||||
| int pthread_detach(pthread_t); | int pthread_detach(pthread_t); | ||||
| int pthread_equal(pthread_t, pthread_t); | int pthread_equal(pthread_t, pthread_t); | ||||
| void pthread_exit(void *) __dead2; | void pthread_exit(void *) __dead2; | ||||
| void *pthread_getspecific(pthread_key_t); | void *pthread_getspecific(pthread_key_t); | ||||
| int pthread_getcpuclockid(pthread_t, clockid_t *); | int pthread_getcpuclockid(pthread_t, clockid_t * _Nonnull); | ||||
| int pthread_join(pthread_t, void **); | int pthread_join(pthread_t, void **); | ||||
| int pthread_key_create(pthread_key_t *, | int pthread_key_create(pthread_key_t * _Nonnull, | ||||
| void (*) (void *)); | void (*) (void *)); | ||||
| int pthread_key_delete(pthread_key_t); | int pthread_key_delete(pthread_key_t); | ||||
| int pthread_mutexattr_init(pthread_mutexattr_t *); | int pthread_mutexattr_init(pthread_mutexattr_t * _Nonnull); | ||||
| int pthread_mutexattr_destroy(pthread_mutexattr_t *); | int pthread_mutexattr_destroy(pthread_mutexattr_t * _Nonnull); | ||||
| int pthread_mutexattr_getpshared(const pthread_mutexattr_t *, | int pthread_mutexattr_getpshared( | ||||
| int *); | const pthread_mutexattr_t * _Nonnull, int * _Nonnull); | ||||
| int pthread_mutexattr_gettype(pthread_mutexattr_t *, int *); | int pthread_mutexattr_gettype(pthread_mutexattr_t * _Nonnull, | ||||
| int pthread_mutexattr_settype(pthread_mutexattr_t *, int); | int * _Nonnull); | ||||
| int pthread_mutexattr_setpshared(pthread_mutexattr_t *, int); | int pthread_mutexattr_settype(pthread_mutexattr_t * _Nonnull, int); | ||||
| int pthread_mutex_consistent(pthread_mutex_t *__mutex) | int pthread_mutexattr_setpshared(pthread_mutexattr_t * _Nonnull, | ||||
| __nonnull(1) __requires_exclusive(*__mutex); | int); | ||||
| int pthread_mutex_destroy(pthread_mutex_t *__mutex) | int pthread_mutex_consistent(pthread_mutex_t * _Nonnull __mutex) | ||||
| __requires_exclusive(*__mutex); | |||||
| int pthread_mutex_destroy(pthread_mutex_t * _Nonnull __mutex) | |||||
| __requires_unlocked(*__mutex); | __requires_unlocked(*__mutex); | ||||
| int pthread_mutex_init(pthread_mutex_t *__mutex, | int pthread_mutex_init(pthread_mutex_t * _Nonnull __mutex, | ||||
| const pthread_mutexattr_t *) | const pthread_mutexattr_t *) | ||||
| __requires_unlocked(*__mutex); | __requires_unlocked(*__mutex); | ||||
| int pthread_mutex_lock(pthread_mutex_t *__mutex) | int pthread_mutex_lock(pthread_mutex_t * _Nonnull __mutex) | ||||
| __locks_exclusive(*__mutex); | __locks_exclusive(*__mutex); | ||||
| int pthread_mutex_trylock(pthread_mutex_t *__mutex) | int pthread_mutex_trylock(pthread_mutex_t * _Nonnull __mutex) | ||||
| __trylocks_exclusive(0, *__mutex); | __trylocks_exclusive(0, *__mutex); | ||||
| int pthread_mutex_timedlock(pthread_mutex_t *__mutex, | int pthread_mutex_timedlock(pthread_mutex_t * _Nonnull __mutex, | ||||
| const struct timespec *) | const struct timespec * _Nonnull) | ||||
| __trylocks_exclusive(0, *__mutex); | __trylocks_exclusive(0, *__mutex); | ||||
| int pthread_mutex_unlock(pthread_mutex_t *__mutex) | int pthread_mutex_unlock(pthread_mutex_t * _Nonnull __mutex) | ||||
| __unlocks(*__mutex); | __unlocks(*__mutex); | ||||
| int pthread_once(pthread_once_t *, void (*) (void)); | int pthread_once(pthread_once_t * _Nonnull, | ||||
| int pthread_rwlock_destroy(pthread_rwlock_t *__rwlock) | void (* _Nonnull) (void)); | ||||
| int pthread_rwlock_destroy(pthread_rwlock_t * _Nonnull __rwlock) | |||||
| __requires_unlocked(*__rwlock); | __requires_unlocked(*__rwlock); | ||||
| int pthread_rwlock_init(pthread_rwlock_t *__rwlock, | int pthread_rwlock_init(pthread_rwlock_t * _Nonnull __rwlock, | ||||
| const pthread_rwlockattr_t *) | const pthread_rwlockattr_t *) | ||||
| __requires_unlocked(*__rwlock); | __requires_unlocked(*__rwlock); | ||||
| int pthread_rwlock_rdlock(pthread_rwlock_t *__rwlock) | int pthread_rwlock_rdlock(pthread_rwlock_t * _Nonnull __rwlock) | ||||
| __locks_shared(*__rwlock); | __locks_shared(*__rwlock); | ||||
| int pthread_rwlock_timedrdlock(pthread_rwlock_t *__rwlock, | int pthread_rwlock_timedrdlock(pthread_rwlock_t * _Nonnull __rwlock, | ||||
| const struct timespec *) | const struct timespec * _Nonnull) | ||||
| __trylocks_shared(0, *__rwlock); | __trylocks_shared(0, *__rwlock); | ||||
| int pthread_rwlock_timedwrlock(pthread_rwlock_t *__rwlock, | int pthread_rwlock_timedwrlock(pthread_rwlock_t * _Nonnull __rwlock, | ||||
| const struct timespec *) | const struct timespec * _Nonnull) | ||||
| __trylocks_exclusive(0, *__rwlock); | __trylocks_exclusive(0, *__rwlock); | ||||
| int pthread_rwlock_tryrdlock(pthread_rwlock_t *__rwlock) | int pthread_rwlock_tryrdlock(pthread_rwlock_t * _Nonnull __rwlock) | ||||
| __trylocks_shared(0, *__rwlock); | __trylocks_shared(0, *__rwlock); | ||||
| int pthread_rwlock_trywrlock(pthread_rwlock_t *__rwlock) | int pthread_rwlock_trywrlock(pthread_rwlock_t * _Nonnull __rwlock) | ||||
| __trylocks_exclusive(0, *__rwlock); | __trylocks_exclusive(0, *__rwlock); | ||||
| int pthread_rwlock_unlock(pthread_rwlock_t *__rwlock) | int pthread_rwlock_unlock(pthread_rwlock_t * _Nonnull __rwlock) | ||||
| __unlocks(*__rwlock); | __unlocks(*__rwlock); | ||||
| int pthread_rwlock_wrlock(pthread_rwlock_t *__rwlock) | int pthread_rwlock_wrlock(pthread_rwlock_t * _Nonnull __rwlock) | ||||
| __locks_exclusive(*__rwlock); | __locks_exclusive(*__rwlock); | ||||
| int pthread_rwlockattr_destroy(pthread_rwlockattr_t *); | int pthread_rwlockattr_destroy(pthread_rwlockattr_t * _Nonnull); | ||||
| int pthread_rwlockattr_getkind_np(const pthread_rwlockattr_t *, | int pthread_rwlockattr_getkind_np( | ||||
| int *); | const pthread_rwlockattr_t * _Nonnull, int *); | ||||
| int pthread_rwlockattr_getpshared(const pthread_rwlockattr_t *, | int pthread_rwlockattr_getpshared( | ||||
| int *); | const pthread_rwlockattr_t * _Nonnull, int * _Nonnull); | ||||
| int pthread_rwlockattr_init(pthread_rwlockattr_t *); | int pthread_rwlockattr_init(pthread_rwlockattr_t * _Nonnull); | ||||
| int pthread_rwlockattr_setkind_np(pthread_rwlockattr_t *, int); | int pthread_rwlockattr_setkind_np(pthread_rwlockattr_t * _Nonnull, | ||||
| int pthread_rwlockattr_setpshared(pthread_rwlockattr_t *, int); | int); | ||||
| int pthread_rwlockattr_setpshared(pthread_rwlockattr_t * _Nonnull, | |||||
| int); | |||||
| pthread_t pthread_self(void); | pthread_t pthread_self(void); | ||||
| int pthread_setspecific(pthread_key_t, const void *); | int pthread_setspecific(pthread_key_t, const void *); | ||||
| int pthread_spin_init(pthread_spinlock_t *__spin, int) | int pthread_spin_init(pthread_spinlock_t * _Nonnull __spin, int) | ||||
| __requires_unlocked(*__spin); | __requires_unlocked(*__spin); | ||||
| int pthread_spin_destroy(pthread_spinlock_t *__spin) | int pthread_spin_destroy(pthread_spinlock_t * _Nonnull __spin) | ||||
| __requires_unlocked(*__spin); | __requires_unlocked(*__spin); | ||||
| int pthread_spin_lock(pthread_spinlock_t *__spin) | int pthread_spin_lock(pthread_spinlock_t * _Nonnull __spin) | ||||
| __locks_exclusive(*__spin); | __locks_exclusive(*__spin); | ||||
| int pthread_spin_trylock(pthread_spinlock_t *__spin) | int pthread_spin_trylock(pthread_spinlock_t * _Nonnull __spin) | ||||
| __trylocks_exclusive(0, *__spin); | __trylocks_exclusive(0, *__spin); | ||||
| int pthread_spin_unlock(pthread_spinlock_t *__spin) | int pthread_spin_unlock(pthread_spinlock_t * _Nonnull __spin) | ||||
| __unlocks(*__spin); | __unlocks(*__spin); | ||||
| int pthread_cancel(pthread_t); | int pthread_cancel(pthread_t); | ||||
| int pthread_setcancelstate(int, int *); | int pthread_setcancelstate(int, int *); | ||||
| int pthread_setcanceltype(int, int *); | int pthread_setcanceltype(int, int *); | ||||
| void pthread_testcancel(void); | void pthread_testcancel(void); | ||||
| #if __BSD_VISIBLE | #if __BSD_VISIBLE | ||||
| int pthread_getprio(pthread_t); | int pthread_getprio(pthread_t); | ||||
| int pthread_setprio(pthread_t, int); | int pthread_setprio(pthread_t, int); | ||||
| void pthread_yield(void); | void pthread_yield(void); | ||||
| #endif | #endif | ||||
| int pthread_mutexattr_getprioceiling(pthread_mutexattr_t *, | int pthread_mutexattr_getprioceiling(pthread_mutexattr_t *, int *); | ||||
| int *); | int pthread_mutexattr_setprioceiling(pthread_mutexattr_t *, int); | ||||
| int pthread_mutexattr_setprioceiling(pthread_mutexattr_t *, | |||||
| int); | |||||
| int pthread_mutex_getprioceiling(pthread_mutex_t *, int *); | int pthread_mutex_getprioceiling(pthread_mutex_t *, int *); | ||||
| int pthread_mutex_setprioceiling(pthread_mutex_t *, int, int *); | int pthread_mutex_setprioceiling(pthread_mutex_t *, int, int *); | ||||
| int pthread_mutexattr_getprotocol(pthread_mutexattr_t *, int *); | int pthread_mutexattr_getprotocol(pthread_mutexattr_t *, int *); | ||||
| int pthread_mutexattr_setprotocol(pthread_mutexattr_t *, int); | int pthread_mutexattr_setprotocol(pthread_mutexattr_t *, int); | ||||
| int pthread_mutexattr_getrobust(pthread_mutexattr_t *__restrict, | int pthread_mutexattr_getrobust( | ||||
| int *__restrict) __nonnull_all; | pthread_mutexattr_t * _Nonnull __restrict, | ||||
| int pthread_mutexattr_setrobust(pthread_mutexattr_t *, int) | int * _Nonnull __restrict); | ||||
| __nonnull(1); | int pthread_mutexattr_setrobust(pthread_mutexattr_t * _Nonnull, | ||||
| int); | |||||
| int pthread_attr_getinheritsched(const pthread_attr_t *, int *); | int pthread_attr_getinheritsched(const pthread_attr_t *, int *); | ||||
| int pthread_attr_getschedparam(const pthread_attr_t *, | int pthread_attr_getschedparam(const pthread_attr_t * _Nonnull, | ||||
| struct sched_param *); | struct sched_param * _Nonnull); | ||||
| int pthread_attr_getschedpolicy(const pthread_attr_t *, int *); | int pthread_attr_getschedpolicy(const pthread_attr_t * _Nonnull, | ||||
| int pthread_attr_getscope(const pthread_attr_t *, int *); | int * _Nonnull); | ||||
| int pthread_attr_getscope(const pthread_attr_t * _Nonnull, | |||||
| int * _Nonnull); | |||||
| int pthread_attr_setinheritsched(pthread_attr_t *, int); | int pthread_attr_setinheritsched(pthread_attr_t *, int); | ||||
| int pthread_attr_setschedparam(pthread_attr_t *, | int pthread_attr_setschedparam(pthread_attr_t * _Nonnull, | ||||
| const struct sched_param *); | const struct sched_param * _Nonnull); | ||||
| int pthread_attr_setschedpolicy(pthread_attr_t *, int); | int pthread_attr_setschedpolicy(pthread_attr_t * _Nonnull, int); | ||||
| int pthread_attr_setscope(pthread_attr_t *, int); | int pthread_attr_setscope(pthread_attr_t * _Nonnull, int); | ||||
| int pthread_getschedparam(pthread_t pthread, int *, | int pthread_getschedparam(pthread_t pthread, int * _Nonnull, | ||||
| struct sched_param *); | struct sched_param * _Nonnull); | ||||
| int pthread_setschedparam(pthread_t, int, | int pthread_setschedparam(pthread_t, int, | ||||
| const struct sched_param *); | const struct sched_param * _Nonnull); | ||||
| #if __XSI_VISIBLE | #if __XSI_VISIBLE | ||||
| int pthread_getconcurrency(void); | int pthread_getconcurrency(void); | ||||
| int pthread_setconcurrency(int); | int pthread_setconcurrency(int); | ||||
| #endif | #endif | ||||
| void __pthread_cleanup_push_imp(void (*)(void *), void *, | void __pthread_cleanup_push_imp(void (*)(void *), void *, | ||||
| struct _pthread_cleanup_info *); | struct _pthread_cleanup_info *); | ||||
| void __pthread_cleanup_pop_imp(int); | void __pthread_cleanup_pop_imp(int); | ||||
| __END_DECLS | __END_DECLS | ||||
| #if defined(__clang__) | |||||
| #pragma clang diagnostic pop | |||||
| #endif | |||||
| #endif | #endif | ||||