reactos/ntoskrnl/ke/freeze.c

54 lines
1.2 KiB
C

/*
* 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 <ntoskrnl.h>
#define NDEBUG
#include <debug.h>
/* 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();
}