internal void SignalInterruptsDisabled() { CompilerIntrinsics.Cli(); // TODO: superfluous capacity++; Thread t = waiters.Dequeue(); if (t != null) { ThreadQueue ready = Kernel.kernel.readyQueue; ready.Enqueue(t); Kernel.kernel.EnqueueAndYield(ready); } }
public void Signal() { try { CompilerIntrinsics.Cli(); capacity++; Thread t = waiters.Dequeue(); if (t != null) { ThreadQueue ready = Kernel.kernel.readyQueue; ready.Enqueue(t); Kernel.kernel.EnqueueAndYield(ready); } } finally { CompilerIntrinsics.Sti(); } }