[BACK]Return to mutex.h CVS log [TXT][DIR] Up to [cvs.NetBSD.org] / src / sys / arch / vax / include

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

Diff for /src/sys/arch/vax/include/mutex.h between version 1.5.2.2 and 1.5.2.3

version 1.5.2.2, 2007/02/26 09:08:40 version 1.5.2.3, 2007/09/03 14:30:49
Line 82 
Line 82 
  * an interlocking step.   * an interlocking step.
  */   */
   
   #ifndef LOCKDEBUG
   #define MUTEX_COUNT_BIAS                1
   #endif
   
 #ifndef __MUTEX_PRIVATE  #ifndef __MUTEX_PRIVATE
   
 struct kmutex {  struct kmutex {
         uintptr_t       mtx_pad1;          uintptr_t       mtx_pad1;
         uint32_t        mtx_pad2[2];          uint32_t        mtx_pad2;
 };  };
   
 #else   /* __MUTEX_PRIVATE */  #else   /* __MUTEX_PRIVATE */
Line 94  struct kmutex {
Line 98  struct kmutex {
 struct kmutex {  struct kmutex {
         /* Adaptive mutex */          /* Adaptive mutex */
         union {          union {
                 volatile uintptr_t      mtxu_owner;     /* 0-3 */                  volatile uintptr_t      u_owner;                /* 0-3 */
                 __cpu_simple_lock_t     mtxu_lock;      /* 0 */                  struct {
                           uint8_t                 s_dummylo;      /* 0 */
                           __cpu_simple_lock_t     s_lock;         /* 1 */
                           ipl_cookie_t            s_ipl;          /* 2 */
                           uint8_t                 s_dummyhi;      /* 3 */
                   } u_s;
         } mtx_u;          } mtx_u;
         ipl_cookie_t                    mtx_ipl;        /* 4-7 */          uint32_t                        mtx_id;                 /* 4-7 */
         uint32_t                        mtx_id;         /* 8-11 */  
 };  };
 #define mtx_owner       mtx_u.mtxu_owner  #define mtx_owner       mtx_u.u_owner
 #define mtx_lock        mtx_u.mtxu_lock  #define mtx_lock        mtx_u.u_s.s_lock
   #define mtx_ipl         mtx_u.u_s.s_ipl
   
 #define __HAVE_MUTEX_STUBS              1  #define __HAVE_MUTEX_STUBS              1
 #define __HAVE_SPIN_MUTEX_STUBS         1  #define __HAVE_SPIN_MUTEX_STUBS         1
   
 #define MUTEX_NO_SPIN_ACTIVE_P(ci)      ((ci)->ci_mtx_count == 1)  
   
 static inline uintptr_t  static inline uintptr_t
 MUTEX_OWNER(uintptr_t owner)  MUTEX_OWNER(uintptr_t owner)
 {  {
Line 143  static inline void
Line 150  static inline void
 MUTEX_INITIALIZE_SPIN(kmutex_t *mtx, u_int id, int ipl)  MUTEX_INITIALIZE_SPIN(kmutex_t *mtx, u_int id, int ipl)
 {  {
         mtx->mtx_id = (id << 1) | 1;          mtx->mtx_id = (id << 1) | 1;
           mtx->mtx_owner = 0x80000000;
         mtx->mtx_ipl = makeiplcookie(ipl);          mtx->mtx_ipl = makeiplcookie(ipl);
         mtx->mtx_lock = 0;          mtx->mtx_lock = 0;
 }  }
Line 165  MUTEX_DESTROY(kmutex_t *mtx)
Line 173  MUTEX_DESTROY(kmutex_t *mtx)
 static inline u_int  static inline u_int
 MUTEX_GETID(volatile kmutex_t *mtx)  MUTEX_GETID(volatile kmutex_t *mtx)
 {  {
         return (mtx)->mtx_id >> 1;          return mtx->mtx_id >> 1;
 }  }
   
 static inline bool  static inline bool
Line 188  MUTEX_ACQUIRE(kmutex_t *mtx, uintptr_t c
Line 196  MUTEX_ACQUIRE(kmutex_t *mtx, uintptr_t c
                 "clrl %1;"                  "clrl %1;"
                 "bbssi $31,%0,1f;"                  "bbssi $31,%0,1f;"
                 "incl %1;"                  "incl %1;"
                 "insv %2,%0,$31,%0;"                  "insv %2,$0,$31,%0;"
                 "1:"                  "1:"
             : "=m"(mtx->mtx_owner), "=r"(rv)              : "=m"(mtx->mtx_owner), "=r"(rv)
             : "g"(curthread));              : "g"(curthread));

Legend:
Removed from v.1.5.2.2  
changed lines
  Added in v.1.5.2.3

CVSweb <webmaster@jp.NetBSD.org>