ER sta_alm(ID almid, RELTIM almtim) { ALMCB *p_almcb; ER ercd; LOG_STA_ALM_ENTER(almid, almtim); CHECK_UNL(); CHECK_ID(VALID_ALMID(almid)); CHECK_PAR(VALID_RELTIM(almtim)); p_almcb = get_almcb(almid); lock_cpu(); if (p_almcb->almsta) { tmevtb_dequeue(&(p_almcb->tmevtb)); } else { p_almcb->almsta = true; } tmevtb_enqueue(&(p_almcb->tmevtb), almtim); ercd = E_OK; unlock_cpu(); error_exit: LOG_STA_ALM_LEAVE(ercd); return(ercd); }
ER sta_alm(ID almid, RELTIM almtim) { ALMCB *p_almcb; ER ercd; LOG_STA_ALM_ENTER(almid, almtim); CHECK_TSKCTX_UNL(); CHECK_ALMID(almid); CHECK_PAR(almtim <= TMAX_RELTIM); p_almcb = get_almcb(almid); t_lock_cpu(); if (p_almcb->p_alminib->almatr == TA_NOEXS) { ercd = E_NOEXS; } else if (p_almcb->almsta) { tmevtb_dequeue(&(p_almcb->tmevtb)); } else { p_almcb->almsta = true; } tmevtb_enqueue(&(p_almcb->tmevtb), almtim, (CBACK) call_almhdr, (void *) p_almcb); ercd = E_OK; t_unlock_cpu(); error_exit: LOG_STA_ALM_LEAVE(ercd); return(ercd); }
ER sta_alm(ID almid , RELTIM almtim) { ER ercd; uint_t index = INDEX_ALM(almid); LOG_STA_ALM_ENTER(almid, almtim); CHECK_TSKCTX_UNL(); CHECK_ALMID(almid); t_lock_cpu(); if((almcb_almact & ALMACT_BIT(index)) != 0U) { time_event_dequeue(ALM_EVTID(almid)); } else { almcb_almact |= ALMACT_BIT(index); } time_event_enqueue(ALM_EVTID(almid) , current_time + (EVTTIM)almtim , (CBACK)call_almhdr , index); ercd = E_OK; t_unlock_cpu(); error_exit: LOG_STA_ALM_LEAVE(ercd); return ercd; }