version 1.37, 2011/03/20 23:19:16 |
version 1.37.8.1, 2012/03/04 00:46:31 |
Line 348 rw_vector_enter(krwlock_t *rw, const krw |
|
Line 348 rw_vector_enter(krwlock_t *rw, const krw |
|
LOCKSTAT_START_TIMER(lsflag, spintime); |
LOCKSTAT_START_TIMER(lsflag, spintime); |
u_int count = SPINLOCK_BACKOFF_MIN; |
u_int count = SPINLOCK_BACKOFF_MIN; |
do { |
do { |
kpreempt_enable(); |
KPREEMPT_ENABLE(curlwp); |
SPINLOCK_BACKOFF(count); |
SPINLOCK_BACKOFF(count); |
kpreempt_disable(); |
KPREEMPT_DISABLE(curlwp); |
owner = rw->rw_owner; |
owner = rw->rw_owner; |
} while (rw_oncpu(owner)); |
} while (rw_oncpu(owner)); |
LOCKSTAT_STOP_TIMER(lsflag, spintime); |
LOCKSTAT_STOP_TIMER(lsflag, spintime); |