FORCEINLINE VOID _ExiReleaseSpinLockAndRestoreInterupts( IN OUT PKSPIN_LOCK Lock, BOOLEAN Enable) { /* Release the spinlock */ KxReleaseSpinLock(Lock); /* Restore interrupts */ KeRestoreInterrupts(Enable); }
VOID KeInitialize(VOID) { HANDLE testScrollerProcess, testShell; HalInitialize(); #ifdef HAVE_KD KdInitialize(); #endif MmInitialize(); IoInitialize(); //Initialize ps manager, create initial process PsInitialize(); ASSERT(KeCurrentProcess); //Initialize message passing MessInitialize(); KdPrint("Say %s to %s!", "hello", "ARCOS kernel debugger"); PsCreateProcess(TestScrollerProcess, 10, &testScrollerProcess, NULL); ObCloseHandle(testScrollerProcess); CreateProcess("shell", 31, &testShell, NULL); ObCloseHandle(testShell); KeRestoreInterrupts(TRUE); while (1) { // wait for something interesting to happen KeYieldProcessor(); } }