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