diff options
author | jeff <jeff@FreeBSD.org> | 2008-02-06 01:02:13 +0000 |
---|---|---|
committer | jeff <jeff@FreeBSD.org> | 2008-02-06 01:02:13 +0000 |
commit | 77ea5a24c756bd86d2880b544e3ae2c4fc85de96 (patch) | |
tree | 5bef34d7805971aa4bece9b058097a604c9778de /lib/libc/stdlib | |
parent | 2656e4d699d3e85d13d9ce6ed95c7a71f1f72563 (diff) | |
download | FreeBSD-src-77ea5a24c756bd86d2880b544e3ae2c4fc85de96.zip FreeBSD-src-77ea5a24c756bd86d2880b544e3ae2c4fc85de96.tar.gz |
Adaptive spinning in write path with readers and writer starvation avoidance.
- Move recursion checking into rwlock inlines to free a bit for use with
adaptive spinners.
- 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
Diffstat (limited to 'lib/libc/stdlib')
0 files changed, 0 insertions, 0 deletions