From 2198aabaeb3769cd84f43441b327a761e2d55b0b Mon Sep 17 00:00:00 2001 From: Torsten Merz <mer114@moon-ph.nexus.csiro.au> Date: Tue, 24 Sep 2019 18:37:26 +1000 Subject: [PATCH] added one shot function for NRT tasks --- smi/src/smi.c | 2 ++ smi/src/smi_def.h | 2 +- smi/src/taskdisp_nrt.c | 6 +++--- 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/smi/src/smi.c b/smi/src/smi.c index 93155ef..fd53aaa 100644 --- a/smi/src/smi.c +++ b/smi/src/smi.c @@ -498,6 +498,8 @@ printf("transition\n"); shm->taskStateSysVar[atomicStateVariables[i].taskStateVar].flags&=~(TASK_EXIT); // shm->taskStateSysVar[atomicStateVariables[i].taskStateVar].exclusive= // taskData[atomicStateVariables[i].taskID].exclusive; + shm->taskStateSysVar[atomicStateVariables[i].taskStateVar].oneShot= + taskData[atomicStateVariables[i].taskID].oneShot; shm->taskState[atomicStateVariables[i].taskStateVar].duration= taskData[atomicStateVariables[i].taskID].duration; // shm->taskStateSysVar[atomicStateVariables[i].taskStateVar].oneShot= diff --git a/smi/src/smi_def.h b/smi/src/smi_def.h index fb0b0a5..da9d547 100644 --- a/smi/src/smi_def.h +++ b/smi/src/smi_def.h @@ -68,7 +68,7 @@ typedef volatile struct { taskIDType taskID; processType process; signed char nrt; -// signed char oneShot; // no longer required for NRT as dispatcher waits for SMI + signed char oneShot; unsigned char numberOfDataPorts; dataPathIDType dataPort[MAX_NUMBER_OF_DATA_PORTS_PER_STATE]; } taskStateSysVarStruct; diff --git a/smi/src/taskdisp_nrt.c b/smi/src/taskdisp_nrt.c index 64e4199..c2f26db 100644 --- a/smi/src/taskdisp_nrt.c +++ b/smi/src/taskdisp_nrt.c @@ -193,10 +193,10 @@ usleep(10000); n=shm->taskStateSysVar[i].process; if (n==nrtProcessID) { if ((shm->taskStateSysVar[i].flags&TASK_EXEC)!=0 -/* && ((shm->taskStateSysVar[i].oneShot==0 - || (shm->taskStateSysVar[i].flags&TASK_ACTIVE)==0 + && ((shm->taskStateSysVar[i].oneShot==0 + || (shm->taskStateSysVar[i].flags&TASK_EXIT)==0 ) - ) */ + ) ) { shm->taskStateSysVar[i].flags|=TASK_ACTIVE; shm->taskStateSysVar[i].flags&=~(TASK_BUSY); -- GitLab