nOS_Error nOS_SemDelete (nOS_Sem *sem) { nOS_Error err; #if (NOS_CONFIG_SAFE > 0) if (sem == NULL) { err = NOS_E_INV_OBJ; } else if (sem->e.type != NOS_EVENT_SEM) { err = NOS_E_INV_OBJ; } else #endif { nOS_EnterCritical(); sem->count = 0; sem->max = 0; #if (NOS_CONFIG_HIGHEST_THREAD_PRIO > 0) && (NOS_CONFIG_SCHED_PREEMPTIVE_ENABLE > 0) if (nOS_DeleteEvent((nOS_Event*)sem)) { nOS_Schedule(); } #else nOS_DeleteEvent((nOS_Event*)sem); #endif nOS_LeaveCritical(); err = NOS_OK; } return err; }
nOS_Error nOS_FlagDelete (nOS_Flag *flag) { nOS_Error err; nOS_StatusReg sr; #if (NOS_CONFIG_SAFE > 0) if (flag == NULL) { err = NOS_E_INV_OBJ; } else #endif { nOS_EnterCritical(sr); #if (NOS_CONFIG_SAFE > 0) if (flag->e.type != NOS_EVENT_FLAG) { err = NOS_E_INV_OBJ; } else #endif { flag->flags = NOS_FLAG_NONE; #if (NOS_CONFIG_HIGHEST_THREAD_PRIO > 0) && (NOS_CONFIG_SCHED_PREEMPTIVE_ENABLE > 0) if (nOS_DeleteEvent((nOS_Event*)flag)) { nOS_Schedule(); } #else nOS_DeleteEvent((nOS_Event*)flag); #endif err = NOS_OK; } nOS_LeaveCritical(sr); } return err; }
nOS_Error nOS_QueueDelete (nOS_Queue *queue) { nOS_Error err; nOS_StatusReg sr; #if (NOS_CONFIG_SAFE > 0) if (queue == NULL) { err = NOS_E_INV_OBJ; } else #endif { nOS_EnterCritical(sr); #if (NOS_CONFIG_SAFE > 0) if (queue->e.type != NOS_EVENT_QUEUE) { err = NOS_E_INV_OBJ; } else #endif { _Flush(queue); queue->buffer = NULL; queue->bsize = 0; queue->bmax = 0; nOS_DeleteEvent((nOS_Event*)queue); err = NOS_OK; } nOS_LeaveCritical(sr); } return err; }
nOS_Error nOS_FlagDelete (nOS_Flag *flag) { nOS_Error err; nOS_StatusReg sr; #if (NOS_CONFIG_SAFE > 0) if (flag == NULL) { err = NOS_E_INV_OBJ; } else #endif { nOS_EnterCritical(sr); #if (NOS_CONFIG_SAFE > 0) if (flag->e.type != NOS_EVENT_FLAG) { err = NOS_E_INV_OBJ; } else #endif { flag->flags = NOS_FLAG_NONE; nOS_DeleteEvent((nOS_Event*)flag); err = NOS_OK; } nOS_LeaveCritical(sr); } return err; }
nOS_Error nOS_QueueDelete (nOS_Queue *queue) { nOS_Error err; nOS_StatusReg sr; #if (NOS_CONFIG_SAFE > 0) if (queue == NULL) { err = NOS_E_INV_OBJ; } else #endif { nOS_EnterCritical(sr); #if (NOS_CONFIG_SAFE > 0) if (queue->e.type != NOS_EVENT_QUEUE) { err = NOS_E_INV_OBJ; } else #endif { queue->buffer = NULL; queue->bsize = 0; queue->bcount = 0; queue->bmax = 0; queue->r = 0; queue->w = 0; #if (NOS_CONFIG_HIGHEST_THREAD_PRIO > 0) && (NOS_CONFIG_SCHED_PREEMPTIVE_ENABLE > 0) if (nOS_DeleteEvent((nOS_Event*)queue)) { nOS_Schedule(); } #else nOS_DeleteEvent((nOS_Event*)queue); #endif err = NOS_OK; } nOS_LeaveCritical(sr); } return err; }