ER stp_ovr(ID tskid) { TCB *p_tcb; ER ercd; LOG_STP_OVR_ENTER(tskid); CHECK_TSKCTX_UNL(); CHECK_OBJ(ovrinib.ovrhdr != NULL); CHECK_TSKID_SELF(tskid); p_tcb = get_tcb_self(tskid); t_lock_cpu(); if (p_tcb->leftotm > 0U) { if (p_tcb == p_runtsk) { (void) target_ovrtimer_stop(); ovrtimer_flag = false; } p_tcb->leftotm = 0U; } ercd = E_OK; t_unlock_cpu(); error_exit: LOG_STP_OVR_LEAVE(ercd); return(ercd); }
ER stp_ovr(ID tskid) { TCB *p_tcb; ER ercd; LOG_STP_OVR_ENTER(tskid); CHECK_TSKCTX_UNL(); CHECK_OBJ(ovrinib.ovrhdr != NULL); CHECK_TSKID_SELF(tskid); p_tcb = get_tcb_self(tskid); t_lock_cpu(); if (p_tcb->p_tinib->tskatr == TA_NOEXS) { ercd = E_NOEXS; } else if (VIOLATE_ACPTN(p_tcb->p_tinib->acvct.acptn2)) { ercd = E_OACV; } else { if (p_tcb->leftotm > 0U) { if (p_tcb == p_runtsk) { (void) target_ovrtimer_stop(); ovrtimer_flag = false; } p_tcb->leftotm = 0U; } ercd = E_OK; } t_unlock_cpu(); error_exit: LOG_STP_OVR_LEAVE(ercd); return(ercd); }