ER chg_ipm(PRI intpri) { bool_t locked; ER ercd; LOG_CHG_IPM_ENTER(intpri); CHECK_TSKCTX(); CHECK_INTPRI_CHGIPM(intpri); locked = t_sense_lock(); if (!locked) { t_lock_cpu(); } t_set_ipm(intpri); if (intpri != TIPM_ENAALL) { dspflg = false; } else if (!disdsp) { dspflg = true; if (p_runtsk != p_schedtsk) { dispatch(); } } ercd = E_OK; if (!locked) { t_unlock_cpu(); } error_exit: LOG_CHG_IPM_LEAVE(ercd); return(ercd); }
ER chg_ipm(PRI intpri) { ER ercd; LOG_CHG_IPM_ENTER(intpri); CHECK_TSKCTX_UNL(); CHECK_INTPRI_CHGIPM(intpri); t_lock_cpu(); t_set_ipm(intpri); if (intpri == TIPM_ENAALL) { ipmflg = true; if (!disdsp) { dspflg = true; if (p_runtsk != p_schedtsk) { dispatch(); } } if (p_runtsk->enatex && p_runtsk->texptn != 0U) { call_texrtn(); } } else { ipmflg = false; dspflg = false; } ercd = E_OK; t_unlock_cpu(); error_exit: LOG_CHG_IPM_LEAVE(ercd); return(ercd); }
ER chg_ipm(PRI intpri) { ER ercd; LOG_CHG_IPM_ENTER(intpri); CHECK_TSKCTX_UNL(); CHECK_INTPRI_CHGIPM(intpri); CHECK_ACPTN(sysstat_acvct.acptn2); t_lock_cpu(); t_set_ipm(intpri); if (intpri == TIPM_ENAALL) { ipmflg = true; if (!disdsp) { dspflg = true; if (p_runtsk != p_schedtsk) { dispatch(); } } if (p_runtsk->enatex && p_runtsk->texptn != 0U && rundom == TACP_KERNEL && p_runtsk->svclevel == 0U) { call_texrtn_stask(); } } else { ipmflg = false; dspflg = false; } ercd = E_OK; t_unlock_cpu(); error_exit: LOG_CHG_IPM_LEAVE(ercd); return(ercd); }