SYSCALL ER irel_wai(ID tskid) { TCB *tcb; ER ercd; LOG_IREL_WAI_ENTER(tskid); CHECK_INTCTX_UNL(); CHECK_TSKID(tskid); tcb = get_tcb(tskid); i_lock_cpu(); if (!(TSTAT_WAITING(tcb->tstat))) { ercd = E_OBJ; } else { if (wait_release(tcb)) { reqflg = TRUE; } ercd = E_OK; } i_unlock_cpu(); exit: LOG_IREL_WAI_LEAVE(ercd); return(ercd); }
ER irel_wai(ID tskid) { TCB *p_tcb; ER ercd; LOG_IREL_WAI_ENTER(tskid); CHECK_INTCTX_UNL(); CHECK_TSKID(tskid); p_tcb = get_tcb(tskid); i_lock_cpu(); if (p_tcb->p_tinib->tskatr == TA_NOEXS) { ercd = E_NOEXS; } else if (!TSTAT_WAITING(p_tcb->tstat)) { ercd = E_OBJ; } else { if (wait_release(p_tcb)) { reqflg = true; } ercd = E_OK; } i_unlock_cpu(); error_exit: LOG_IREL_WAI_LEAVE(ercd); return(ercd); }