/* * PROJECT: ReactOS Kernel * LICENSE: GPL - See COPYING in the top level directory * FILE: ntoskrnl/ke/freeze.c * PURPOSE: Routines for freezing and unfreezing processors for * kernel debugger synchronization. * PROGRAMMERS: Alex Ionescu (alex.ionescu@reactos.org) */ /* INCLUDES *******************************************************************/ #include #define NDEBUG #include /* GLOBALS ********************************************************************/ /* Freeze data */ KIRQL KiOldIrql; ULONG KiFreezeFlag; /* FUNCTIONS ******************************************************************/ BOOLEAN NTAPI KeFreezeExecution(IN PKTRAP_FRAME TrapFrame, IN PKEXCEPTION_FRAME ExceptionFrame) { BOOLEAN Enable; /* Disable interrupts and get previous state */ Enable = KeDisableInterrupts(); /* Save freeze flag */ KiFreezeFlag = 4; /* Save the old IRQL */ KiOldIrql = KeGetCurrentIrql(); /* Return whether interrupts were enabled */ return Enable; } VOID NTAPI KeThawExecution(IN BOOLEAN Enable) { /* Cleanup CPU caches */ KeFlushCurrentTb(); /* Re-enable interrupts */ if (Enable) _enable(); }