cvs commit: src/sys/sys proc.h rwlock.h src/sys/kern kern_rwlock.c
jeff at FreeBSD.org
Tue Feb 5 17:02:13 PST 2008
jeff 2008-02-06 01:02:13 UTC
FreeBSD src repository
sys/sys proc.h rwlock.h
sys/kern kern_rwlock.c subr_turnstile.c
Adaptive spinning in write path with readers and writer starvation avoidance.
- Move recursion checking into rwlock inlines to free a bit for use with
- Clear the RW_LOCK_WRITE_SPINNERS flag whenever the lock state changes
causing write spinners to restart their loop.
- Write spinners are limited by a count while readers hold the lock as
there is no way to know for certain whether readers are running still.
- In the read path block if there are write waiters or spinners to avoid
starving writers. Use a new per-thread count, td_rw_rlocks, to skip
starvation avoidance if it might cause a deadlock.
- Remove or change invalid assertions in turnstiles.
Reviewed by: attilio (developed parts of the patch as well)
Sponsored by: Nokia
Revision Changes Path
1.35 +172 -156 src/sys/kern/kern_rwlock.c
1.171 +3 -8 src/sys/kern/subr_turnstile.c
1.502 +2 -1 src/sys/sys/proc.h
1.15 +6 -3 src/sys/sys/rwlock.h
More information about the cvs-all