2 * COPYRIGHT: See COPYING in the top level directory
3 * PROJECT: ReactOS kernel
4 * FILE: ntoskrnl/ke/bug.c
5 * PURPOSE: Graceful system shutdown if a bug is detected
6 * PROGRAMMER: David Welch (welch@cwcom.net)
11 /* INCLUDES *****************************************************************/
13 #include <ddk/ntddk.h>
14 #include <internal/ke.h>
16 #include <internal/debug.h>
18 /* GLOBALS ******************************************************************/
20 static LIST_ENTRY BugcheckCallbackListHead
= {NULL
,NULL
};
22 /* FUNCTIONS *****************************************************************/
24 BOOLEAN
KeDeregisterBugCheckCallback(PKBUGCHECK_CALLBACK_RECORD CallbackRecord
)
29 VOID
KeInitializeBugCheck(VOID
)
31 InitializeListHead(&BugcheckCallbackListHead
);
34 VOID
KeInitializeCallbackRecord(PKBUGCHECK_CALLBACK_RECORD CallbackRecord
)
39 BOOLEAN
KeRegisterBugCheckCallback(PKBUGCHECK_CALLBACK_RECORD CallbackRecord
,
40 PKBUGCHECK_CALLBACK_ROUTINE CallbackRoutine
,
45 InsertTailList(&BugcheckCallbackListHead
,&CallbackRecord
->Entry
);
46 CallbackRecord
->Length
=Length
;
47 CallbackRecord
->Buffer
=Buffer
;
48 CallbackRecord
->Component
=Component
;
49 CallbackRecord
->CallbackRoutine
=CallbackRoutine
;
53 VOID
KeBugCheckEx(ULONG BugCheckCode
,
54 ULONG BugCheckParameter1
,
55 ULONG BugCheckParameter2
,
56 ULONG BugCheckParameter3
,
57 ULONG BugCheckParameter4
)
59 * FUNCTION: Brings the system down in a controlled manner when an
60 * inconsistency that might otherwise cause corruption has been detected
62 * BugCheckCode = Specifies the reason for the bug check
63 * BugCheckParameter[1-4] = Additional information about bug
67 DbgPrint("Bug detected (code %x param %x %x %x %x)\n",BugCheckCode
,
68 BugCheckParameter1
,BugCheckParameter2
,BugCheckParameter3
,
70 KeDumpStackFrames(0,64);
75 VOID
KeBugCheck(ULONG BugCheckCode
)
77 * FUNCTION: Brings the system down in a controlled manner when an
78 * inconsistency that might otherwise cause corruption has been detected
80 * BugCheckCode = Specifies the reason for the bug check
84 KeBugCheckEx(BugCheckCode
,0,0,0,0);