cvs commit: src/sys/sys proc.h rwlock.h src/sys/kern kern_rwlock.c subr_turnstile.c

Jeff Roberson jeff at FreeBSD.org
Tue Feb 5 17:02:13 PST 2008


jeff        2008-02-06 01:02:13 UTC

  FreeBSD src repository

  Modified files:
    sys/sys              proc.h rwlock.h 
    sys/kern             kern_rwlock.c subr_turnstile.c 
  Log:
  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
  
  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 mailing list