ER prcv_mbf(ID mbfid, void *msg) { MBFCB *p_mbfcb; uint_t msgsz; bool_t dspreq; ER_UINT ercd; LOG_PRCV_MBF_ENTER(mbfid, msg); CHECK_TSKCTX_UNL(); CHECK_MBFID(mbfid); p_mbfcb = get_mbfcb(mbfid); t_lock_cpu(); if ((msgsz = receive_message(p_mbfcb, msg, &dspreq)) > 0U) { if (dspreq) { dispatch(); } ercd = (ER_UINT) msgsz; } else { ercd = E_TMOUT; } t_unlock_cpu(); error_exit: LOG_PRCV_MBF_LEAVE(ercd, msg); return(ercd); }
ER prcv_mbf(ID mbfid, void *msg) { MBFCB *p_mbfcb; uint_t msgsz; ER_UINT ercd; LOG_PRCV_MBF_ENTER(mbfid, msg); 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.acptn2)) { ercd = E_OACV; } else if (!KERNEL_PROBE_BUF_WRITE(msg, p_mbfcb->p_mbfinib->maxmsz)) { ercd = E_MACV; } else if ((msgsz = receive_message(p_mbfcb, msg)) > 0U) { if (p_runtsk != p_schedtsk) { dispatch(); } ercd = (ER_UINT) msgsz; } else { ercd = E_TMOUT; } unlock_cpu(); error_exit: LOG_PRCV_MBF_LEAVE(ercd, msg); return(ercd); }