ER sta_cyc(ID cycid) { CYCCB *p_cyccb; ER ercd; LOG_STA_CYC_ENTER(cycid); CHECK_TSKCTX_UNL(); CHECK_CYCID(cycid); p_cyccb = get_cyccb(cycid); t_lock_cpu(); if (p_cyccb->p_cycinib->cycatr == TA_NOEXS) { ercd = E_NOEXS; } else { if (p_cyccb->cycsta) { tmevtb_dequeue(&(p_cyccb->tmevtb)); } else { p_cyccb->cycsta = true; } tmevtb_enqueue_cyc(p_cyccb, base_time + p_cyccb->p_cycinib->cycphs); ercd = E_OK; } t_unlock_cpu(); error_exit: LOG_STA_CYC_LEAVE(ercd); return(ercd); }
SYSCALL ER sta_cyc(ID cycid) { CYCCB *cyccb; ER ercd; LOG_STA_CYC_ENTER(cycid); CHECK_TSKCTX_UNL(); CHECK_CYCID(cycid); cyccb = get_cyccb(cycid); t_lock_cpu(); if (cyccb->cycsta) { tmevtb_dequeue(&(cyccb->tmevtb)); } else { cyccb->cycsta = TRUE; } tmevtb_enqueue_cyc(cyccb, base_time + cyccb->cycinib->cyctim); ercd = E_OK; t_unlock_cpu(); exit: LOG_STA_CYC_LEAVE(ercd); return(ercd); }
ER sta_cyc(ID cycid) { ER ercd; uint_t index = INDEX_CYC(cycid); EVTTIM evttim; LOG_STA_CYC_ENTER(cycid); CHECK_TSKCTX_UNL(); CHECK_CYCID(cycid); t_lock_cpu(); if((cyccb_cycact & CYCACT_BIT(index)) != 0U) { time_event_dequeue(CYC_EVTID(index)); } else { cyccb_cycact |= CYCACT_BIT(index); } evttim = current_time + cycinib_cycphs[index]; time_event_enqueue(CYC_EVTID(index) , evttim , call_cychdr , index); cyccb_evttim[index] = evttim; ercd = E_OK; t_unlock_cpu(); error_exit: LOG_STA_CYC_LEAVE(ercd); return ercd; }