ER psnd_pdq(ID pdqid, intptr_t data, PRI datapri) { PDQCB *p_pdqcb; ER ercd; LOG_PSND_PDQ_ENTER(pdqid, data, datapri); CHECK_UNL(); CHECK_ID(VALID_PDQID(pdqid)); p_pdqcb = get_pdqcb(pdqid); CHECK_PAR(TMIN_DPRI <= datapri && datapri <= p_pdqcb->p_pdqinib->maxdpri); lock_cpu(); if (send_pridata(p_pdqcb, data, datapri)) { if (p_runtsk != p_schedtsk) { if (!sense_context()) { dispatch(); } else { request_dispatch(); } } ercd = E_OK; } else { ercd = E_TMOUT; } unlock_cpu(); error_exit: LOG_PSND_PDQ_LEAVE(ercd); return(ercd); }
ER psnd_pdq(ID pdqid, intptr_t data, PRI datapri) { PDQCB *p_pdqcb; bool_t reqdsp; ER ercd; LOG_PSND_PDQ_ENTER(pdqid, data, datapri); CHECK_TSKCTX_UNL(); CHECK_PDQID(pdqid); p_pdqcb = get_pdqcb(pdqid); CHECK_PAR(TMIN_DPRI <= datapri && datapri <= p_pdqcb->p_pdqinib->maxdpri); t_lock_cpu(); if (p_pdqcb->p_pdqinib->pdqatr == TA_NOEXS) { ercd = E_NOEXS; } else if (send_pridata(p_pdqcb, data, datapri, &reqdsp)) { if (reqdsp) { dispatch(); } ercd = E_OK; } else { ercd = E_TMOUT; } t_unlock_cpu(); error_exit: LOG_PSND_PDQ_LEAVE(ercd); return(ercd); }
ER psnd_pdq(ID pdqid, intptr_t data, PRI datapri) { PDQCB *p_pdqcb; bool_t dspreq; ER ercd; LOG_PSND_PDQ_ENTER(pdqid, data, datapri); CHECK_TSKCTX_UNL(); CHECK_PDQID(pdqid); CHECK_PAR(TMIN_DPRI <= datapri); p_pdqcb = get_pdqcb(pdqid); t_lock_cpu(); if (p_pdqcb->p_pdqinib->pdqatr == TA_NOEXS) { ercd = E_NOEXS; } else if (VIOLATE_ACPTN(p_pdqcb->p_pdqinib->acvct.acptn1)) { ercd = E_OACV; } else if (!(datapri <= p_pdqcb->p_pdqinib->maxdpri)) { ercd = E_PAR; } else if (send_pridata(p_pdqcb, data, datapri, &dspreq)) { if (dspreq) { dispatch(); } ercd = E_OK; } else { ercd = E_TMOUT; } t_unlock_cpu(); error_exit: LOG_PSND_PDQ_LEAVE(ercd); return(ercd); }