latest version of osiThread
This commit is contained in:
@@ -328,7 +328,6 @@ LOCAL void errlogTask(void)
|
||||
while(TRUE) {
|
||||
char *pmessage;
|
||||
|
||||
semBinaryMustTake(pvtData.errlogTaskWaitForWork);
|
||||
while((pmessage = msgbufGetSend())) {
|
||||
semMutexMustTake(pvtData.listenerLock);
|
||||
if(pvtData.toConsole) printf("%s",pmessage);
|
||||
@@ -340,6 +339,7 @@ LOCAL void errlogTask(void)
|
||||
semMutexGive(pvtData.listenerLock);
|
||||
msgbufFreeSend();
|
||||
}
|
||||
semBinaryMustTake(pvtData.errlogTaskWaitForWork);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -31,22 +31,22 @@ static void binaryThread(void *arg)
|
||||
{
|
||||
info *pinfo = (info *)arg;
|
||||
time_t tp;
|
||||
printf("binaryThread %d starting time %d\n",pinfo->threadnum,time(&tp));
|
||||
printf("binaryThread %d starting time %ld\n",pinfo->threadnum,time(&tp));
|
||||
threadSleep(1.0);
|
||||
while(1) {
|
||||
semTakeStatus status;
|
||||
if(pinfo->quit) {
|
||||
printf("binaryThread %d returning time %d\n",
|
||||
printf("binaryThread %d returning time %ld\n",
|
||||
pinfo->threadnum,time(&tp));
|
||||
semBinaryGive(pinfo->binary);
|
||||
return;
|
||||
}
|
||||
status = semBinaryTake(pinfo->binary);
|
||||
if(status!=semTakeOK) {
|
||||
printf("task %d semBinaryTake returned %d time %d\n",
|
||||
printf("task %d semBinaryTake returned %d time %ld\n",
|
||||
pinfo->threadnum,(int)status,time(&tp));
|
||||
}
|
||||
printf("binaryThread %d semBinaryTake time %d\n",
|
||||
printf("binaryThread %d semBinaryTake time %ld\n",
|
||||
pinfo->threadnum,time(&tp));
|
||||
semBinaryGive(pinfo->binary);
|
||||
threadSleep(1.0);
|
||||
@@ -68,20 +68,20 @@ void semBinaryTest(int nthreads,int verbose)
|
||||
|
||||
errVerbose = verbose;
|
||||
binary = semBinaryMustCreate(semEmpty);
|
||||
printf("calling semBinaryTakeTimeout(binary,2.0) time %d\n",time(&tp));
|
||||
printf("calling semBinaryTakeTimeout(binary,2.0) time %ld\n",time(&tp));
|
||||
status = semBinaryTakeTimeout(binary,2.0);
|
||||
if(status!=semTakeTimeout) printf("status %d\n",status);
|
||||
printf("calling semBinaryTakeNoWait(binary) time %d\n",time(&tp));
|
||||
printf("calling semBinaryTakeNoWait(binary) time %ld\n",time(&tp));
|
||||
status = semBinaryTakeNoWait(binary);
|
||||
if(status!=semTakeTimeout) printf("status %d\n",status);
|
||||
printf("calling semBinaryGive() time %d\n",time(&tp));
|
||||
printf("calling semBinaryGive() time %ld\n",time(&tp));
|
||||
semBinaryGive(binary);
|
||||
printf("calling semBinaryTakeTimeout(binary,2.0) time %d\n",time(&tp));
|
||||
printf("calling semBinaryTakeTimeout(binary,2.0) time %ld\n",time(&tp));
|
||||
status = semBinaryTakeTimeout(binary,2.0);
|
||||
if(status) printf("status %d\n",status);
|
||||
printf("calling semBinaryGive() time %d\n",time(&tp));
|
||||
printf("calling semBinaryGive() time %ld\n",time(&tp));
|
||||
semBinaryGive(binary);
|
||||
printf("calling semBinaryTakeNoWait(binary) time %d\n",time(&tp));
|
||||
printf("calling semBinaryTakeNoWait(binary) time %ld\n",time(&tp));
|
||||
status = semBinaryTakeNoWait(binary);
|
||||
if(status) printf("status %d\n",status);
|
||||
|
||||
@@ -102,14 +102,14 @@ void semBinaryTest(int nthreads,int verbose)
|
||||
pinfo[i]->binary = binary;
|
||||
arg[i] = pinfo[i];
|
||||
id[i] = threadCreate(name[i],40,stackSize,binaryThread,arg[i]);
|
||||
printf("semTest created binaryThread %d id %p time %d\n",
|
||||
printf("semTest created binaryThread %d id %p time %ld\n",
|
||||
i, id[i],time(&tp));
|
||||
}
|
||||
threadSleep(2.0);
|
||||
printf("semTest calling semBinaryGive(binary) time %d\n",time(&tp));
|
||||
printf("semTest calling semBinaryGive(binary) time %ld\n",time(&tp));
|
||||
semBinaryGive(binary);
|
||||
threadSleep(5.0);
|
||||
printf("semTest setting quit time %d\n",time(&tp));
|
||||
printf("semTest setting quit time %ld\n",time(&tp));
|
||||
for(i=0; i<nthreads; i++) {
|
||||
pinfo[i]->quit = 1;
|
||||
}
|
||||
|
||||
@@ -24,9 +24,9 @@ of this distribution.
|
||||
static void threadFunc(void *arg)
|
||||
{
|
||||
int argvalue = *(int *)arg;
|
||||
printf("threadFunc %d starting\n",argvalue);
|
||||
errlogPrintf("threadFunc %d starting\n",argvalue);
|
||||
threadSleep(2.0);
|
||||
printf("threadFunc %d stopping\n",argvalue);
|
||||
errlogPrintf("threadFunc %d stopping\n",argvalue);
|
||||
}
|
||||
|
||||
void threadTest(int ntasks,int verbose)
|
||||
@@ -39,14 +39,14 @@ void threadTest(int ntasks,int verbose)
|
||||
int startPriority,minPriority,maxPriority;
|
||||
int errVerboseSave = errVerbose;
|
||||
|
||||
printf("threadTest ntasks %d verbose %d\n",ntasks,verbose);
|
||||
errVerbose = verbose;
|
||||
errlogInit(4096);
|
||||
id = calloc(ntasks,sizeof(threadId *));
|
||||
name = calloc(ntasks,sizeof(char **));
|
||||
arg = calloc(ntasks,sizeof(void *));
|
||||
printf("threadTest starting\n");
|
||||
errlogPrintf("threadTest starting\n");
|
||||
stackSize = threadGetStackSize(threadStackSmall);
|
||||
printf("stackSize %u\n",stackSize);
|
||||
errlogPrintf("stackSize %u\n",stackSize);
|
||||
for(i=0; i<ntasks; i++) {
|
||||
int *argvalue;
|
||||
name[i] = calloc(10,sizeof(char));
|
||||
@@ -56,18 +56,18 @@ printf("threadTest ntasks %d verbose %d\n",ntasks,verbose);
|
||||
*argvalue = i;
|
||||
startPriority = 50+i;
|
||||
id[i] = threadCreate(name[i],startPriority,stackSize,threadFunc,arg[i]);
|
||||
printf("threadTest created %d id %p\n",i,id[i]);
|
||||
errlogPrintf("threadTest created %d id %p\n",i,id[i]);
|
||||
startPriority = threadGetPriority(id[i]);
|
||||
threadSetPriority(id[i],threadPriorityMin);
|
||||
minPriority = threadGetPriority(id[i]);
|
||||
threadSetPriority(id[i],threadPriorityMax);
|
||||
maxPriority = threadGetPriority(id[i]);
|
||||
threadSetPriority(id[i],50+i);
|
||||
if(i==0)printf("startPriority %d minPriority %d maxPriority %d\n",
|
||||
if(i==0)errlogPrintf("startPriority %d minPriority %d maxPriority %d\n",
|
||||
startPriority,minPriority,maxPriority);
|
||||
}
|
||||
|
||||
threadSleep(5.0);
|
||||
printf("threadTest terminating\n");
|
||||
errlogPrintf("threadTest terminating\n");
|
||||
errVerbose = errVerboseSave;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user