[BACK]Return to kern_mutex.c CVS log [TXT][DIR] Up to [cvs.NetBSD.org] / src / sys / kern

Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.

Diff for /src/sys/kern/kern_mutex.c between version 1.3 and 1.4

version 1.3, 2007/02/10 21:07:52 version 1.4, 2007/02/15 15:49:27
Line 206  MUTEX_RELEASE(kmutex_t *mtx)
Line 206  MUTEX_RELEASE(kmutex_t *mtx)
         MUTEX_GIVE();          MUTEX_GIVE();
         mtx->mtx_owner = 0;          mtx->mtx_owner = 0;
 }  }
   
   static inline void
   MUTEX_CLEAR_WAITERS(kmutex_t *mtx)
   {
           /* nothing */
   }
 #endif  /* __HAVE_SIMPLE_MUTEXES */  #endif  /* __HAVE_SIMPLE_MUTEXES */
   
 /*  /*
Line 700  mutex_vector_exit(kmutex_t *mtx)
Line 706  mutex_vector_exit(kmutex_t *mtx)
         }          }
 }  }
   
   #ifndef __HAVE_SIMPLE_MUTEXES
   /*
    * mutex_wakeup:
    *
    *      Support routine for mutex_exit() that wakes up all waiters.
    *      We assume that the mutex has been released, but it need not
    *      be.
    */
   void
   mutex_wakeup(kmutex_t *mtx)
   {
           turnstile_t *ts;
   
           ts = turnstile_lookup(mtx);
           if (ts == NULL) {
                   turnstile_exit(mtx);
                   return;
           }
           MUTEX_CLEAR_WAITERS(mtx);
           turnstile_wakeup(ts, TS_WRITER_Q, TS_WAITERS(ts, TS_WRITER_Q), NULL);
   }
   #endif  /* !__HAVE_SIMPLE_MUTEXES */
   
 /*  /*
  * mutex_owned:   * mutex_owned:
  *   *
Line 742  mutex_tryenter(kmutex_t *mtx)
Line 771  mutex_tryenter(kmutex_t *mtx)
 {  {
         uintptr_t curthread;          uintptr_t curthread;
   
         MUTEX_WANTLOCK(mtx);  
   
         /*          /*
          * Handle spin mutexes.           * Handle spin mutexes.
          */           */
Line 751  mutex_tryenter(kmutex_t *mtx)
Line 778  mutex_tryenter(kmutex_t *mtx)
                 MUTEX_SPIN_SPLRAISE(mtx);                  MUTEX_SPIN_SPLRAISE(mtx);
 #ifdef FULL  #ifdef FULL
                 if (__cpu_simple_lock_try(&mtx->mtx_lock)) {                  if (__cpu_simple_lock_try(&mtx->mtx_lock)) {
                           MUTEX_WANTLOCK(mtx);
                         MUTEX_LOCKED(mtx);                          MUTEX_LOCKED(mtx);
                         return 1;                          return 1;
                 }                  }
                 MUTEX_SPIN_SPLRESTORE(mtx);                  MUTEX_SPIN_SPLRESTORE(mtx);
 #else  #else
                   MUTEX_WANTLOCK(mtx);
                 MUTEX_LOCKED(mtx);                  MUTEX_LOCKED(mtx);
                 return 1;                  return 1;
 #endif  #endif
Line 763  mutex_tryenter(kmutex_t *mtx)
Line 792  mutex_tryenter(kmutex_t *mtx)
                 curthread = (uintptr_t)curlwp;                  curthread = (uintptr_t)curlwp;
                 MUTEX_ASSERT(mtx, curthread != 0);                  MUTEX_ASSERT(mtx, curthread != 0);
                 if (MUTEX_ACQUIRE(mtx, curthread)) {                  if (MUTEX_ACQUIRE(mtx, curthread)) {
                           MUTEX_WANTLOCK(mtx);
                         MUTEX_LOCKED(mtx);                          MUTEX_LOCKED(mtx);
                         MUTEX_DASSERT(mtx,                          MUTEX_DASSERT(mtx,
                             MUTEX_OWNER(mtx->mtx_owner) == curthread);                              MUTEX_OWNER(mtx->mtx_owner) == curthread);

Legend:
Removed from v.1.3  
changed lines
  Added in v.1.4

CVSweb <webmaster@jp.NetBSD.org>