rwl 86 kern/kern_rwlock.c rw_enter_read(struct rwlock *rwl) rwl 88 kern/kern_rwlock.c unsigned long owner = rwl->rwl_owner; rwl 91 kern/kern_rwlock.c rw_cas(&rwl->rwl_owner, owner, owner + RWLOCK_READ_INCR))) rwl 92 kern/kern_rwlock.c rw_enter(rwl, RW_READ); rwl 96 kern/kern_rwlock.c rw_enter_write(struct rwlock *rwl) rwl 100 kern/kern_rwlock.c if (__predict_false(rw_cas(&rwl->rwl_owner, 0, rwl 102 kern/kern_rwlock.c rw_enter(rwl, RW_WRITE); rwl 106 kern/kern_rwlock.c rw_exit_read(struct rwlock *rwl) rwl 108 kern/kern_rwlock.c unsigned long owner = rwl->rwl_owner; rwl 111 kern/kern_rwlock.c rw_cas(&rwl->rwl_owner, owner, owner - RWLOCK_READ_INCR))) rwl 112 kern/kern_rwlock.c rw_exit(rwl); rwl 116 kern/kern_rwlock.c rw_exit_write(struct rwlock *rwl) rwl 118 kern/kern_rwlock.c unsigned long owner = rwl->rwl_owner; rwl 121 kern/kern_rwlock.c rw_cas(&rwl->rwl_owner, owner, 0))) rwl 122 kern/kern_rwlock.c rw_exit(rwl); rwl 145 kern/kern_rwlock.c rw_enter_diag(struct rwlock *rwl, int flags) rwl 150 kern/kern_rwlock.c if (RW_PROC(curproc) == RW_PROC(rwl->rwl_owner)) rwl 152 kern/kern_rwlock.c rwl->rwl_name); rwl 158 kern/kern_rwlock.c if ((rwl->rwl_owner & RWLOCK_WRLOCK) == 0) rwl 160 kern/kern_rwlock.c rwl->rwl_name); rwl 161 kern/kern_rwlock.c if (RW_PROC(curproc) != RW_PROC(rwl->rwl_owner)) rwl 163 kern/kern_rwlock.c rwl->rwl_name); rwl 176 kern/kern_rwlock.c rw_init(struct rwlock *rwl, const char *name) rwl 178 kern/kern_rwlock.c rwl->rwl_owner = 0; rwl 179 kern/kern_rwlock.c rwl->rwl_name = name; rwl 183 kern/kern_rwlock.c rw_enter(struct rwlock *rwl, int flags) rwl 194 kern/kern_rwlock.c while (__predict_false(((o = rwl->rwl_owner) & op->check) != 0)) { rwl 198 kern/kern_rwlock.c rw_enter_diag(rwl, flags); rwl 203 kern/kern_rwlock.c sleep_setup(&sls, rwl, op->wait_prio, rwl->rwl_name); rwl 207 kern/kern_rwlock.c do_sleep = !rw_cas(&rwl->rwl_owner, o, set); rwl 217 kern/kern_rwlock.c if (__predict_false(rw_cas(&rwl->rwl_owner, o, o + inc))) rwl 227 kern/kern_rwlock.c wakeup(rwl); rwl 233 kern/kern_rwlock.c rw_exit(struct rwlock *rwl) rwl 235 kern/kern_rwlock.c unsigned long owner = rwl->rwl_owner; rwl 240 kern/kern_rwlock.c owner = rwl->rwl_owner; rwl 246 kern/kern_rwlock.c } while (rw_cas(&rwl->rwl_owner, owner, set)); rwl 249 kern/kern_rwlock.c wakeup(rwl); rwl 86 sys/rwlock.h #define RWLOCK_OWNER(rwl) ((struct proc *)((rwl)->rwl_owner & ~RWLOCK_MASK))