Changeset View
Changeset View
Standalone View
Standalone View
include/pthread.h
Show First 20 Lines • Show All 136 Lines • ▼ Show 20 Lines | |||||
#define PTHREAD_MUTEX_STALLED 0 | #define PTHREAD_MUTEX_STALLED 0 | ||||
#define PTHREAD_MUTEX_ROBUST 1 | #define PTHREAD_MUTEX_ROBUST 1 | ||||
struct _pthread_cleanup_info { | struct _pthread_cleanup_info { | ||||
__uintptr_t pthread_cleanup_pad[8]; | __uintptr_t pthread_cleanup_pad[8]; | ||||
}; | }; | ||||
#if defined(__clang__) | |||||
#pragma clang diagnostic push | |||||
#pragma clang diagnostic ignored "-Wnullability-completeness" | |||||
#endif | |||||
/* | /* | ||||
* 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 *, size_t *); | |||||
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 *); | ||||
int pthread_barrier_init(pthread_barrier_t *, | int pthread_barrier_init(pthread_barrier_t *, | ||||
const pthread_barrierattr_t *, unsigned); | const pthread_barrierattr_t *, unsigned); | ||||
int pthread_barrier_wait(pthread_barrier_t *); | int pthread_barrier_wait(pthread_barrier_t *); | ||||
int pthread_barrierattr_destroy(pthread_barrierattr_t *); | int pthread_barrierattr_destroy(pthread_barrierattr_t *); | ||||
int pthread_barrierattr_getpshared(const pthread_barrierattr_t *, | int pthread_barrierattr_getpshared(const pthread_barrierattr_t *, | ||||
int *); | int *); | ||||
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 *, 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 pthread_mutexattr_gettype(pthread_mutexattr_t *, int *); | int * _Nonnull); | ||||
int pthread_mutexattr_settype(pthread_mutexattr_t *, int); | int pthread_mutexattr_gettype(pthread_mutexattr_t * _Nonnull, | ||||
int pthread_mutexattr_setpshared(pthread_mutexattr_t *, int); | int * _Nonnull); | ||||
int pthread_mutex_consistent(pthread_mutex_t *__mutex) | int pthread_mutexattr_settype(pthread_mutexattr_t * _Nonnull, int); | ||||
__nonnull(1) __requires_exclusive(*__mutex); | int pthread_mutexattr_setpshared(pthread_mutexattr_t * _Nonnull, | ||||
int pthread_mutex_destroy(pthread_mutex_t *__mutex) | int); | ||||
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(const pthread_rwlockattr_t *, | ||||
int *); | 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 *, int); | ||||
int pthread_rwlockattr_setpshared(pthread_rwlockattr_t *, 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 *__spin, int) | ||||
__requires_unlocked(*__spin); | __requires_unlocked(*__spin); | ||||
int pthread_spin_destroy(pthread_spinlock_t *__spin) | int pthread_spin_destroy(pthread_spinlock_t *__spin) | ||||
__requires_unlocked(*__spin); | __requires_unlocked(*__spin); | ||||
int pthread_spin_lock(pthread_spinlock_t *__spin) | int pthread_spin_lock(pthread_spinlock_t *__spin) | ||||
__locks_exclusive(*__spin); | __locks_exclusive(*__spin); | ||||
int pthread_spin_trylock(pthread_spinlock_t *__spin) | int pthread_spin_trylock(pthread_spinlock_t *__spin) | ||||
__trylocks_exclusive(0, *__spin); | __trylocks_exclusive(0, *__spin); | ||||
int pthread_spin_unlock(pthread_spinlock_t *__spin) | int pthread_spin_unlock(pthread_spinlock_t *__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 | ||||
#endif | #endif |