ER clr_flg(ID flgid, FLGPTN clrptn) { FLGCB *p_flgcb; ER ercd; LOG_CLR_FLG_ENTER(flgid, clrptn); CHECK_TSKCTX_UNL(); CHECK_FLGID(flgid); p_flgcb = get_flgcb(flgid); t_lock_cpu(); if (p_flgcb->p_flginib->flgatr == TA_NOEXS) { ercd = E_NOEXS; } else { p_flgcb->flgptn &= clrptn; ercd = E_OK; } t_unlock_cpu(); error_exit: LOG_CLR_FLG_LEAVE(ercd); return(ercd); }
SYSCALL ER clr_flg(ID flgid, FLGPTN clrptn) { FLGCB *flgcb; ER ercd; LOG_CLR_FLG_ENTER(flgid, clrptn); CHECK_TSKCTX_UNL(); CHECK_FLGID(flgid); flgcb = get_flgcb(flgid); t_lock_cpu(); flgcb->flgptn &= clrptn; ercd = E_OK; t_unlock_cpu(); exit: LOG_CLR_FLG_LEAVE(ercd); return(ercd); }
ER clr_flg(ID flgid, FLGPTN clrptn) { FLGCB *p_flgcb; ER ercd; LOG_CLR_FLG_ENTER(flgid, clrptn); CHECK_TSKCTX_UNL(); CHECK_FLGID(flgid); p_flgcb = get_flgcb(flgid); t_lock_cpu(); t_acquire_obj_lock(&GET_OBJLOCK(p_flgcb)); p_flgcb->flgptn &= clrptn; ercd = E_OK; release_obj_lock(&GET_OBJLOCK(p_flgcb)); t_unlock_cpu(); error_exit: LOG_CLR_FLG_LEAVE(ercd); return(ercd); }