ER psnd_mbf(ID mbfid, const void *msg, uint_t msgsz) { MBFCB *p_mbfcb; bool_t dspreq; ER ercd; LOG_PSND_MBF_ENTER(mbfid, msg, msgsz); CHECK_TSKCTX_UNL(); CHECK_MBFID(mbfid); p_mbfcb = get_mbfcb(mbfid); CHECK_PAR(0 < msgsz && msgsz <= p_mbfcb->p_mbfinib->maxmsz); t_lock_cpu(); if (send_message(p_mbfcb, msg, msgsz, &dspreq)) { if (dspreq) { dispatch(); } ercd = E_OK; } else { ercd = E_TMOUT; } t_unlock_cpu(); error_exit: LOG_PSND_MBF_LEAVE(ercd); return(ercd); }
ER psnd_mbf(ID mbfid, const void *msg, uint_t msgsz) { MBFCB *p_mbfcb; ER ercd; LOG_PSND_MBF_ENTER(mbfid, msg, msgsz); CHECK_TSKCTX_UNL(); CHECK_ID(VALID_MBFID(mbfid)); CHECK_MACV_BUF_READ(msg, msgsz); CHECK_PAR(0 < msgsz); 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.acptn1)) { ercd = E_OACV; } else if (!(msgsz <= p_mbfcb->p_mbfinib->maxmsz)) { ercd = E_PAR; } else if (send_message(p_mbfcb, msg, msgsz)) { if (p_runtsk != p_schedtsk) { dispatch(); } ercd = E_OK; } else { ercd = E_TMOUT; } unlock_cpu(); error_exit: LOG_PSND_MBF_LEAVE(ercd); return(ercd); }