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@mcmail.com)
11 /* INCLUDES *****************************************************************/
13 #include <ddk/ntddk.h>
15 #include <internal/debug.h>
17 /* GLOBALS ******************************************************************/
19 static LIST_ENTRY BugcheckCallbackListHead
= {NULL
,NULL
};
21 /* FUNCTIONS *****************************************************************/
23 BOOLEAN
KeDeregisterBugCheckCallback(PKBUGCHECK_CALLBACK_RECORD CallbackRecord
)
28 VOID
KeInitializeBugCheck(VOID
)
30 InitializeListHead(&BugcheckCallbackListHead
);
33 VOID
KeInitializeCallbackRecord(PKBUGCHECK_CALLBACK_RECORD CallbackRecord
)
38 BOOLEAN
KeRegisterBugCheckCallback(PKBUGCHECK_CALLBACK_RECORD CallbackRecord
,
39 PKBUGCHECK_CALLBACK_ROUTINE CallbackRoutine
,
44 InsertTailList(&BugcheckCallbackListHead
,&CallbackRecord
->Entry
);
45 CallbackRecord
->Length
=Length
;
46 CallbackRecord
->Buffer
=Buffer
;
47 CallbackRecord
->Component
=Component
;
48 CallbackRecord
->CallbackRoutine
=CallbackRoutine
;
51 VOID
KeBugCheckEx(ULONG BugCheckCode
,
52 ULONG BugCheckParameter1
,
53 ULONG BugCheckParameter2
,
54 ULONG BugCheckParameter3
,
55 ULONG BugCheckParameter4
)
57 * FUNCTION: Brings the system down in a controlled manner when an
58 * inconsistency that might otherwise cause corruption has been detected
60 * BugCheckCode = Specifies the reason for the bug check
61 * BugCheckParameter[1-4] = Additional information about bug
65 DbgPrint("Bug detected (code %x param %x %x %x %x)\n",BugCheckCode
,
66 BugCheckParameter1
,BugCheckParameter2
,BugCheckParameter3
,
72 VOID
KeBugCheck(ULONG BugCheckCode
)
74 * FUNCTION: Brings the system down in a controlled manner when an
75 * inconsistency that might otherwise cause corruption has been detected
77 * BugCheckCode = Specifies the reason for the bug check
81 KeBugCheckEx(BugCheckCode
,0,0,0,0);