From: Nickolai Zeldovich Date: Tue, 13 Nov 2001 13:14:06 +0000 (+0000) Subject: nbobtainwritelock-fix-precedence-problem-20011113 X-Git-Tag: openafs-devel-1_3_0~130 X-Git-Url: https://git.michaelhowe.org/gitweb/?a=commitdiff_plain;h=85ccf89c5a6ec9b6ca8988a2cb839a7b6c70c667;p=packages%2Fo%2Fopenafs.git nbobtainwritelock-fix-precedence-problem-20011113 NBObtainWriteLock always returned 0 due to precedence problem. Also add NBObtainSharedLock --- diff --git a/src/afs/lock.h b/src/afs/lock.h index 343776412..33565093f 100644 --- a/src/afs/lock.h +++ b/src/afs/lock.h @@ -175,7 +175,7 @@ extern int afs_trclock; (lock)->src_indicator = src;\ ENDMAC -#define NBObtainWriteLock(lock, src) (((lock)->excl_locked || (lock)->readers_reading) ? EWOULDBLOCK : ((lock) -> excl_locked = WRITE_LOCK), ((lock)->pid_writer = MyPidxx), ((lock)->src_indicator = src), 0) +#define NBObtainWriteLock(lock, src) (((lock)->excl_locked || (lock)->readers_reading) ? EWOULDBLOCK : (((lock) -> excl_locked = WRITE_LOCK), ((lock)->pid_writer = MyPidxx), ((lock)->src_indicator = src), 0)) #define ObtainSharedLock(lock, src)\ BEGINMAC \ @@ -188,6 +188,8 @@ extern int afs_trclock; (lock)->src_indicator = src;\ ENDMAC +#define NBObtainSharedLock(lock, src) (((lock)->excl_locked) ? EWOULDBLOCK : (((lock) -> excl_locked = SHARED_LOCK), ((lock)->pid_writer = MyPidxx), ((lock)->src_indicator = src), 0)) + #define UpgradeSToWLock(lock, src)\ BEGINMAC \ /* if (afs_trclock) {icl_Trace2(cm_iclSetp, CM_TRACE_LOCKOBTAIN, ICL_TYPE_POINTER, (long)lock, ICL_TYPE_LONG, (long)BOOSTED_LOCK);} */ \ @@ -274,7 +276,7 @@ extern int afs_trclock; Afs_Lock_Obtain(lock, WRITE_LOCK); \ ENDMAC -#define NBObtainWriteLock(lock, src) (((lock)->excl_locked || (lock)->readers_reading) ? EWOULDBLOCK : ((lock) -> excl_locked = WRITE_LOCK), 0) +#define NBObtainWriteLock(lock, src) (((lock)->excl_locked || (lock)->readers_reading) ? EWOULDBLOCK : (((lock) -> excl_locked = WRITE_LOCK), 0)) #define ObtainSharedLock(lock, src)\ BEGINMAC \ @@ -285,6 +287,8 @@ extern int afs_trclock; Afs_Lock_Obtain(lock, SHARED_LOCK); \ ENDMAC +#define NBObtainSharedLock(lock, src) (((lock)->excl_locked) ? EWOULDBLOCK : (((lock) -> excl_locked = SHARED_LOCK), 0)) + #define UpgradeSToWLock(lock, src)\ BEGINMAC \ /* if (afs_trclock) {icl_Trace2(cm_iclSetp, CM_TRACE_LOCKOBTAIN, ICL_TYPE_POINTER, (long)lock, ICL_TYPE_LONG, (long)BOOSTED_LOCK);} */ \