void OS_SemClr (OS_SEM *p_sem) { p_sem->Type = OS_OBJ_TYPE_NONE; /* Mark the data structure as a NONE */ p_sem->Ctr = (OS_SEM_CTR)0; /* Set semaphore value */ p_sem->TS = (CPU_TS )0; /* Clear the time stamp */ p_sem->NamePtr = (CPU_CHAR *)((void *)"?SEM"); OS_PendListInit(&p_sem->PendList); /* Initialize the waiting list */ }
void OS_QClr (OS_Q *p_q) { (void)OS_MsgQFreeAll(&p_q->MsgQ); /* Return all OS_MSGs to the free list */ p_q->Type = OS_OBJ_TYPE_NONE; /* Mark the data structure as a NONE */ p_q->NamePtr = (CPU_CHAR *)((void *)"?Q"); OS_MsgQInit(&p_q->MsgQ, /* Initialize the list of OS_MSGs */ 0u); OS_PendListInit(&p_q->PendList); /* Initialize the waiting list */ }
void OSQCreate (OS_Q *p_q, CPU_CHAR *p_name, OS_MSG_QTY max_qty, OS_ERR *p_err) { CPU_SR_ALLOC(); #ifdef OS_SAFETY_CRITICAL if (p_err == (OS_ERR *)0) { OS_SAFETY_CRITICAL_EXCEPTION(); return; } #endif #ifdef OS_SAFETY_CRITICAL_IEC61508 if (OSSafetyCriticalStartFlag == DEF_TRUE) { *p_err = OS_ERR_ILLEGAL_CREATE_RUN_TIME; return; } #endif #if OS_CFG_CALLED_FROM_ISR_CHK_EN > 0u if (OSIntNestingCtr > (OS_NESTING_CTR)0) { /* Not allowed to be called from an ISR */ *p_err = OS_ERR_CREATE_ISR; return; } #endif #if OS_CFG_ARG_CHK_EN > 0u if (p_q == (OS_Q *)0) { /* Validate arguments */ *p_err = OS_ERR_OBJ_PTR_NULL; return; } if (max_qty == (OS_MSG_QTY)0) { /* Cannot specify a zero size queue */ *p_err = OS_ERR_Q_SIZE; return; } #endif OS_CRITICAL_ENTER(); p_q->Type = OS_OBJ_TYPE_Q; /* Mark the data structure as a message queue */ p_q->NamePtr = p_name; OS_MsgQInit(&p_q->MsgQ, /* Initialize the queue */ max_qty); OS_PendListInit(&p_q->PendList); /* Initialize the waiting list */ #if OS_CFG_DBG_EN > 0u OS_QDbgListAdd(p_q); #endif OSQQty++; /* One more queue created */ OS_CRITICAL_EXIT_NO_SCHED(); *p_err = OS_ERR_NONE; }
void OS_MonClr (OS_MON *p_mon) { #if (OS_OBJ_TYPE_REQ == DEF_ENABLED) p_mon->Type = OS_OBJ_TYPE_NONE; /* Mark the data structure as a NONE */ #endif p_mon->MonDataPtr = DEF_NULL; #if (OS_CFG_DBG_EN == DEF_ENABLED) p_mon->NamePtr = (CPU_CHAR *)((void *)"?MON"); #endif OS_PendListInit(&p_mon->PendList); /* Initialize the waiting list */ }
void OSSemCreate (OS_SEM *p_sem, CPU_CHAR *p_name, OS_SEM_CTR cnt, OS_ERR *p_err) { CPU_SR_ALLOC(); #ifdef OS_SAFETY_CRITICAL if (p_err == (OS_ERR *)0) { OS_SAFETY_CRITICAL_EXCEPTION(); return; } #endif #ifdef OS_SAFETY_CRITICAL_IEC61508 if (OSSafetyCriticalStartFlag == DEF_TRUE) { *p_err = OS_ERR_ILLEGAL_CREATE_RUN_TIME; return; } #endif #if OS_CFG_CALLED_FROM_ISR_CHK_EN > 0u if (OSIntNestingCtr > (OS_NESTING_CTR)0) { /* Not allowed to be called from an ISR */ *p_err = OS_ERR_CREATE_ISR; return; } #endif #if OS_CFG_ARG_CHK_EN > 0u if (p_sem == (OS_SEM *)0) { /* Validate 'p_sem' */ *p_err = OS_ERR_OBJ_PTR_NULL; return; } #endif OS_CRITICAL_ENTER(); p_sem->Type = OS_OBJ_TYPE_SEM; /* Mark the data structure as a semaphore */ p_sem->Ctr = cnt; /* Set semaphore value */ p_sem->TS = (CPU_TS)0; p_sem->NamePtr = p_name; /* Save the name of the semaphore */ OS_PendListInit(&p_sem->PendList); /* Initialize the waiting list */ #if OS_CFG_DBG_EN > 0u OS_SemDbgListAdd(p_sem); #endif OSSemQty++; OS_CRITICAL_EXIT_NO_SCHED(); *p_err = OS_ERR_NONE; }
void OS_SemClr (OS_SEM *p_sem) { #if (OS_OBJ_TYPE_REQ == DEF_ENABLED) p_sem->Type = OS_OBJ_TYPE_NONE; /* Mark the data structure as a NONE */ #endif p_sem->Ctr = 0u; /* Set semaphore value */ #if (OS_CFG_TS_EN == DEF_ENABLED) p_sem->TS = 0u; /* Clear the time stamp */ #endif #if (OS_CFG_DBG_EN == DEF_ENABLED) p_sem->NamePtr = (CPU_CHAR *)((void *)"?SEM"); #endif OS_PendListInit(&p_sem->PendList); /* Initialize the waiting list */ }
void OS_MutexClr (OS_MUTEX *p_mutex) { #if OS_OBJ_TYPE_REQ > 0u p_mutex->Type = OS_OBJ_TYPE_NONE; /* Mark the data structure as a NONE */ #endif #if OS_CFG_DBG_EN > 0u p_mutex->NamePtr = (CPU_CHAR *)((void *)"?MUTEX"); #endif p_mutex->OwnerTCBPtr = (OS_TCB *)0; p_mutex->OwnerNestingCtr = (OS_NESTING_CTR)0; p_mutex->TS = (CPU_TS )0; p_mutex->OwnerOriginalPrio = OS_CFG_PRIO_MAX; OS_PendListInit(&p_mutex->PendList); /* Initialize the waiting list */ }
void OSSemCreate (OS_SEM *p_sem, CPU_CHAR *p_name, OS_SEM_CTR cnt, OS_ERR *p_err) { CPU_SR_ALLOC(); #ifdef OS_SAFETY_CRITICAL if (p_err == DEF_NULL) { OS_SAFETY_CRITICAL_EXCEPTION(); return; } #endif #ifdef OS_SAFETY_CRITICAL_IEC61508 if (OSSafetyCriticalStartFlag == DEF_TRUE) { *p_err = OS_ERR_ILLEGAL_CREATE_RUN_TIME; return; } #endif #if (OS_CFG_CALLED_FROM_ISR_CHK_EN == DEF_ENABLED) if (OSIntNestingCtr > 0u) { /* Not allowed to be called from an ISR */ *p_err = OS_ERR_CREATE_ISR; return; } #endif #if (OS_CFG_ARG_CHK_EN == DEF_ENABLED) if (p_sem == DEF_NULL) { /* Validate 'p_sem' */ *p_err = OS_ERR_OBJ_PTR_NULL; return; } #endif OS_CRITICAL_ENTER(); #if (OS_OBJ_TYPE_REQ == DEF_ENABLED) p_sem->Type = OS_OBJ_TYPE_SEM; /* Mark the data structure as a semaphore */ #endif p_sem->Ctr = cnt; /* Set semaphore value */ #if (OS_CFG_TS_EN == DEF_ENABLED) p_sem->TS = 0u; #endif #if (OS_CFG_DBG_EN == DEF_ENABLED) p_sem->NamePtr = p_name; /* Save the name of the semaphore */ #else (void)&p_name; #endif OS_PendListInit(&p_sem->PendList); /* Initialize the waiting list */ #if (OS_CFG_DBG_EN == DEF_ENABLED) OS_SemDbgListAdd(p_sem); OSSemQty++; #endif #if (defined(TRACE_CFG_EN) && (TRACE_CFG_EN == DEF_ENABLED)) TRACE_OS_SEM_CREATE(p_sem, p_name); /* Record the event. */ #endif OS_CRITICAL_EXIT_NO_SCHED(); *p_err = OS_ERR_NONE; }
void OSMonCreate (OS_MON *p_mon, CPU_CHAR *p_name, void *p_mon_data, OS_ERR *p_err) { CPU_SR_ALLOC(); #ifdef OS_SAFETY_CRITICAL if (p_err == DEF_NULL) { OS_SAFETY_CRITICAL_EXCEPTION(); return; } #endif #ifdef OS_SAFETY_CRITICAL_IEC61508 if (OSSafetyCriticalStartFlag == DEF_TRUE) { *p_err = OS_ERR_ILLEGAL_CREATE_RUN_TIME; return; } #endif #if (OS_CFG_CALLED_FROM_ISR_CHK_EN == DEF_ENABLED) if (OSIntNestingCtr > 0u) { /* Not allowed to be called from an ISR */ *p_err = OS_ERR_CREATE_ISR; return; } #endif #if (OS_CFG_ARG_CHK_EN == DEF_ENABLED) if (p_mon == DEF_NULL) { /* Validate 'p_mon' */ *p_err = OS_ERR_OBJ_PTR_NULL; return; } #endif CPU_CRITICAL_ENTER(); #if (OS_OBJ_TYPE_REQ == DEF_ENABLED) p_mon->Type = OS_OBJ_TYPE_MON; /* Mark the data structure as a monitor */ #endif #if (OS_CFG_DBG_EN == DEF_ENABLED) p_mon->NamePtr = p_name; /* Save the name of the monitor */ #else (void)p_name; #endif OS_PendListInit(&p_mon->PendList); #if (OS_CFG_DBG_EN == DEF_ENABLED) OS_MonDbgListAdd(p_mon); OSMonQty++; #endif if (p_mon_data != DEF_NULL) { p_mon->MonDataPtr = p_mon_data; } CPU_CRITICAL_EXIT(); *p_err = OS_ERR_NONE; }
void OSMutexCreate (OS_MUTEX *p_mutex, CPU_CHAR *p_name, OS_ERR *p_err) { CPU_SR_ALLOC(); #ifdef OS_SAFETY_CRITICAL if (p_err == (OS_ERR *)0) { OS_SAFETY_CRITICAL_EXCEPTION(); return; } #endif #ifdef OS_SAFETY_CRITICAL_IEC61508 if (OSSafetyCriticalStartFlag == DEF_TRUE) { *p_err = OS_ERR_ILLEGAL_CREATE_RUN_TIME; return; } #endif #if OS_CFG_CALLED_FROM_ISR_CHK_EN > 0u if (OSIntNestingCtr > (OS_NESTING_CTR)0) { /* Not allowed to be called from an ISR */ *p_err = OS_ERR_CREATE_ISR; return; } #endif #if OS_CFG_ARG_CHK_EN > 0u if (p_mutex == (OS_MUTEX *)0) { /* Validate 'p_mutex' */ *p_err = OS_ERR_OBJ_PTR_NULL; return; } #endif OS_CRITICAL_ENTER(); #if OS_OBJ_TYPE_REQ > 0u p_mutex->Type = OS_OBJ_TYPE_MUTEX; /* Mark the data structure as a mutex */ #endif #if OS_CFG_DBG_EN > 0u p_mutex->NamePtr = p_name; #else (void)&p_name; #endif p_mutex->OwnerTCBPtr = (OS_TCB *)0; p_mutex->OwnerNestingCtr = (OS_NESTING_CTR)0; /* Mutex is available */ p_mutex->TS = (CPU_TS )0; p_mutex->OwnerOriginalPrio = OS_CFG_PRIO_MAX; OS_PendListInit(&p_mutex->PendList); /* Initialize the waiting list */ #if OS_CFG_DBG_EN > 0u OS_MutexDbgListAdd(p_mutex); #endif OSMutexQty++; #if (defined(TRACE_CFG_EN) && (TRACE_CFG_EN > 0u)) TRACE_OS_MUTEX_CREATE(p_mutex, p_name); /* Record the event. */ #endif OS_CRITICAL_EXIT_NO_SCHED(); *p_err = OS_ERR_NONE; }