зеркало из https://github.com/mozilla/gecko-dev.git
Bugzilla 81666. new os2 locking
This commit is contained in:
Родитель
65cb721c9b
Коммит
97de1af860
|
@ -350,10 +350,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 --- */
|
||||
|
|
|
@ -277,7 +277,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);
|
||||
|
||||
|
@ -329,6 +329,33 @@ _PR_MD_NOTIFY_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_NOTIFYALL_CV(_MDCVar *cv, _MDLock *lock)
|
||||
{
|
||||
|
|
Загрузка…
Ссылка в новой задаче