45 #define OS_VERSION 30300u
74 #if OS_CFG_SCHED_LOCK_TIME_MEAS_EN > 0u && defined(CPU_CFG_INT_DIS_MEAS_EN)
75 #define OS_SCHED_LOCK_TIME_MEAS_START() OS_SchedLockTimeMeasStart()
77 #define OS_SCHED_LOCK_TIME_MEAS_START()
81 #if OS_CFG_SCHED_LOCK_TIME_MEAS_EN > 0u && defined(CPU_CFG_INT_DIS_MEAS_EN)
82 #define OS_SCHED_LOCK_TIME_MEAS_STOP() OS_SchedLockTimeMeasStop()
84 #define OS_SCHED_LOCK_TIME_MEAS_STOP()
87 #if OS_CFG_ISR_POST_DEFERRED_EN > 0u
89 #define OS_CRITICAL_ENTER() \
91 CPU_CRITICAL_ENTER(); \
92 OSSchedLockNestingCtr++; \
93 if (OSSchedLockNestingCtr == 1u) { \
94 OS_SCHED_LOCK_TIME_MEAS_START(); \
96 CPU_CRITICAL_EXIT(); \
99 #define OS_CRITICAL_ENTER_CPU_CRITICAL_EXIT() \
101 OSSchedLockNestingCtr++; \
103 if (OSSchedLockNestingCtr == 1u) { \
104 OS_SCHED_LOCK_TIME_MEAS_START(); \
106 CPU_CRITICAL_EXIT(); \
110 #define OS_CRITICAL_EXIT() \
112 CPU_CRITICAL_ENTER(); \
113 OSSchedLockNestingCtr--; \
114 if (OSSchedLockNestingCtr == (OS_NESTING_CTR)0) { \
115 OS_SCHED_LOCK_TIME_MEAS_STOP(); \
116 if (OSIntQNbrEntries > (OS_OBJ_QTY)0) { \
117 CPU_CRITICAL_EXIT(); \
120 CPU_CRITICAL_EXIT(); \
123 CPU_CRITICAL_EXIT(); \
127 #define OS_CRITICAL_EXIT_NO_SCHED() \
129 CPU_CRITICAL_ENTER(); \
130 OSSchedLockNestingCtr--; \
131 if (OSSchedLockNestingCtr == (OS_NESTING_CTR)0) { \
132 OS_SCHED_LOCK_TIME_MEAS_STOP(); \
134 CPU_CRITICAL_EXIT(); \
141 #define OS_CRITICAL_ENTER() CPU_CRITICAL_ENTER()
143 #define OS_CRITICAL_ENTER_CPU_CRITICAL_EXIT()
145 #define OS_CRITICAL_EXIT() CPU_CRITICAL_EXIT()
147 #define OS_CRITICAL_EXIT_NO_SCHED() CPU_CRITICAL_EXIT()
160 #define OS_EXT extern
164 #define OS_PRIO_TBL_SIZE (((OS_CFG_PRIO_MAX - 1u) / DEF_INT_CPU_NBR_BITS) + 1u)
166 #define OS_MSG_EN (((OS_CFG_TASK_Q_EN > 0u) || (OS_CFG_Q_EN > 0u)) ? 1u : 0u)
183 #define OS_STATE_OS_STOPPED (OS_STATE)(0u)
184 #define OS_STATE_OS_RUNNING (OS_STATE)(1u)
186 #define OS_STATE_NOT_RDY (CPU_BOOLEAN)(0u)
187 #define OS_STATE_RDY (CPU_BOOLEAN)(1u)
191 #define OS_TASK_STATE_BIT_DLY (OS_STATE)(0x01u)
193 #define OS_TASK_STATE_BIT_PEND (OS_STATE)(0x02u)
195 #define OS_TASK_STATE_BIT_SUSPENDED (OS_STATE)(0x04u)
199 #define OS_TASK_STATE_RDY (OS_STATE)( 0u)
200 #define OS_TASK_STATE_DLY (OS_STATE)( 1u)
201 #define OS_TASK_STATE_PEND (OS_STATE)( 2u)
202 #define OS_TASK_STATE_PEND_TIMEOUT (OS_STATE)( 3u)
203 #define OS_TASK_STATE_SUSPENDED (OS_STATE)( 4u)
204 #define OS_TASK_STATE_DLY_SUSPENDED (OS_STATE)( 5u)
205 #define OS_TASK_STATE_PEND_SUSPENDED (OS_STATE)( 6u)
206 #define OS_TASK_STATE_PEND_TIMEOUT_SUSPENDED (OS_STATE)( 7u)
207 #define OS_TASK_STATE_DEL (OS_STATE)(255u)
210 #define OS_TASK_PEND_ON_NOTHING (OS_STATE)( 0u)
211 #define OS_TASK_PEND_ON_FLAG (OS_STATE)( 1u)
212 #define OS_TASK_PEND_ON_TASK_Q (OS_STATE)( 2u)
213 #define OS_TASK_PEND_ON_MULTI (OS_STATE)( 3u)
214 #define OS_TASK_PEND_ON_MUTEX (OS_STATE)( 4u)
215 #define OS_TASK_PEND_ON_Q (OS_STATE)( 5u)
216 #define OS_TASK_PEND_ON_SEM (OS_STATE)( 6u)
217 #define OS_TASK_PEND_ON_TASK_SEM (OS_STATE)( 7u)
226 #define OS_STATUS_PEND_OK (OS_STATUS)( 0u)
227 #define OS_STATUS_PEND_ABORT (OS_STATUS)( 1u)
228 #define OS_STATUS_PEND_DEL (OS_STATUS)( 2u)
229 #define OS_STATUS_PEND_TIMEOUT (OS_STATUS)( 3u)
241 #define OS_OBJ_TYPE_NONE (OS_OBJ_TYPE)CPU_TYPE_CREATE('N', 'O', 'N', 'E')
242 #define OS_OBJ_TYPE_FLAG (OS_OBJ_TYPE)CPU_TYPE_CREATE('F', 'L', 'A', 'G')
243 #define OS_OBJ_TYPE_MEM (OS_OBJ_TYPE)CPU_TYPE_CREATE('M', 'E', 'M', ' ')
244 #define OS_OBJ_TYPE_MUTEX (OS_OBJ_TYPE)CPU_TYPE_CREATE('M', 'U', 'T', 'X')
245 #define OS_OBJ_TYPE_Q (OS_OBJ_TYPE)CPU_TYPE_CREATE('Q', 'U', 'E', 'U')
246 #define OS_OBJ_TYPE_SEM (OS_OBJ_TYPE)CPU_TYPE_CREATE('S', 'E', 'M', 'A')
247 #define OS_OBJ_TYPE_TASK_MSG (OS_OBJ_TYPE)CPU_TYPE_CREATE('T', 'M', 'S', 'G')
248 #define OS_OBJ_TYPE_TASK_RESUME (OS_OBJ_TYPE)CPU_TYPE_CREATE('T', 'R', 'E', 'S')
249 #define OS_OBJ_TYPE_TASK_SIGNAL (OS_OBJ_TYPE)CPU_TYPE_CREATE('T', 'S', 'I', 'G')
250 #define OS_OBJ_TYPE_TASK_SUSPEND (OS_OBJ_TYPE)CPU_TYPE_CREATE('T', 'S', 'U', 'S')
251 #define OS_OBJ_TYPE_TICK (OS_OBJ_TYPE)CPU_TYPE_CREATE('T', 'I', 'C', 'K')
252 #define OS_OBJ_TYPE_TMR (OS_OBJ_TYPE)CPU_TYPE_CREATE('T', 'M', 'R', ' ')
260 #define OS_OPT_NONE (OS_OPT)(0x0000u)
268 #define OS_OPT_DEL_NO_PEND (OS_OPT)(0x0000u)
269 #define OS_OPT_DEL_ALWAYS (OS_OPT)(0x0001u)
277 #define OS_OPT_PEND_FLAG_MASK (OS_OPT)(0x000Fu)
278 #define OS_OPT_PEND_FLAG_CLR_ALL (OS_OPT)(0x0001u)
279 #define OS_OPT_PEND_FLAG_CLR_AND (OS_OPT)(0x0001u)
281 #define OS_OPT_PEND_FLAG_CLR_ANY (OS_OPT)(0x0002u)
282 #define OS_OPT_PEND_FLAG_CLR_OR (OS_OPT)(0x0002u)
284 #define OS_OPT_PEND_FLAG_SET_ALL (OS_OPT)(0x0004u)
285 #define OS_OPT_PEND_FLAG_SET_AND (OS_OPT)(0x0004u)
287 #define OS_OPT_PEND_FLAG_SET_ANY (OS_OPT)(0x0008u)
288 #define OS_OPT_PEND_FLAG_SET_OR (OS_OPT)(0x0008u)
290 #define OS_OPT_PEND_FLAG_CONSUME (OS_OPT)(0x0100u)
293 #define OS_OPT_PEND_BLOCKING (OS_OPT)(0x0000u)
294 #define OS_OPT_PEND_NON_BLOCKING (OS_OPT)(0x8000u)
302 #define OS_OPT_PEND_ABORT_1 (OS_OPT)(0x0000u)
303 #define OS_OPT_PEND_ABORT_ALL (OS_OPT)(0x0100u)
312 #define OS_OPT_POST_NONE (OS_OPT)(0x0000u)
314 #define OS_OPT_POST_FLAG_SET (OS_OPT)(0x0000u)
315 #define OS_OPT_POST_FLAG_CLR (OS_OPT)(0x0001u)
317 #define OS_OPT_POST_FIFO (OS_OPT)(0x0000u)
318 #define OS_OPT_POST_LIFO (OS_OPT)(0x0010u)
319 #define OS_OPT_POST_1 (OS_OPT)(0x0000u)
320 #define OS_OPT_POST_ALL (OS_OPT)(0x0200u)
322 #define OS_OPT_POST_NO_SCHED (OS_OPT)(0x8000u)
330 #define OS_OPT_TASK_NONE (OS_OPT)(0x0000u)
331 #define OS_OPT_TASK_STK_CHK (OS_OPT)(0x0001u)
332 #define OS_OPT_TASK_STK_CLR (OS_OPT)(0x0002u)
333 #define OS_OPT_TASK_SAVE_FP (OS_OPT)(0x0004u)
334 #define OS_OPT_TASK_NO_TLS (OS_OPT)(0x0008u)
342 #define OS_OPT_TIME_DLY DEF_BIT_NONE
343 #define OS_OPT_TIME_TIMEOUT ((OS_OPT)DEF_BIT_01)
344 #define OS_OPT_TIME_MATCH ((OS_OPT)DEF_BIT_02)
345 #define OS_OPT_TIME_PERIODIC ((OS_OPT)DEF_BIT_03)
347 #define OS_OPT_TIME_HMSM_STRICT ((OS_OPT)DEF_BIT_NONE)
348 #define OS_OPT_TIME_HMSM_NON_STRICT ((OS_OPT)DEF_BIT_04)
350 #define OS_OPT_TIME_MASK ((OS_OPT)(OS_OPT_TIME_DLY | \
351 OS_OPT_TIME_TIMEOUT | \
352 OS_OPT_TIME_PERIODIC | \
355 #define OS_OPT_TIME_OPTS_MASK (OS_OPT_TIME_DLY | \
356 OS_OPT_TIME_TIMEOUT | \
357 OS_OPT_TIME_PERIODIC | \
358 OS_OPT_TIME_MATCH | \
359 OS_OPT_TIME_HMSM_NON_STRICT)
367 #define OS_OPT_TMR_NONE (OS_OPT)(0u)
369 #define OS_OPT_TMR_ONE_SHOT (OS_OPT)(1u)
370 #define OS_OPT_TMR_PERIODIC (OS_OPT)(2u)
372 #define OS_OPT_TMR_CALLBACK (OS_OPT)(3u)
373 #define OS_OPT_TMR_CALLBACK_ARG (OS_OPT)(4u)
381 #define OS_TMR_STATE_UNUSED (OS_STATE)(0u)
382 #define OS_TMR_STATE_STOPPED (OS_STATE)(1u)
383 #define OS_TMR_STATE_RUNNING (OS_STATE)(2u)
384 #define OS_TMR_STATE_COMPLETED (OS_STATE)(3u)
392 #define OS_PRIO_INIT (OS_PRIO)(OS_CFG_PRIO_MAX)
400 #define OS_TICK_TH_INIT (OS_TICK)(DEF_BIT ((sizeof(OS_TICK) * DEF_OCTET_NBR_BITS) - 1u))
403 #define OS_TICK_TH_RDY (OS_TICK)(DEF_BIT_FIELD(((sizeof(OS_TICK) * DEF_OCTET_NBR_BITS) / 2u), \
404 ((sizeof(OS_TICK) * DEF_OCTET_NBR_BITS) / 2u)))
421 typedef enum os_err {
640 typedef struct os_mem OS_MEM;
642 typedef struct os_msg OS_MSG;
650 typedef struct os_q OS_Q;
652 typedef struct os_sem OS_SEM;
656 typedef struct os_tcb OS_TCB;
658 #if defined(OS_CFG_TLS_TBL_SIZE) && (OS_CFG_TLS_TBL_SIZE > 0u)
659 typedef void *OS_TLS;
663 typedef void (*OS_TLS_DESTRUCT_PTR)(OS_TCB *p_tcb,
673 typedef struct os_tmr OS_TMR;
681 #if OS_CFG_APP_HOOKS_EN > 0u
682 typedef void (*OS_APP_HOOK_VOID)(void);
683 typedef void (*OS_APP_HOOK_TCB)(OS_TCB *p_tcb);
701 #if OS_CFG_ISR_POST_DEFERRED_EN > 0u
771 #if OS_CFG_DBG_EN > 0u
793 #if OS_CFG_DBG_EN > 0u
794 OS_FLAG_GRP *DbgPrevPtr;
795 OS_FLAG_GRP *DbgNextPtr;
819 #if OS_CFG_DBG_EN > 0u
873 #if OS_CFG_DBG_EN > 0u
874 OS_MUTEX *DbgPrevPtr;
875 OS_MUTEX *DbgNextPtr;
899 #if OS_CFG_DBG_EN > 0u
922 #if OS_CFG_DBG_EN > 0u
958 #if defined(OS_CFG_TLS_TBL_SIZE) && (OS_CFG_TLS_TBL_SIZE > 0u)
993 #if OS_CFG_TASK_Q_EN > 0u
995 #if OS_CFG_TASK_PROFILE_EN > 0u
1001 #if OS_CFG_TASK_REG_TBL_SIZE > 0u
1005 #if OS_CFG_FLAG_EN > 0u
1011 #if OS_CFG_TASK_SUSPEND_EN > 0u
1015 #if OS_CFG_TASK_PROFILE_EN > 0u
1028 #if OS_CFG_STAT_TASK_STK_CHK_EN > 0u
1033 #ifdef CPU_CFG_INT_DIS_MEAS_EN
1036 #if OS_CFG_SCHED_LOCK_TIME_MEAS_EN > 0u
1040 #if OS_CFG_DBG_EN > 0u
1080 #if OS_CFG_DBG_EN > 0u
1103 #if OS_CFG_APP_HOOKS_EN > 0u
1104 OS_EXT OS_APP_HOOK_TCB OS_AppTaskCreateHookPtr;
1105 OS_EXT OS_APP_HOOK_TCB OS_AppTaskDelHookPtr;
1106 OS_EXT OS_APP_HOOK_TCB OS_AppTaskReturnHookPtr;
1108 OS_EXT OS_APP_HOOK_VOID OS_AppIdleTaskHookPtr;
1109 OS_EXT OS_APP_HOOK_VOID OS_AppStatTaskHookPtr;
1110 OS_EXT OS_APP_HOOK_VOID OS_AppTaskSwHookPtr;
1111 OS_EXT OS_APP_HOOK_VOID OS_AppTimeTickHookPtr;
1120 #ifdef CPU_CFG_INT_DIS_MEAS_EN
1128 #if OS_CFG_ISR_POST_DEFERRED_EN > 0u
1134 OS_EXT OS_TCB OSIntQTaskTCB;
1139 #if OS_CFG_FLAG_EN > 0u
1140 #if OS_CFG_DBG_EN > 0u
1141 OS_EXT OS_FLAG_GRP *OSFlagDbgListPtr;
1147 #if OS_CFG_MEM_EN > 0u
1148 #if OS_CFG_DBG_EN > 0u
1149 OS_EXT OS_MEM *OSMemDbgListPtr;
1156 OS_EXT OS_MSG_POOL OSMsgPool;
1160 #if OS_CFG_MUTEX_EN > 0u
1161 #if OS_CFG_DBG_EN > 0u
1162 OS_EXT OS_MUTEX *OSMutexDbgListPtr;
1174 #if OS_CFG_Q_EN > 0u
1175 #if OS_CFG_DBG_EN > 0u
1176 OS_EXT OS_Q *OSQDbgListPtr;
1187 #ifdef OS_SAFETY_CRITICAL_IEC61508
1191 #if OS_CFG_SCHED_LOCK_TIME_MEAS_EN > 0u
1198 #if OS_CFG_SCHED_ROUND_ROBIN_EN > 0u
1203 #if OS_CFG_SEM_EN > 0u
1204 #if OS_CFG_DBG_EN > 0u
1205 OS_EXT OS_SEM *OSSemDbgListPtr;
1211 #if OS_CFG_STAT_TASK_EN > 0u
1219 OS_EXT OS_TCB OSStatTaskTCB;
1225 #if OS_CFG_DBG_EN > 0u
1226 OS_EXT OS_TCB *OSTaskDbgListPtr;
1230 #if OS_CFG_TASK_REG_TBL_SIZE > 0u
1240 #if OS_CFG_TMR_EN > 0u
1241 #if OS_CFG_DBG_EN > 0u
1242 OS_EXT OS_TMR *OSTmrDbgListPtr;
1245 OS_EXT OS_TCB OSTmrTaskTCB;
1316 #if (OS_CFG_ISR_POST_DEFERRED_EN > 0u)
1317 extern CPU_STK OSCfg_IntQTaskStk[];
1323 #if (OS_MSG_EN > 0u)
1324 extern OS_MSG OSCfg_MsgPool[];
1327 #if (OS_CFG_STAT_TASK_EN > 0u)
1328 extern CPU_STK OSCfg_StatTaskStk[];
1334 #if (OS_CFG_TMR_EN > 0u)
1335 extern CPU_STK OSCfg_TmrTaskStk[];
1336 extern OS_TMR_SPOKE OSCfg_TmrWheel[];
1351 #if OS_CFG_FLAG_EN > 0u
1353 void OSFlagCreate (OS_FLAG_GRP *p_grp,
1358 #if OS_CFG_FLAG_DEL_EN > 0u
1364 OS_FLAGS OSFlagPend (OS_FLAG_GRP *p_grp,
1371 #if OS_CFG_FLAG_PEND_ABORT_EN > 0u
1372 OS_OBJ_QTY OSFlagPendAbort (OS_FLAG_GRP *p_grp,
1379 OS_FLAGS OSFlagPost (OS_FLAG_GRP *p_grp,
1386 void OS_FlagClr (OS_FLAG_GRP *p_grp);
1388 void OS_FlagBlock (OS_PEND_DATA *p_pend_data,
1394 #if OS_CFG_DBG_EN > 0u
1395 void OS_FlagDbgListAdd (OS_FLAG_GRP *p_grp);
1397 void OS_FlagDbgListRemove (OS_FLAG_GRP *p_grp);
1400 void OS_FlagInit (
OS_ERR *p_err);
1402 OS_FLAGS OS_FlagPost (OS_FLAG_GRP *p_grp,
1408 void OS_FlagTaskRdy (OS_TCB *p_tcb,
1418 #if OS_CFG_MEM_EN > 0u
1420 void OSMemCreate (OS_MEM *p_mem,
1427 void *OSMemGet (OS_MEM *p_mem,
1430 void OSMemPut (OS_MEM *p_mem,
1436 #if OS_CFG_DBG_EN > 0u
1437 void OS_MemDbgListAdd (OS_MEM *p_mem);
1440 void OS_MemInit (
OS_ERR *p_err);
1449 #if OS_CFG_MUTEX_EN > 0u
1451 void OSMutexCreate (OS_MUTEX *p_mutex,
1455 #if OS_CFG_MUTEX_DEL_EN > 0u
1461 void OSMutexPend (OS_MUTEX *p_mutex,
1467 #if OS_CFG_MUTEX_PEND_ABORT_EN > 0u
1468 OS_OBJ_QTY OSMutexPendAbort (OS_MUTEX *p_mutex,
1473 void OSMutexPost (OS_MUTEX *p_mutex,
1480 void OS_MutexClr (OS_MUTEX *p_mutex);
1482 #if OS_CFG_DBG_EN > 0u
1483 void OS_MutexDbgListAdd (OS_MUTEX *p_mutex);
1485 void OS_MutexDbgListRemove (OS_MUTEX *p_mutex);
1488 void OS_MutexInit (
OS_ERR *p_err);
1496 #if OS_CFG_PEND_MULTI_EN > 0u
1498 OS_OBJ_QTY OSPendMulti (OS_PEND_DATA *p_pend_data_tbl,
1506 OS_OBJ_QTY OS_PendMultiGetRdy (OS_PEND_DATA *p_pend_data_tbl,
1509 CPU_BOOLEAN OS_PendMultiValidate (OS_PEND_DATA *p_pend_data_tbl,
1512 void OS_PendMultiWait (OS_PEND_DATA *p_pend_data_tbl,
1521 #if OS_CFG_Q_EN > 0u
1523 void OSQCreate (OS_Q *p_q,
1528 #if OS_CFG_Q_DEL_EN > 0u
1534 #if OS_CFG_Q_FLUSH_EN > 0u
1539 void *OSQPend (OS_Q *p_q,
1546 #if OS_CFG_Q_PEND_ABORT_EN > 0u
1552 void OSQPost (OS_Q *p_q,
1560 void OS_QClr (OS_Q *p_q);
1562 #if OS_CFG_DBG_EN > 0u
1563 void OS_QDbgListAdd (OS_Q *p_q);
1565 void OS_QDbgListRemove (OS_Q *p_q);
1568 void OS_QInit (
OS_ERR *p_err);
1570 void OS_QPost (OS_Q *p_q,
1583 #if OS_CFG_SEM_EN > 0u
1585 void OSSemCreate (OS_SEM *p_sem,
1600 #if OS_CFG_SEM_PEND_ABORT_EN > 0u
1610 #if OS_CFG_SEM_SET_EN > 0u
1611 void OSSemSet (OS_SEM *p_sem,
1618 void OS_SemClr (OS_SEM *p_sem);
1620 #if OS_CFG_DBG_EN > 0u
1621 void OS_SemDbgListAdd (OS_SEM *p_sem);
1623 void OS_SemDbgListRemove (OS_SEM *p_sem);
1626 void OS_SemInit (
OS_ERR *p_err);
1639 #if OS_CFG_TASK_CHANGE_PRIO_EN > 0u
1640 void OSTaskChangePrio (OS_TCB *p_tcb,
1659 #if OS_CFG_TASK_DEL_EN > 0u
1660 void OSTaskDel (OS_TCB *p_tcb,
1664 #if OS_CFG_TASK_Q_EN > 0u
1668 void *OSTaskQPend (
OS_TICK timeout,
1678 void OSTaskQPost (OS_TCB *p_tcb,
1686 #if OS_CFG_TASK_REG_TBL_SIZE > 0u
1687 OS_REG OSTaskRegGet (OS_TCB *p_tcb,
1693 void OSTaskRegSet (OS_TCB *p_tcb,
1699 #if OS_CFG_TASK_SUSPEND_EN > 0u
1700 void OSTaskResume (OS_TCB *p_tcb,
1703 void OSTaskSuspend (OS_TCB *p_tcb,
1712 #if (OS_CFG_TASK_SEM_PEND_ABORT_EN > 0u)
1726 #if OS_CFG_STAT_TASK_STK_CHK_EN > 0u
1727 void OSTaskStkChk (OS_TCB *p_tcb,
1733 #if OS_CFG_SCHED_ROUND_ROBIN_EN > 0u
1734 void OSTaskTimeQuantaSet (OS_TCB *p_tcb,
1744 #if OS_CFG_DBG_EN > 0u
1745 void OS_TaskDbgListAdd (OS_TCB *p_tcb);
1747 void OS_TaskDbgListRemove (OS_TCB *p_tcb);
1763 #if OS_CFG_TASK_SUSPEND_EN > 0u
1764 void OS_TaskResume (OS_TCB *p_tcb,
1775 #if OS_CFG_TASK_SUSPEND_EN > 0u
1776 void OS_TaskSuspend (OS_TCB *p_tcb,
1785 #if defined(OS_CFG_TLS_TBL_SIZE) && (OS_CFG_TLS_TBL_SIZE > 0u)
1786 OS_TLS_ID OS_TLS_GetID (
OS_ERR *p_err);
1788 OS_TLS OS_TLS_GetValue (OS_TCB *p_tcb,
1792 void OS_TLS_Init (
OS_ERR *p_err);
1794 void OS_TLS_SetValue (OS_TCB *p_tcb,
1799 void OS_TLS_SetDestruct (OS_TLS_ID
id,
1800 OS_TLS_DESTRUCT_PTR p_destruct,
1803 void OS_TLS_TaskCreate (OS_TCB *p_tcb);
1805 void OS_TLS_TaskDel (OS_TCB *p_tcb);
1807 void OS_TLS_TaskSw (
void);
1819 #if OS_CFG_TIME_DLY_HMSM_EN > 0u
1828 #if OS_CFG_TIME_DLY_RESUME_EN > 0u
1829 void OSTimeDlyResume (OS_TCB *p_tcb,
1845 #if OS_CFG_TMR_EN > 0u
1846 void OSTmrCreate (OS_TMR *p_tmr,
1852 void *p_callback_arg,
1858 OS_TICK OSTmrRemainGet (OS_TMR *p_tmr,
1864 OS_STATE OSTmrStateGet (OS_TMR *p_tmr,
1869 void *p_callback_arg,
1874 void OS_TmrClr (OS_TMR *p_tmr);
1876 #if OS_CFG_DBG_EN > 0u
1877 void OS_TmrDbgListAdd (OS_TMR *p_tmr);
1879 void OS_TmrDbgListRemove (OS_TMR *p_tmr);
1882 void OS_TmrInit (
OS_ERR *p_err);
1884 void OS_TmrLink (OS_TMR *p_tmr,
1887 void OS_TmrResetPeak (
void);
1889 void OS_TmrUnlink (OS_TMR *p_tmr);
1891 void OS_TmrTask (
void *p_arg);
1905 #ifdef OS_SAFETY_CRITICAL_IEC61508
1906 void OSSafetyCriticalStart (
void);
1909 #if OS_CFG_SCHED_ROUND_ROBIN_EN > 0u
1914 void OSSchedRoundRobinYield (
OS_ERR *p_err);
1925 #if OS_CFG_STAT_TASK_EN > 0u
1926 void OSStatReset (
OS_ERR *p_err);
1928 void OSStatTaskCPUUsageInit (
OS_ERR *p_err);
1939 #if OS_CFG_STAT_TASK_EN > 0u
1940 void OS_StatTask (
void *p_arg);
1990 #if OS_CFG_DBG_EN > 0u
1991 void OS_Dbg_Init (
void);
1995 #if OS_CFG_ISR_POST_DEFERRED_EN > 0u
1996 void OS_IntQTaskInit (
OS_ERR *p_err);
2007 void OS_IntQRePost (
void);
2009 void OS_IntQTask (
void *p_arg);
2038 void OS_Pend (OS_PEND_DATA *p_pend_data,
2059 void OS_Post (OS_PEND_OBJ *p_obj,
2083 #if OS_CFG_ISR_POST_DEFERRED_EN > 0u
2084 void OS_Sched0 (
void);
2087 #if OS_CFG_SCHED_LOCK_TIME_MEAS_EN > 0u
2088 void OS_SchedLockTimeMeasStart (
void);
2089 void OS_SchedLockTimeMeasStop (
void);
2092 #if OS_CFG_SCHED_ROUND_ROBIN_EN > 0u
2093 void OS_SchedRoundRobin (OS_RDY_LIST *p_rdy_list);
2113 OS_PEND_DATA *p_pend_data_tbl,
2116 #if OS_CFG_DBG_EN > 0u
2117 void OS_PendDbgNameAdd (OS_PEND_OBJ *p_obj,
2120 void OS_PendDbgNameRemove (OS_PEND_OBJ *p_obj,
2129 OS_PEND_DATA *p_pend_data);
2132 OS_PEND_DATA *p_pend_data);
2140 OS_PEND_DATA *p_pend_data);
2176 #ifndef OS_CFG_APP_HOOKS_EN
2177 #error "OS_CFG.H, Missing OS_CFG_APP_HOOKS_EN: Enable (1) or Disable (0) application specific hook functions"
2181 #ifndef OS_CFG_ARG_CHK_EN
2182 #error "OS_CFG.H, Missing OS_CFG_ARG_CHK_EN: Enable (1) or Disable (0) argument checking"
2186 #ifndef OS_CFG_DBG_EN
2187 #error "OS_CFG.H, Missing OS_CFG_DBG_EN: Allows you to include variables for debugging or not"
2191 #ifndef OS_CFG_CALLED_FROM_ISR_CHK_EN
2192 #error "OS_CFG.H, Missing OS_CFG_CALLED_FROM_ISR_CHK_EN: Enable (1) or Disable (0) checking whether in an ISR in kernel services"
2196 #ifndef OS_CFG_OBJ_TYPE_CHK_EN
2197 #error "OS_CFG.H, Missing OS_CFG_OBJ_TYPE_CHK_EN: Enable (1) or Disable (0) checking for proper object types in kernel services"
2201 #ifndef OS_CFG_PEND_MULTI_EN
2202 #error "OS_CFG.H, Missing OS_CFG_PEND_MULTI_EN: Enable (1) or Disable (0) multi-pend feature"
2206 #if OS_CFG_PRIO_MAX < 8u
2207 #error "OS_CFG.H, OS_CFG_PRIO_MAX must be >= 8"
2211 #ifndef OS_CFG_SCHED_LOCK_TIME_MEAS_EN
2212 #error "OS_CFG.H, Missing OS_CFG_SCHED_LOCK_TIME_MEAS_EN: Include code to measure scheduler lock time"
2214 #if (OS_CFG_SCHED_LOCK_TIME_MEAS_EN > 0u) && \
2216 #error "OS_CFG.H, OS_CFG_TS_EN must be Enabled (1) to measure scheduler lock time"
2221 #ifndef OS_CFG_SCHED_ROUND_ROBIN_EN
2222 #error "OS_CFG.H, Missing OS_CFG_SCHED_ROUND_ROBIN_EN: Include code for Round Robin Scheduling"
2226 #ifndef OS_CFG_STK_SIZE_MIN
2227 #error "OS_CFG.H, Missing OS_CFG_STK_SIZE_MIN: Determines the minimum size for a task stack"
2230 #ifndef OS_CFG_TS_EN
2231 #error "OS_CFG.H, Missing OS_CFG_TS_EN: Determines whether time stamping is enabled"
2233 #if (OS_CFG_TS_EN > 0u) && \
2234 (CPU_CFG_TS_EN == DEF_DISABLED)
2235 #error "CPU_CFG.H, CPU_CFG_TS_32_EN must be Enabled (1) to use time stamp feature"
2245 #ifndef OS_CFG_FLAG_EN
2246 #error "OS_CFG.H, Missing OS_CFG_FLAG_EN: Enable (1) or Disable (0) code generation for Event Flags"
2248 #ifndef OS_CFG_FLAG_DEL_EN
2249 #error "OS_CFG.H, Missing OS_CFG_FLAG_DEL_EN: Include code for OSFlagDel()"
2252 #ifndef OS_CFG_FLAG_MODE_CLR_EN
2253 #error "OS_CFG.H, Missing OS_CFG_FLAG_MODE_CLR_EN: Include code for Wait on Clear EVENT FLAGS"
2256 #ifndef OS_CFG_FLAG_PEND_ABORT_EN
2257 #error "OS_CFG.H, Missing OS_CFG_FLAG_PEND_ABORT_EN: Include code for aborting pends from another task"
2267 #ifndef OS_CFG_MEM_EN
2268 #error "OS_CFG.H, Missing OS_CFG_MEM_EN: Enable (1) or Disable (0) code generation for MEMORY MANAGER"
2277 #ifndef OS_CFG_MUTEX_EN
2278 #error "OS_CFG.H, Missing OS_CFG_MUTEX_EN: Enable (1) or Disable (0) code generation for MUTEX"
2280 #ifndef OS_CFG_MUTEX_DEL_EN
2281 #error "OS_CFG.H, Missing OS_CFG_MUTEX_DEL_EN: Include code for OSMutexDel()"
2284 #ifndef OS_CFG_MUTEX_PEND_ABORT_EN
2285 #error "OS_CFG.H, Missing OS_CFG_MUTEX_PEND_ABORT_EN: Include code for OSMutexPendAbort()"
2296 #error "OS_CFG.H, Missing OS_CFG_Q_EN: Enable (1) or Disable (0) code generation for QUEUES"
2298 #ifndef OS_CFG_Q_DEL_EN
2299 #error "OS_CFG.H, Missing OS_CFG_Q_DEL_EN: Include code for OSQDel()"
2302 #ifndef OS_CFG_Q_FLUSH_EN
2303 #error "OS_CFG.H, Missing OS_CFG_Q_FLUSH_EN: Include code for OSQFlush()"
2306 #ifndef OS_CFG_Q_PEND_ABORT_EN
2307 #error "OS_CFG.H, Missing OS_CFG_Q_PEND_ABORT_EN: Include code for OSQPendAbort()"
2317 #ifndef OS_CFG_SEM_EN
2318 #error "OS_CFG.H, Missing OS_CFG_SEM_EN: Enable (1) or Disable (0) code generation for SEMAPHORES"
2320 #ifndef OS_CFG_SEM_DEL_EN
2321 #error "OS_CFG.H, Missing OS_CFG_SEM_DEL_EN: Include code for OSSemDel()"
2324 #ifndef OS_CFG_SEM_PEND_ABORT_EN
2325 #error "OS_CFG.H, Missing OS_CFG_SEM_PEND_ABORT_EN: Include code for OSSemPendAbort()"
2328 #ifndef OS_CFG_SEM_SET_EN
2329 #error "OS_CFG.H, Missing OS_CFG_SEM_SET_EN: Include code for OSSemSet()"
2339 #ifndef OS_CFG_STAT_TASK_EN
2340 #error "OS_CFG.H, Missing OS_CFG_STAT_TASK_EN: Enable (1) or Disable(0) the statistics task"
2343 #ifndef OS_CFG_STAT_TASK_STK_CHK_EN
2344 #error "OS_CFG.H, Missing OS_CFG_STAT_TASK_STK_CHK_EN: Check task stacks from statistics task"
2347 #ifndef OS_CFG_TASK_CHANGE_PRIO_EN
2348 #error "OS_CFG.H, Missing OS_CFG_TASK_CHANGE_PRIO_EN: Include code for OSTaskChangePrio()"
2351 #ifndef OS_CFG_TASK_DEL_EN
2352 #error "OS_CFG.H, Missing OS_CFG_TASK_DEL_EN: Include code for OSTaskDel()"
2355 #ifndef OS_CFG_TASK_Q_EN
2356 #error "OS_CFG.H, Missing OS_CFG_TASK_Q_EN: Include code for OSTaskQxxx()"
2359 #ifndef OS_CFG_TASK_Q_PEND_ABORT_EN
2360 #error "OS_CFG.H, Missing OS_CFG_TASK_Q_PEND_ABORT_EN: Include code for OSTaskQPendAbort()"
2363 #ifndef OS_CFG_TASK_PROFILE_EN
2364 #error "OS_CFG.H, Missing OS_CFG_TASK_PROFILE_EN: Include code for task profiling"
2367 #ifndef OS_CFG_TASK_REG_TBL_SIZE
2368 #error "OS_CFG.H, Missing OS_CFG_TASK_REG_TBL_SIZE: Include support for task specific registers"
2371 #ifndef OS_CFG_TASK_SEM_PEND_ABORT_EN
2372 #error "OS_CFG.H, Missing OS_CFG_TASK_SEM_PEND_ABORT_EN: Include code for OSTaskSemPendAbort()"
2375 #ifndef OS_CFG_TASK_SUSPEND_EN
2376 #error "OS_CFG.H, Missing OS_CFG_TASK_SUSPEND_EN: Include code for OSTaskSuspend() and OSTaskResume()"
2385 #ifndef OS_CFG_TIME_DLY_HMSM_EN
2386 #error "OS_CFG.H, Missing OS_CFG_TIME_DLY_HMSM_EN: Include code for OSTimeDlyHMSM()"
2389 #ifndef OS_CFG_TIME_DLY_RESUME_EN
2390 #error "OS_CFG.H, Missing OS_CFG_TIME_DLY_RESUME_EN: Include code for OSTimeDlyResume()"
2399 #ifndef OS_CFG_TMR_EN
2400 #error "OS_CFG.H, Missing OS_CFG_TMR_EN: When (1) enables code generation for Timer Management"
2402 #ifndef OS_CFG_TMR_DEL_EN
2403 #error "OS_CFG.H, Missing OS_CFG_TMR_DEL_EN: Enables (1) or Disables (0) code for OSTmrDel()"
2414 #if LIB_VERSION < 126u
2415 #error "lib_def.h, LIB_VERSION SHOULD be >= V1.26"
2420 #if CPU_CORE_VERSION < 125u
2421 #error "cpu_core.h, CPU_CORE_VERSION SHOULD be >= V1.25"