1
Fork 0
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:
Tony Mann 1999-08-31 14:32:28 +01:00
parent 7971083f78
commit 3aaab483df
2 changed files with 45 additions and 27 deletions

View file

@ -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;
}

View file

@ -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;
}