Lots of changes to the kernel
[reactos.git] / reactos / ntoskrnl / ke / bug.c
1 /*
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)
7 * UPDATE HISTORY:
8 * Created 22/05/98
9 */
10
11 /* INCLUDES *****************************************************************/
12
13 #include <ddk/ntddk.h>
14 #include <internal/ke.h>
15
16 #include <internal/debug.h>
17
18 /* GLOBALS ******************************************************************/
19
20 static LIST_ENTRY BugcheckCallbackListHead = {NULL,NULL};
21
22 /* FUNCTIONS *****************************************************************/
23
24 BOOLEAN KeDeregisterBugCheckCallback(PKBUGCHECK_CALLBACK_RECORD CallbackRecord)
25 {
26 UNIMPLEMENTED;
27 }
28
29 VOID KeInitializeBugCheck(VOID)
30 {
31 InitializeListHead(&BugcheckCallbackListHead);
32 }
33
34 VOID KeInitializeCallbackRecord(PKBUGCHECK_CALLBACK_RECORD CallbackRecord)
35 {
36 UNIMPLEMENTED;
37 }
38
39 BOOLEAN KeRegisterBugCheckCallback(PKBUGCHECK_CALLBACK_RECORD CallbackRecord,
40 PKBUGCHECK_CALLBACK_ROUTINE CallbackRoutine,
41 PVOID Buffer,
42 ULONG Length,
43 PUCHAR Component)
44 {
45 InsertTailList(&BugcheckCallbackListHead,&CallbackRecord->Entry);
46 CallbackRecord->Length=Length;
47 CallbackRecord->Buffer=Buffer;
48 CallbackRecord->Component=Component;
49 CallbackRecord->CallbackRoutine=CallbackRoutine;
50 return(TRUE);
51 }
52
53 VOID KeBugCheckEx(ULONG BugCheckCode,
54 ULONG BugCheckParameter1,
55 ULONG BugCheckParameter2,
56 ULONG BugCheckParameter3,
57 ULONG BugCheckParameter4)
58 /*
59 * FUNCTION: Brings the system down in a controlled manner when an
60 * inconsistency that might otherwise cause corruption has been detected
61 * ARGUMENTS:
62 * BugCheckCode = Specifies the reason for the bug check
63 * BugCheckParameter[1-4] = Additional information about bug
64 * RETURNS: Doesn't
65 */
66 {
67 DbgPrint("Bug detected (code %x param %x %x %x %x)\n",BugCheckCode,
68 BugCheckParameter1,BugCheckParameter2,BugCheckParameter3,
69 BugCheckParameter4);
70 KeDumpStackFrames(0,64);
71 __asm__("cli\n\t");
72 for(;;);
73 }
74
75 VOID KeBugCheck(ULONG BugCheckCode)
76 /*
77 * FUNCTION: Brings the system down in a controlled manner when an
78 * inconsistency that might otherwise cause corruption has been detected
79 * ARGUMENTS:
80 * BugCheckCode = Specifies the reason for the bug check
81 * RETURNS: Doesn't
82 */
83 {
84 KeBugCheckEx(BugCheckCode,0,0,0,0);
85 }
86