Lines Matching refs:rwlock

59 static int init_static(struct pthread *thread, pthread_rwlock_t *rwlock);
60 static int init_rwlock(pthread_rwlock_t *rwlock, pthread_rwlock_t *rwlock_out);
63 check_and_init_rwlock(pthread_rwlock_t *rwlock, pthread_rwlock_t *rwlock_out)
65 if (__predict_false(*rwlock == THR_PSHARED_PTR ||
66 *rwlock <= THR_RWLOCK_DESTROYED))
67 return (init_rwlock(rwlock, rwlock_out));
68 *rwlock_out = *rwlock;
73 init_rwlock(pthread_rwlock_t *rwlock, pthread_rwlock_t *rwlock_out)
78 if (*rwlock == THR_PSHARED_PTR) {
79 prwlock = __thr_pshared_offpage(rwlock, 0);
82 } else if ((prwlock = *rwlock) <= THR_RWLOCK_DESTROYED) {
84 ret = init_static(_get_curthread(), rwlock);
90 prwlock = *rwlock;
97 rwlock_init(pthread_rwlock_t *rwlock, const pthread_rwlockattr_t *attr)
108 *rwlock = prwlock;
110 prwlock = __thr_pshared_offpage(rwlock, 1);
114 *rwlock = THR_PSHARED_PTR;
120 _thr_rwlock_destroy(pthread_rwlock_t *rwlock)
125 prwlock = *rwlock;
131 *rwlock = THR_RWLOCK_DESTROYED;
132 __thr_pshared_destroy(rwlock);
135 *rwlock = THR_RWLOCK_DESTROYED;
143 init_static(struct pthread *thread, pthread_rwlock_t *rwlock)
149 if (*rwlock == THR_RWLOCK_INITIALIZER)
150 ret = rwlock_init(rwlock, NULL);
160 _thr_rwlock_init(pthread_rwlock_t *rwlock, const pthread_rwlockattr_t *attr)
164 *rwlock = NULL;
165 return (rwlock_init(rwlock, attr));
169 rwlock_rdlock_common(pthread_rwlock_t *rwlock, const struct timespec *abstime)
176 ret = check_and_init_rwlock(rwlock, &prwlock);
230 _Tthr_rwlock_rdlock(pthread_rwlock_t *rwlock)
233 return (rwlock_rdlock_common(rwlock, NULL));
237 _pthread_rwlock_timedrdlock(pthread_rwlock_t * __restrict rwlock,
241 return (rwlock_rdlock_common(rwlock, abstime));
245 _Tthr_rwlock_tryrdlock(pthread_rwlock_t *rwlock)
253 ret = check_and_init_rwlock(rwlock, &prwlock);
283 _Tthr_rwlock_trywrlock(pthread_rwlock_t *rwlock)
290 ret = check_and_init_rwlock(rwlock, &prwlock);
302 rwlock_wrlock_common(pthread_rwlock_t *rwlock, const struct timespec *abstime)
308 ret = check_and_init_rwlock(rwlock, &prwlock);
348 _Tthr_rwlock_wrlock(pthread_rwlock_t *rwlock)
351 return (rwlock_wrlock_common(rwlock, NULL));
355 _pthread_rwlock_timedwrlock(pthread_rwlock_t * __restrict rwlock,
359 return (rwlock_wrlock_common(rwlock, abstime));
363 _Tthr_rwlock_unlock(pthread_rwlock_t *rwlock)
370 if (*rwlock == THR_PSHARED_PTR) {
371 prwlock = __thr_pshared_offpage(rwlock, 0);
375 prwlock = *rwlock;