void SerialOS_SemDel (void *psem) { INT8U os_err; #if (SERIAL_CFG_ARG_CHK_EXT_EN == DEF_ENABLED) CPU_SIZE_T i; #endif CPU_SR_ALLOC(); OSSemPendAbort((OS_EVENT *) psem, (INT8U ) OS_PEND_OPT_BROADCAST, (INT8U *)&os_err); CPU_CRITICAL_ENTER(); if (OSEventObjIx >= SERIAL_OS_MAX_NBR_SEM) { CPU_CRITICAL_EXIT(); return; } #if (SERIAL_CFG_ARG_CHK_EXT_EN == DEF_ENABLED) /* ----------------- VALIDATE OS EVENT ---------------- */ for (i = 0u; i < OSEventObjIx; i++) { if (OSEventObj[i] == (OS_EVENT *)psem) { CPU_CRITICAL_EXIT(); return; } } #endif /* --------------- FREE OS EVENT TO POOL -------------- */ OSEventObj[OSEventObjIx] = (OS_EVENT *)psem; OSEventObjIx++; CPU_CRITICAL_EXIT(); }
void SerialOS_SemDel (void *psem) { LIB_ERR lib_err; OS_ERR os_err; OSSemPendAbort((OS_SEM *)psem, (OS_OPT )OS_OPT_PEND_ABORT_ALL, (OS_ERR *)&os_err); OSSemDel((OS_SEM *)psem, (OS_OPT )OS_OPT_DEL_ALWAYS, (OS_ERR *)&os_err); Mem_PoolBlkFree((MEM_POOL *)&OS_SemPool, (void *) psem, (LIB_ERR *)&lib_err); }