cvs commit: src/sys/kern kern_mutex.c kern_rwlock.c subr_turnstile.c src/sys/sys turnstile.h

Jeff Roberson jeff at FreeBSD.org
Mon Jun 4 23:51:44 UTC 2007


jeff        2007-06-04 23:51:44 UTC

  FreeBSD src repository

  Modified files:
    sys/kern             kern_mutex.c kern_rwlock.c 
                         subr_turnstile.c 
    sys/sys              turnstile.h 
  Log:
  Commit 3/14 of sched_lock decomposition.
   - Add a per-turnstile spinlock to solve potential priority propagation
     deadlocks that are possible with thread_lock().
   - The turnstile lock order is defined as the exact opposite of the
     lock order used with the sleep locks they represent.  This allows us
     to walk in reverse order in priority_propagate and this is the only
     place we wish to multiply acquire turnstile locks.
   - Use the turnstile_chain lock to protect assigning mutexes to turnstiles.
   - Change the turnstile interface to pass back turnstile pointers to the
     consumers.  This allows us to reduce some locking and makes it easier
     to cancel turnstile assignment while the turnstile chain lock is held.
  
  Tested by:      kris, current@
  Tested on:      i386, amd64, ULE, 4BSD, libthr, libkse, PREEMPTION, etc.
  Discussed with: kris, attilio, kmacy, jhb, julian, bde (small parts each)
  
  Revision  Changes    Path
  1.191     +122 -27   src/sys/kern/kern_mutex.c
  1.26      +28 -26    src/sys/kern/kern_rwlock.c
  1.168     +149 -135  src/sys/kern/subr_turnstile.c
  1.12      +6 -4      src/sys/sys/turnstile.h


More information about the cvs-all mailing list