mirror of
git://git.sv.gnu.org/emacs.git
synced 2026-04-05 22:02:01 -07:00
Change.mps.dylan.kinglet.160272:
Platform specific details of locks and threads appear in shared header files Copied from Perforce Change: 20903 ServerID: perforce.ravenbrook.com
This commit is contained in:
parent
7971083f78
commit
3aaab483df
2 changed files with 45 additions and 27 deletions
|
|
@ -1,30 +1,45 @@
|
|||
/* impl.c.lockcov
|
||||
* LOCK COVERAGE TEST
|
||||
*
|
||||
* $HopeName: MMsrc!lockcov.c(trunk.2) $
|
||||
* $HopeName: MMsrc!lockcov.c(trunk.3) $
|
||||
*/
|
||||
|
||||
#include "mpm.h"
|
||||
#include <stdlib.h> /* for malloc & free */
|
||||
|
||||
int main(void){
|
||||
LockStruct a,b;
|
||||
Lock a = malloc(LockSize());
|
||||
Lock b = malloc(LockSize());
|
||||
|
||||
LockInit(&a);
|
||||
LockInit(&b);
|
||||
LockClaim(&a);
|
||||
LockClaimRecursive(&b);
|
||||
LockReleaseMPM(&a);
|
||||
LockClaimRecursive(&b);
|
||||
LockFinish(&a);
|
||||
LockReleaseRecursive(&b);
|
||||
LockReleaseRecursive(&b);
|
||||
LockFinish(&b);
|
||||
LockInit(&a);
|
||||
LockClaim(&a);
|
||||
LockClaimRecursive(&a);
|
||||
LockReleaseRecursive(&a);
|
||||
LockReleaseMPM(&a);
|
||||
LockFinish(&a);
|
||||
AVER(a != NULL);
|
||||
AVER(b != NULL);
|
||||
|
||||
LockInit(a);
|
||||
LockInit(b);
|
||||
LockClaimGlobal();
|
||||
LockClaim(a);
|
||||
LockClaimRecursive(b);
|
||||
LockClaimGlobalRecursive();
|
||||
LockReleaseGlobal();
|
||||
LockClaimGlobal();
|
||||
LockReleaseMPM(a);
|
||||
LockClaimGlobalRecursive();
|
||||
LockReleaseGlobal();
|
||||
LockClaimRecursive(b);
|
||||
LockFinish(a);
|
||||
LockReleaseRecursive(b);
|
||||
LockReleaseRecursive(b);
|
||||
LockFinish(b);
|
||||
LockInit(a);
|
||||
LockClaim(a);
|
||||
LockClaimRecursive(a);
|
||||
LockReleaseGlobalRecursive();
|
||||
LockReleaseRecursive(a);
|
||||
LockReleaseMPM(a);
|
||||
LockFinish(a);
|
||||
LockReleaseGlobalRecursive();
|
||||
free(a);
|
||||
free(b);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
/* impl.c.lockutw3: LOCK COVERAGE TEST
|
||||
*
|
||||
* $HopeName: MMsrc!lockutw3.c(trunk.6) $
|
||||
* $HopeName: MMsrc!lockutw3.c(trunk.7) $
|
||||
*/
|
||||
|
||||
#include "mpm.h"
|
||||
|
|
@ -12,16 +12,16 @@
|
|||
|
||||
#include "mpswin.h"
|
||||
|
||||
SRCID(lockutw3, "$HopeName: MMsrc!lockutw3.c(trunk.6) $");
|
||||
SRCID(lockutw3, "$HopeName: MMsrc!lockutw3.c(trunk.7) $");
|
||||
|
||||
|
||||
static LockStruct lockStruct;
|
||||
static Lock lock;
|
||||
unsigned long shared,tmp;
|
||||
|
||||
|
||||
void incR(unsigned long i)
|
||||
{
|
||||
LockClaimRecursive(&lockStruct);
|
||||
LockClaimRecursive(lock);
|
||||
if(i<100) {
|
||||
while(i--) {
|
||||
tmp=shared;
|
||||
|
|
@ -31,7 +31,7 @@ void incR(unsigned long i)
|
|||
incR(i>>1);
|
||||
incR(i+1>>1);
|
||||
}
|
||||
LockReleaseRecursive(&lockStruct);
|
||||
LockReleaseRecursive(lock);
|
||||
}
|
||||
|
||||
void inc(unsigned long i)
|
||||
|
|
@ -39,7 +39,7 @@ void inc(unsigned long i)
|
|||
incR(i+1>>1);
|
||||
i>>=1;
|
||||
while(i){
|
||||
LockClaim(&lockStruct);
|
||||
LockClaim(lock);
|
||||
if(i>10000){
|
||||
incR(5000);
|
||||
i-=5000;
|
||||
|
|
@ -47,7 +47,7 @@ void inc(unsigned long i)
|
|||
tmp=shared;
|
||||
shared=tmp+1;
|
||||
i--;
|
||||
LockReleaseMPM(&lockStruct);
|
||||
LockReleaseMPM(lock);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -67,7 +67,10 @@ int main(void)
|
|||
|
||||
nthreads = 4;
|
||||
|
||||
LockInit(&lockStruct);
|
||||
lock = malloc(LockSize());
|
||||
AVER(lock != NULL);
|
||||
|
||||
LockInit(lock);
|
||||
|
||||
shared = 0;
|
||||
|
||||
|
|
@ -79,7 +82,7 @@ int main(void)
|
|||
|
||||
AVER(shared == nthreads*COUNT);
|
||||
|
||||
LockFinish(&lockStruct);
|
||||
LockFinish(lock);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue