ER ini_mpf(ID mpfid) { MPFCB *p_mpfcb; bool_t dspreq; ER ercd; LOG_INI_MPF_ENTER(mpfid); CHECK_TSKCTX_UNL(); CHECK_MPFID(mpfid); p_mpfcb = get_mpfcb(mpfid); t_lock_cpu(); dspreq = init_wait_queue(&(p_mpfcb->wait_queue)); p_mpfcb->fblkcnt = p_mpfcb->p_mpfinib->blkcnt; p_mpfcb->unused = 0U; p_mpfcb->freelist = INDEX_NULL; if (dspreq) { dispatch(); } ercd = E_OK; t_unlock_cpu(); error_exit: LOG_INI_MPF_LEAVE(ercd); return(ercd); }
ER ini_mpf(ID mpfid) { MPFCB *p_mpfcb; ER ercd; LOG_INI_MPF_ENTER(mpfid); CHECK_TSKCTX_UNL(); CHECK_ID(VALID_MPFID(mpfid)); p_mpfcb = get_mpfcb(mpfid); lock_cpu(); if (p_mpfcb->p_mpfinib->mpfatr == TA_NOEXS) { ercd = E_NOEXS; } else { init_wait_queue(&(p_mpfcb->wait_queue)); p_mpfcb->fblkcnt = p_mpfcb->p_mpfinib->blkcnt; p_mpfcb->unused = 0U; p_mpfcb->freelist = INDEX_NULL; if (p_runtsk != p_schedtsk) { dispatch(); } ercd = E_OK; } unlock_cpu(); error_exit: LOG_INI_MPF_LEAVE(ercd); return(ercd); }