summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorlarryh%netscape.com <devnull@localhost>2001-06-04 23:50:31 +0000
committerlarryh%netscape.com <devnull@localhost>2001-06-04 23:50:31 +0000
commitbf0dc563740da9f447be5683916b47a79bfc1d00 (patch)
treeaca2e787583a4919b4e42474a64431f74de6dbdd
parent47327dfed1bf5da434ce3ef0bfb4a9d1926201c5 (diff)
downloadnspr-hg-bf0dc563740da9f447be5683916b47a79bfc1d00.tar.gz
Bugzilla 81666. new os2 locking
-rw-r--r--pr/include/md/_os2.h8
-rw-r--r--pr/src/md/os2/os2cv.c28
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)
{