Lines Matching defs:rwlp

179 rw_init(krwlock_t *rwlp, char *name, int type, void *arg)
181 rwlock_init(&rwlp->rw_lock, USYNC_THREAD, NULL);
182 rwlp->rw_owner = NULL;
183 rwlp->initialized = B_TRUE;
184 rwlp->rw_count = 0;
188 rw_destroy(krwlock_t *rwlp)
190 ASSERT(rwlp->rw_count == 0);
191 rwlock_destroy(&rwlp->rw_lock);
192 rwlp->rw_owner = (void *)-1UL;
193 rwlp->initialized = B_FALSE;
197 rw_enter(krwlock_t *rwlp, krw_t rw)
199 //ASSERT(!RW_LOCK_HELD(rwlp));
200 ASSERT(rwlp->initialized == B_TRUE);
201 ASSERT(rwlp->rw_owner != (void *)-1UL);
202 ASSERT(rwlp->rw_owner != curthread);
205 VERIFY(rw_rdlock(&rwlp->rw_lock) == 0);
206 ASSERT(rwlp->rw_count >= 0);
207 atomic_add_int(&rwlp->rw_count, 1);
209 VERIFY(rw_wrlock(&rwlp->rw_lock) == 0);
210 ASSERT(rwlp->rw_count == 0);
211 rwlp->rw_count = -1;
212 rwlp->rw_owner = curthread;
217 rw_exit(krwlock_t *rwlp)
219 ASSERT(rwlp->initialized == B_TRUE);
220 ASSERT(rwlp->rw_owner != (void *)-1UL);
222 if (rwlp->rw_owner == curthread) {
224 ASSERT(rwlp->rw_count == -1);
225 rwlp->rw_count = 0;
226 rwlp->rw_owner = NULL;
229 ASSERT(rwlp->rw_count > 0);
230 atomic_add_int(&rwlp->rw_count, -1);
232 VERIFY(rw_unlock(&rwlp->rw_lock) == 0);
236 rw_tryenter(krwlock_t *rwlp, krw_t rw)
240 ASSERT(rwlp->initialized == B_TRUE);
241 ASSERT(rwlp->rw_owner != (void *)-1UL);
242 ASSERT(rwlp->rw_owner != curthread);
245 rv = rw_tryrdlock(&rwlp->rw_lock);
247 rv = rw_trywrlock(&rwlp->rw_lock);
250 ASSERT(rwlp->rw_owner == NULL);
252 ASSERT(rwlp->rw_count >= 0);
253 atomic_add_int(&rwlp->rw_count, 1);
255 ASSERT(rwlp->rw_count == 0);
256 rwlp->rw_count = -1;
257 rwlp->rw_owner = curthread;
267 rw_tryupgrade(krwlock_t *rwlp)
269 ASSERT(rwlp->initialized == B_TRUE);
270 ASSERT(rwlp->rw_owner != (void *)-1UL);
276 rw_lock_held(krwlock_t *rwlp)
279 return (rwlp->rw_count != 0);