freeze.c (6e9ff14e) freeze.c (92297093)
1/*
2 * PROJECT: ReactOS Kernel
3 * LICENSE: GPL - See COPYING in the top level directory
4 * FILE: ntoskrnl/ke/freeze.c
5 * PURPOSE: Routines for freezing and unfreezing processors for
6 * kernel debugger synchronization.
7 * PROGRAMMERS: Alex Ionescu (alex.ionescu@reactos.org)
8 */

--- 35 unchanged lines hidden (view full) ---

44 if (OldIrql < DISPATCH_LEVEL)
45 OldIrql = KeRaiseIrqlToDpcLevel();
46#else
47 /* Raise IRQL to HIGH_LEVEL */
48 KeRaiseIrql(HIGH_LEVEL, &OldIrql);
49#endif
50
51#ifdef CONFIG_SMP
1/*
2 * PROJECT: ReactOS Kernel
3 * LICENSE: GPL - See COPYING in the top level directory
4 * FILE: ntoskrnl/ke/freeze.c
5 * PURPOSE: Routines for freezing and unfreezing processors for
6 * kernel debugger synchronization.
7 * PROGRAMMERS: Alex Ionescu (alex.ionescu@reactos.org)
8 */

--- 35 unchanged lines hidden (view full) ---

44 if (OldIrql < DISPATCH_LEVEL)
45 OldIrql = KeRaiseIrqlToDpcLevel();
46#else
47 /* Raise IRQL to HIGH_LEVEL */
48 KeRaiseIrql(HIGH_LEVEL, &OldIrql);
49#endif
50
51#ifdef CONFIG_SMP
52 // TODO: Add SMP support.
52 /* Architecture specific freeze code */
53 KxFreezeExecution();
53#endif
54
55 /* Save the old IRQL to be restored on unfreeze */
56 KiOldIrql = OldIrql;
57
58 /* Return whether interrupts were enabled */
59 return Enable;
60}
61
62VOID
63NTAPI
64KeThawExecution(IN BOOLEAN Enable)
65{
66#ifdef CONFIG_SMP
54#endif
55
56 /* Save the old IRQL to be restored on unfreeze */
57 KiOldIrql = OldIrql;
58
59 /* Return whether interrupts were enabled */
60 return Enable;
61}
62
63VOID
64NTAPI
65KeThawExecution(IN BOOLEAN Enable)
66{
67#ifdef CONFIG_SMP
67 // TODO: Add SMP support.
68 /* Architecture specific thaw code */
69 KxThawExecution();
68#endif
69
70 /* Clear the freeze flag */
71 KiFreezeFlag = 0;
72
73 /* Cleanup CPU caches */
74 KeFlushCurrentTb();
75
76 /* Restore the old IRQL */
77#ifndef CONFIG_SMP
78 if (KiOldIrql < DISPATCH_LEVEL)
79#endif
80 KeLowerIrql(KiOldIrql);
81
82 /* Re-enable interrupts */
83 KeRestoreInterrupts(Enable);
84}
70#endif
71
72 /* Clear the freeze flag */
73 KiFreezeFlag = 0;
74
75 /* Cleanup CPU caches */
76 KeFlushCurrentTb();
77
78 /* Restore the old IRQL */
79#ifndef CONFIG_SMP
80 if (KiOldIrql < DISPATCH_LEVEL)
81#endif
82 KeLowerIrql(KiOldIrql);
83
84 /* Re-enable interrupts */
85 KeRestoreInterrupts(Enable);
86}