protected void Execute() { try { if (m_ctsk.task != null) { m_ctsk.task(StaCD); } } finally { m_Nucleus.LockCPU(); try { if (m_rtsk.tskstat != TSKSTAT.TTS_DMT) { m_rtsk.tskstat = TSKSTAT.TTS_DMT; if (m_Nucleus.m_CurrentTask == this) { m_Nucleus.m_CurrentTask = null; } m_Nucleus.m_ReadyQueue[m_rtsk.tskpri].Remove(this); m_Nucleus.Dispatch(); } } finally { m_Nucleus.UnlockCPU(); } } }
public void SYS_ARCH_UNPROTECT(int lvl) { m_Nucleus.UnlockCPU(); }