diff options
author | larryh%netscape.com <devnull@localhost> | 2001-06-04 23:50:31 +0000 |
---|---|---|
committer | larryh%netscape.com <devnull@localhost> | 2001-06-04 23:50:31 +0000 |
commit | bf0dc563740da9f447be5683916b47a79bfc1d00 (patch) | |
tree | aca2e787583a4919b4e42474a64431f74de6dbdd | |
parent | 47327dfed1bf5da434ce3ef0bfb4a9d1926201c5 (diff) | |
download | nspr-hg-bf0dc563740da9f447be5683916b47a79bfc1d00.tar.gz |
Bugzilla 81666. new os2 locking
-rw-r--r-- | pr/include/md/_os2.h | 8 | ||||
-rw-r--r-- | pr/src/md/os2/os2cv.c | 28 |
2 files changed, 31 insertions, 5 deletions
diff --git a/pr/include/md/_os2.h b/pr/include/md/_os2.h index bcee5cbc..c08202e9 100644 --- a/pr/include/md/_os2.h +++ b/pr/include/md/_os2.h @@ -332,10 +332,10 @@ extern PRInt32 _MD_Accept(PRFileDesc *fd, PRNetAddr *raddr, PRUint32 *rlen, #define _PR_LOCK _MD_LOCK #define _PR_UNLOCK _MD_UNLOCK -#define _MD_NEW_LOCK(lock) (DosCreateMutexSem(0, &((lock)->mutex), 0, 0),(lock)->notified.length=0,(lock)->notified.link=NULL,PR_SUCCESS) -#define _MD_FREE_LOCK(lock) DosCloseMutexSem(((lock)->mutex)) -#define _MD_LOCK(lock) DosRequestMutexSem(((lock)->mutex), SEM_INDEFINITE_WAIT) -#define _MD_TEST_AND_LOCK(lock) (DosRequestMutexSem(((lock)->mutex), SEM_INDEFINITE_WAIT),PR_SUCCESS) +#define _MD_NEW_LOCK (_PR_MD_NEW_LOCK) +#define _MD_FREE_LOCK (_PR_MD_FREE_LOCK) +#define _MD_LOCK (_PR_MD_LOCK) +#define _MD_TEST_AND_LOCK (_PR_MD_TEST_AND_LOCK) #define _MD_UNLOCK (_PR_MD_UNLOCK) /* --- lock and cv waiting --- */ diff --git a/pr/src/md/os2/os2cv.c b/pr/src/md/os2/os2cv.c index f91ae80d..93ba58d4 100644 --- a/pr/src/md/os2/os2cv.c +++ b/pr/src/md/os2/os2cv.c @@ -261,7 +261,7 @@ _PR_MD_WAIT_CV(_MDCVar *cv, _MDLock *lock, PRIntervalTime timeout ) rv = DosWaitEventSem(thred->md.blocked_sema.sem, msecs); DosResetEventSem(thred->md.blocked_sema.sem, &count); - _MD_LOCK(lock); + DosRequestMutexSem((lock->mutex), SEM_INDEFINITE_WAIT); PR_ASSERT(rv == NO_ERROR || rv == ERROR_TIMEOUT); @@ -320,6 +320,32 @@ _PR_MD_NOTIFYALL_CV(_MDCVar *cv, _MDLock *lock) return; } +PRStatus +_PR_MD_NEW_LOCK(_MDLock *lock) +{ + DosCreateMutexSem(0, &(lock->mutex), 0, 0); + (lock)->notified.length=0; + (lock)->notified.link=NULL; + return PR_SUCCESS; +} + +void +_PR_MD_FREE_LOCK(_MDLock *lock) +{ + DosCloseMutexSem(lock->mutex); +} + +void _PR_MD_LOCK(_MDLock *lock) +{ + DosRequestMutexSem(lock->mutex, SEM_INDEFINITE_WAIT); +} + +PRBool +_PR_MD_TEST_AND_LOCK(_MDLock *lock) +{ + DosRequestMutexSem(lock->mutex, SEM_INDEFINITE_WAIT); + return PR_SUCCESS; +} void _PR_MD_UNLOCK(_MDLock *lock) { |