TaskSignal sets the calling task status to WAITING to prevent recursion through TaskYield.
r1982 | ffr | 2007-05-24 15:29:48 +1000 (Thu, 24 May 2007) | 2 lines
This commit is contained in:
committed by
Douglas Clowes
parent
06264a4b4b
commit
ae647f85fa
3
task.c
3
task.c
@@ -327,12 +327,14 @@ ente:
|
||||
int TaskSignal(pTaskMan self, int iSignal, void *pSigData)
|
||||
{
|
||||
pTaskHead pTemp, pEnd;
|
||||
int myStatus = self->pCurrent->iStatus;
|
||||
|
||||
assert(self);
|
||||
assert(self->iID == TASKERID);
|
||||
|
||||
/* Do one cycle until we are at the caller, then return to him*/
|
||||
pEnd = self->pCurrent;
|
||||
pEnd->iStatus = WAITING;
|
||||
IncrTaskPointer(self);
|
||||
while(self->pCurrent != pEnd)
|
||||
{
|
||||
@@ -343,6 +345,7 @@ ente:
|
||||
IncrTaskPointer(self);
|
||||
}
|
||||
/* finally, tell me about the thingie as well */
|
||||
pEnd->iStatus = myStatus;
|
||||
if(pEnd->pSignal)
|
||||
{
|
||||
pEnd->pSignal(pEnd->pData, iSignal, pSigData);
|
||||
|
||||
Reference in New Issue
Block a user