From 85ccf89c5a6ec9b6ca8988a2cb839a7b6c70c667 Mon Sep 17 00:00:00 2001 From: Nickolai Zeldovich Date: Tue, 13 Nov 2001 13:14:06 +0000 Subject: [PATCH] nbobtainwritelock-fix-precedence-problem-20011113 NBObtainWriteLock always returned 0 due to precedence problem. Also add NBObtainSharedLock --- src/afs/lock.h | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) 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);} */ \ -- 2.39.5