ER iact_tsk(ID tskid) { TCB *p_tcb; ER ercd; LOG_IACT_TSK_ENTER(tskid); CHECK_INTCTX_UNL(); CHECK_TSKID(tskid); p_tcb = get_tcb(tskid); i_lock_cpu(); if (TSTAT_DORMANT(p_tcb->tstat)) { if (make_active(p_tcb)) { reqflg = true; } ercd = E_OK; } else if (!(p_tcb->actque)) { p_tcb->actque = true; ercd = E_OK; } else { ercd = E_QOVR; } i_unlock_cpu(); error_exit: LOG_IACT_TSK_LEAVE(ercd); return(ercd); }
SYSCALL ER iact_tsk(ID tskid) { TCB *tcb; ER ercd; LOG_IACT_TSK_ENTER(tskid); CHECK_INTCTX_UNL(); CHECK_TSKID(tskid); tcb = get_tcb(tskid); i_lock_cpu(); if (TSTAT_DORMANT(tcb->tstat)) { if (make_active(tcb)) { reqflg = TRUE; } ercd = E_OK; } else if (!(tcb->actcnt)) { tcb->actcnt = TRUE; ercd = E_OK; } else { ercd = E_QOVR; } i_unlock_cpu(); exit: LOG_IACT_TSK_LEAVE(ercd); return(ercd); }
ER iact_tsk(ID tskid) { ER ercd; uint_t ipri; LOG_IACT_TSK_ENTER(tskid); CHECK_INTCTX_UNL(); CHECK_TSKID(tskid); ipri = get_ipri(tskid); i_lock_cpu(); if (test_dormant(ipri)) { if(make_active(ipri)) { reqflg = true; } ercd = E_OK; } else { ercd = E_QOVR; } i_unlock_cpu(); error_exit: LOG_IACT_TSK_LEAVE(ercd); return(ercd); }