Lines Matching defs:rwlp
247 rw_init(krwlock_t *rwlp, char *name, int type, void *arg)
250 VERIFY0(pthread_rwlock_init(&rwlp->rw_lock, NULL));
251 rwlp->rw_readers = 0;
252 rwlp->rw_owner = 0;
256 rw_destroy(krwlock_t *rwlp)
258 VERIFY0(pthread_rwlock_destroy(&rwlp->rw_lock));
262 rw_enter(krwlock_t *rwlp, krw_t rw)
265 VERIFY0(pthread_rwlock_rdlock(&rwlp->rw_lock));
266 atomic_inc_uint(&rwlp->rw_readers);
268 VERIFY0(pthread_rwlock_wrlock(&rwlp->rw_lock));
269 rwlp->rw_owner = pthread_self();
274 rw_exit(krwlock_t *rwlp)
276 if (RW_READ_HELD(rwlp))
277 atomic_dec_uint(&rwlp->rw_readers);
279 rwlp->rw_owner = 0;
281 VERIFY0(pthread_rwlock_unlock(&rwlp->rw_lock));
285 rw_tryenter(krwlock_t *rwlp, krw_t rw)
290 error = pthread_rwlock_tryrdlock(&rwlp->rw_lock);
292 error = pthread_rwlock_trywrlock(&rwlp->rw_lock);
296 atomic_inc_uint(&rwlp->rw_readers);
298 rwlp->rw_owner = pthread_self();
319 rw_tryupgrade(krwlock_t *rwlp)
321 (void) rwlp;