if (Os_Arc_OsTickCounter >= 0) {\r
\r
OsCounterType *cPtr = Os_CfgGetCounter(Os_Arc_OsTickCounter);\r
+#if defined(USE_KERNEL_EXTRA)\r
+ OsPcbType *pcbPtr;\r
+#endif\r
\r
os_sys.tick++;\r
\r
cPtr->val = Os_CounterAdd( cPtr->val, Os_CounterGetMaxValue(cPtr), 1 );\r
\r
- // os_sys.tick = cPtr->val;\r
+#if defined(USE_KERNEL_EXTRA)\r
+ /* Check sleep() (ST_WAITING) tasks */\r
+ TAILQ_FOREACH(pcbPtr, &os_sys.timerHead, timerEntry ) {\r
+ --pcbPtr->timerDec;\r
+ if( pcbPtr->timerDec <= 0 ) {\r
+ /* Remove from the timer queue */\r
+ TAILQ_REMOVE(&os_sys.timerHead, pcbPtr, timerEntry);\r
+ /* ... and add to the ready queue */\r
+ Os_TaskMakeReady(pcbPtr);\r
+ }\r
+ }\r
+#endif\r
#if OS_ALARM_CNT!=0\r
Os_AlarmCheck(cPtr);\r
#endif\r