ER ini_mbf(ID mbfid) { MBFCB *p_mbfcb; bool_t dspreq; ER ercd; LOG_INI_MBF_ENTER(mbfid); CHECK_TSKCTX_UNL(); CHECK_MBFID(mbfid); p_mbfcb = get_mbfcb(mbfid); t_lock_cpu(); dspreq = init_wait_queue(&(p_mbfcb->swait_queue)); if (init_wait_queue(&(p_mbfcb->rwait_queue))) { dspreq = true; } p_mbfcb->fmbfsz = p_mbfcb->p_mbfinib->mbfsz; p_mbfcb->head = 0U; p_mbfcb->tail = 0U; p_mbfcb->smbfcnt = 0U; if (dspreq) { dispatch(); } ercd = E_OK; t_unlock_cpu(); error_exit: LOG_INI_MBF_LEAVE(ercd); return(ercd); }
ER ini_mbf(ID mbfid) { MBFCB *p_mbfcb; ER ercd; LOG_INI_MBF_ENTER(mbfid); CHECK_TSKCTX_UNL(); CHECK_ID(VALID_MBFID(mbfid)); p_mbfcb = get_mbfcb(mbfid); lock_cpu(); if (p_mbfcb->p_mbfinib->mbfatr == TA_NOEXS) { ercd = E_NOEXS; } else if (VIOLATE_ACPTN(p_mbfcb->p_mbfinib->acvct.acptn3)) { ercd = E_OACV; } else { init_wait_queue(&(p_mbfcb->swait_queue)); init_wait_queue(&(p_mbfcb->rwait_queue)); p_mbfcb->fmbfsz = p_mbfcb->p_mbfinib->mbfsz; p_mbfcb->head = 0U; p_mbfcb->tail = 0U; p_mbfcb->smbfcnt = 0U; if (p_runtsk != p_schedtsk) { dispatch(); } ercd = E_OK; } unlock_cpu(); error_exit: LOG_INI_MBF_LEAVE(ercd); return(ercd); }