mirror of
https://github.com/ApfelTeeSaft/reactos.git
synced 2026-08-29 19:26:33 +00:00
Bug in previous commit...these should've been deleted
svn path=/trunk/; revision=14761
This commit is contained in:
@@ -1,58 +0,0 @@
|
||||
/* $Id:$
|
||||
*
|
||||
* COPYRIGHT: See COPYING in the top level directory
|
||||
* PROJECT: ReactOS kernel
|
||||
* FILE: ntoskrnl/dbg/dbgctrl.c
|
||||
* PURPOSE: System debug control
|
||||
*
|
||||
* PROGRAMMERS: No programmer listed.
|
||||
*/
|
||||
|
||||
/* INCLUDES *****************************************************************/
|
||||
|
||||
#include <ntoskrnl.h>
|
||||
#define NDEBUG
|
||||
#include <internal/debug.h>
|
||||
|
||||
/* FUNCTIONS *****************************************************************/
|
||||
|
||||
/*
|
||||
* @unimplemented
|
||||
*/
|
||||
NTSTATUS
|
||||
STDCALL
|
||||
DbgLoadImageSymbols(
|
||||
IN PUNICODE_STRING Name,
|
||||
IN ULONG Base,
|
||||
IN ULONG Unknown3
|
||||
)
|
||||
{
|
||||
UNIMPLEMENTED;
|
||||
return STATUS_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
|
||||
NTSTATUS STDCALL
|
||||
NtSystemDebugControl(DEBUG_CONTROL_CODE ControlCode,
|
||||
PVOID InputBuffer,
|
||||
ULONG InputBufferLength,
|
||||
PVOID OutputBuffer,
|
||||
ULONG OutputBufferLength,
|
||||
PULONG ReturnLength)
|
||||
{
|
||||
switch (ControlCode) {
|
||||
case DebugGetTraceInformation:
|
||||
case DebugSetInternalBreakpoint:
|
||||
case DebugSetSpecialCall:
|
||||
case DebugClearSpecialCalls:
|
||||
case DebugQuerySpecialCalls:
|
||||
case DebugDbgBreakPoint:
|
||||
break;
|
||||
case DebugDbgLoadSymbols:
|
||||
KDB_LOADUSERMODULE_HOOK((PLDR_MODULE) InputBuffer);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
return STATUS_SUCCESS;
|
||||
}
|
||||
@@ -1,268 +0,0 @@
|
||||
/* $Id:$
|
||||
*
|
||||
* COPYRIGHT: See COPYING in the top level directory
|
||||
* PROJECT: ReactOS kernel
|
||||
* FILE: ntoskrnl/dbg/errinfo.c
|
||||
* PURPOSE: Print information descriptions of error messages
|
||||
*
|
||||
* PROGRAMMERS: No programmer listed.
|
||||
*/
|
||||
|
||||
/* INCLUDES ******************************************************************/
|
||||
|
||||
#include <ntoskrnl.h>
|
||||
#include <internal/debug.h>
|
||||
|
||||
/* GLOBALS *******************************************************************/
|
||||
|
||||
static PCHAR SeverityCodes[] = {"SUC", "INF", "ERR", "WRN"};
|
||||
|
||||
static struct _FACLIST
|
||||
{
|
||||
ULONG Code;
|
||||
PCHAR Name;
|
||||
} FacList[] =
|
||||
{
|
||||
{0, "KERNEL"},
|
||||
{0, NULL}
|
||||
};
|
||||
|
||||
static struct _ERRLIST
|
||||
{
|
||||
NTSTATUS Code;
|
||||
PCHAR Name;
|
||||
PCHAR Text;
|
||||
} ErrList[] =
|
||||
{
|
||||
{STATUS_SUCCESS, "SUCCESS", NULL},
|
||||
{STATUS_INSUFFICIENT_RESOURCES, "INSUFFICIENT_RESOURCES", NULL},
|
||||
{STATUS_OBJECT_NAME_EXISTS, "OBJECT_NAME_EXISTS", NULL},
|
||||
{STATUS_OBJECT_NAME_COLLISION, "OBJECT_NAME_COLLISION", NULL},
|
||||
{STATUS_CTL_FILE_NOT_SUPPORTED, "CTL_FILE_NOT_SUPPORTED", NULL},
|
||||
{STATUS_PORT_ALREADY_SET, "PORT_ALREADY_SET", NULL},
|
||||
{STATUS_SECTION_NOT_IMAGE, "SECTION_NOT_IMAGE", NULL},
|
||||
{STATUS_BAD_WORKING_SET_LIMIT, "BAD_WORKING_SET_LIMIT", NULL},
|
||||
{STATUS_INCOMPATIBLE_FILE_MAP, "INCOMPATIBLE_FILE_MAP", NULL},
|
||||
{STATUS_HANDLE_NOT_WAITABLE, "HANDLE_NOT_WAITABLE", NULL},
|
||||
{STATUS_PORT_DISCONNECTED, "PORT_DISCONNECTED", NULL},
|
||||
{STATUS_NOT_LOCKED, "NOT_LOCKED", NULL},
|
||||
{STATUS_NOT_MAPPED_VIEW, "NOT_MAPPED_VIEW", NULL},
|
||||
{STATUS_UNABLE_TO_FREE_VM, "UNABLE_TO_FREE_VM", NULL},
|
||||
{STATUS_UNABLE_TO_DELETE_SECTION, "UNABLE_TO_DELETE_SECTION", NULL},
|
||||
{STATUS_MORE_PROCESSING_REQUIRED, "MORE_PROCESSING_REQUIRED", NULL},
|
||||
{STATUS_INVALID_CID, "INVALID_CID", NULL},
|
||||
{STATUS_BAD_INITIAL_STACK, "BAD_INITIAL_STACK", NULL},
|
||||
{STATUS_INVALID_VOLUME_LABEL, "INVALID_VOLUME_LABEL", NULL},
|
||||
{STATUS_SECTION_NOT_EXTENDED, "SECTION_NOT_EXTENDED", NULL},
|
||||
{STATUS_NOT_MAPPED_DATA, "NOT_MAPPED_DATA", NULL},
|
||||
{STATUS_INFO_LENGTH_MISMATCH, "INFO_LENGTH_MISMATCH", NULL},
|
||||
{STATUS_INVALID_INFO_CLASS, "INVALID_INFO_CLASS", NULL},
|
||||
{STATUS_SUSPEND_COUNT_EXCEEDED, "SUSPEND_COUNT_EXCEEDED", NULL},
|
||||
{STATUS_NOTIFY_ENUM_DIR, "NOTIFY_ENUM_DIR", NULL},
|
||||
{STATUS_REGISTRY_RECOVERED, "REGISTRY_RECOVERED", NULL},
|
||||
{STATUS_REGISTRY_IO_FAILED, "REGISTRY_IO_FAILED", NULL},
|
||||
{STATUS_KEY_DELETED, "KEY_DELETED", NULL},
|
||||
{STATUS_NO_LOG_SPACE, "NO_LOG_SPACE", NULL},
|
||||
{STATUS_KEY_HAS_CHILDREN, "KEY_HAS_CHILDREN", NULL},
|
||||
{STATUS_CHILD_MUST_BE_VOLATILE, "CHILD_MUST_BE_VOLATILE", NULL},
|
||||
{STATUS_REGISTRY_CORRUPT, "REGISTRY_CORRUPT", NULL},
|
||||
{STATUS_DLL_NOT_FOUND, "DLL_NOT_FOUND", NULL},
|
||||
{STATUS_DLL_INIT_FAILED, "DLL_INIT_FAILED", NULL},
|
||||
{STATUS_ORDINAL_NOT_FOUND, "ORDINAL_NOT_FOUND", NULL},
|
||||
{STATUS_ENTRYPOINT_NOT_FOUND, "ENTRYPOINT_NOT_FOUND", NULL},
|
||||
{STATUS_MORE_ENTRIES, "MORE_ENTRIES", NULL},
|
||||
{STATUS_BUFFER_OVERFLOW, "BUFFER_OVERFLOW", NULL},
|
||||
{STATUS_NO_MORE_FILES, "NO_MORE_FILES", NULL},
|
||||
{STATUS_NO_INHERITANCE, "NO_INHERITANCE", NULL},
|
||||
{STATUS_NO_MORE_EAS, "NO_MORE_EAS", NULL},
|
||||
{STATUS_NO_MORE_ENTRIES, "NO_MORE_ENTRIES", NULL},
|
||||
{STATUS_GUIDS_EXHAUSTED, "GUIDS_EXHAUSTED", NULL},
|
||||
{STATUS_AGENTS_EXHAUSTED, "AGENTS_EXHAUSTED", NULL},
|
||||
{STATUS_UNSUCCESSFUL, "UNSUCCESSFUL", NULL},
|
||||
{STATUS_NOT_IMPLEMENTED, "NOT_IMPLEMENTED", NULL},
|
||||
{STATUS_ILLEGAL_FUNCTION, "ILLEGAL_FUNCTION", NULL},
|
||||
{STATUS_PAGEFILE_QUOTA, "PAGEFILE_QUOTA", NULL},
|
||||
{STATUS_COMMITMENT_LIMIT, "COMMITMENT_LIMIT", NULL},
|
||||
{STATUS_SECTION_TOO_BIG, "SECTION_TOO_BIG", NULL},
|
||||
{RPC_NT_SS_IN_NULL_CONTEXT, "RPC_NT_SS_IN_NULL_CONTEXT", NULL},
|
||||
{RPC_NT_INVALID_BINDING, "RPC_NT_INVALID_BINDING", NULL},
|
||||
{STATUS_OBJECT_FILE_MISMATCH, "OBJECT_FILE_MISMATCH", NULL},
|
||||
{STATUS_FILE_CLOSED, "FILE_CLOSED", NULL},
|
||||
{STATUS_INVALID_PORT_HANDLE, "INVALID_PORT_HANDLE", NULL},
|
||||
{STATUS_NOT_COMMITTED, "NOT_COMMITTED", NULL},
|
||||
{STATUS_INVALID_PARAMETER, "INVALID_PARAMETER", NULL},
|
||||
{STATUS_INVALID_PARAMETER_1, "INVALID_PARAMETER_1", NULL},
|
||||
{STATUS_INVALID_PARAMETER_2, "INVALID_PARAMETER_2", NULL},
|
||||
{STATUS_INVALID_PARAMETER_3, "INVALID_PARAMETER_3", NULL},
|
||||
{STATUS_INVALID_PARAMETER_4, "INVALID_PARAMETER_4", NULL},
|
||||
{STATUS_INVALID_PARAMETER_5, "INVALID_PARAMETER_5", NULL},
|
||||
{STATUS_INVALID_PARAMETER_6, "INVALID_PARAMETER_6", NULL},
|
||||
{STATUS_INVALID_PARAMETER_7, "INVALID_PARAMETER_7", NULL},
|
||||
{STATUS_INVALID_PARAMETER_8, "INVALID_PARAMETER_8", NULL},
|
||||
{STATUS_INVALID_PARAMETER_9, "INVALID_PARAMETER_9", NULL},
|
||||
{STATUS_INVALID_PARAMETER_10, "INVALID_PARAMETER_10", NULL},
|
||||
{STATUS_INVALID_PARAMETER_11, "INVALID_PARAMETER_11", NULL},
|
||||
{STATUS_INVALID_PARAMETER_12, "INVALID_PARAMETER_12", NULL},
|
||||
{STATUS_INVALID_PARAMETER_MAX, "INVALID_PARAMETER_MAX", NULL},
|
||||
{STATUS_INVALID_PAGE_PROTECTION, "INVALID_PAGE_PROTECTION", NULL},
|
||||
{STATUS_RESOURCE_DATA_NOT_FOUND, "RESOURCE_DATA_NOT_FOUND", NULL},
|
||||
{STATUS_RESOURCE_TYPE_NOT_FOUND, "RESOURCE_TYPE_NOT_FOUND", NULL},
|
||||
{STATUS_RESOURCE_NAME_NOT_FOUND, "RESOURCE_NAME_NOT_FOUND", NULL},
|
||||
{STATUS_RESOURCE_LANG_NOT_FOUND, "RESOURCE_LANG_NOT_FOUND", NULL},
|
||||
{STATUS_NO_SUCH_DEVICE, "NO_SUCH_DEVICE", NULL},
|
||||
{STATUS_NO_SUCH_FILE, "NO_SUCH_FILE", NULL},
|
||||
{STATUS_INVALID_DEVICE_REQUEST, "INVALID_DEVICE_REQUEST", NULL},
|
||||
{STATUS_END_OF_FILE, "END_OF_FILE", NULL},
|
||||
{STATUS_FILE_FORCED_CLOSED, "FILE_FORCED_CLOSED", NULL},
|
||||
{STATUS_WRONG_VOLUME, "WRONG_VOLUME", NULL},
|
||||
{STATUS_NO_MEDIA, "NO_MEDIA", NULL},
|
||||
{STATUS_NO_MEDIA_IN_DEVICE, "NO_MEDIA_IN_DEVICE", NULL},
|
||||
{STATUS_NONEXISTENT_SECTOR, "NONEXISTENT_SECTOR", NULL},
|
||||
{STATUS_WORKING_SET_QUOTA, "WORKING_SET_QUOTA", NULL},
|
||||
{STATUS_CONFLICTING_ADDRESS, "CONFLICTING_ADDRESS", NULL},
|
||||
{STATUS_INVALID_SYSTEM_SERVICE, "INVALID_SYSTEM_SERVICE", NULL},
|
||||
{STATUS_THREAD_IS_TERMINATING, "THREAD_IS_TERMINATING", NULL},
|
||||
{STATUS_PROCESS_IS_TERMINATING, "PROCESS_IS_TERMINATING", NULL},
|
||||
{STATUS_INVALID_LOCK_SEQUENCE, "INVALID_LOCK_SEQUENCE", NULL},
|
||||
{STATUS_INVALID_VIEW_SIZE, "INVALID_VIEW_SIZE", NULL},
|
||||
{STATUS_ALREADY_COMMITTED, "ALREADY_COMMITTED", NULL},
|
||||
{STATUS_ACCESS_DENIED, "ACCESS_DENIED", NULL},
|
||||
{STATUS_FILE_IS_A_DIRECTORY, "FILE_IS_A_DIRECTORY", NULL},
|
||||
{STATUS_CANNOT_DELETE, "CANNOT_DELETE", NULL},
|
||||
{STATUS_INVALID_COMPUTER_NAME, "INVALID_COMPUTER_NAME", NULL},
|
||||
{STATUS_FILE_DELETED, "FILE_DELETED", NULL},
|
||||
{STATUS_DELETE_PENDING, "DELETE_PENDING", NULL},
|
||||
{STATUS_PORT_CONNECTION_REFUSED, "PORT_CONNECTION_REFUSED", NULL},
|
||||
{STATUS_NO_SUCH_PRIVILEGE, "NO_SUCH_PRIVILEGE", NULL},
|
||||
{STATUS_PRIVILEGE_NOT_HELD, "PRIVILEGE_NOT_HELD", NULL},
|
||||
{STATUS_CANNOT_IMPERSONATE, "CANNOT_IMPERSONATE", NULL},
|
||||
{STATUS_LOGON_FAILURE, "LOGON_FAILURE", NULL},
|
||||
{STATUS_ACCOUNT_RESTRICTION, "ACCOUNT_RESTRICTION", NULL},
|
||||
{STATUS_INVALID_LOGON_HOURS, "INVALID_LOGON_HOURS", NULL},
|
||||
{STATUS_INVALID_WORKSTATION, "INVALID_WORKSTATION", NULL},
|
||||
{STATUS_BUFFER_TOO_SMALL, "BUFFER_TOO_SMALL", NULL},
|
||||
{STATUS_UNABLE_TO_DECOMMIT_VM, "UNABLE_TO_DECOMMIT_VM", NULL},
|
||||
{STATUS_DISK_CORRUPT_ERROR, "DISK_CORRUPT_ERROR", NULL},
|
||||
{STATUS_OBJECT_NAME_INVALID, "OBJECT_NAME_INVALID", NULL},
|
||||
{STATUS_OBJECT_NAME_NOT_FOUND, "OBJECT_NAME_NOT_FOUND", NULL},
|
||||
{STATUS_OBJECT_PATH_INVALID, "OBJECT_PATH_INVALID", NULL},
|
||||
{STATUS_OBJECT_PATH_NOT_FOUND, "OBJECT_PATH_NOT_FOUND", NULL},
|
||||
{STATUS_DFS_EXIT_PATH_FOUND, "DFS_EXIT_PATH_FOUND", NULL},
|
||||
{STATUS_OBJECT_PATH_SYNTAX_BAD, "OBJECT_PATH_SYNTAX_BAD", NULL},
|
||||
{STATUS_DATA_OVERRUN, "DATA_OVERRUN", NULL},
|
||||
{STATUS_DATA_LATE_ERROR, "DATA_LATE_ERROR", NULL},
|
||||
{STATUS_DATA_ERROR, "DATA_ERROR", NULL},
|
||||
{STATUS_CRC_ERROR, "CRC_ERROR", NULL},
|
||||
{STATUS_SHARING_VIOLATION, "SHARING_VIOLATION", NULL},
|
||||
{STATUS_QUOTA_EXCEEDED, "QUOTA_EXCEEDED", NULL},
|
||||
{STATUS_MUTANT_NOT_OWNED, "MUTANT_NOT_OWNED", NULL},
|
||||
{STATUS_SEMAPHORE_LIMIT_EXCEEDED, "SEMAPHORE_LIMIT_EXCEEDED", NULL},
|
||||
{STATUS_DISK_FULL, "DISK_FULL", NULL},
|
||||
{STATUS_LOCK_NOT_GRANTED, "LOCK_NOT_GRANTED", NULL},
|
||||
{STATUS_DEVICE_NOT_READY, "DEVICE_NOT_READY", NULL},
|
||||
{STATUS_IO_TIMEOUT, "IO_TIMEOUT", NULL},
|
||||
{STATUS_MEDIA_WRITE_PROTECTED, "MEDIA_WRITE_PROTECTED", NULL},
|
||||
{STATUS_NO_MEDIA_IN_DRIVE, "NO_MEDIA_IN_DRIVE", NULL},
|
||||
{STATUS_VERIFY_REQUIRED, "VERIFY_REQUIRED", NULL},
|
||||
{STATUS_UNRECOGNIZED_MEDIA, "UNRECOGNIZED_MEDIA", NULL},
|
||||
{STATUS_UNRECOGNIZED_VOLUME, "UNRECOGNIZED_VOLUME", NULL},
|
||||
{STATUS_FS_DRIVER_REQUIRED, "FS_DRIVER_REQUIRED", NULL},
|
||||
{STATUS_NOT_SUPPORTED, "NOT_SUPPORTED", NULL},
|
||||
{STATUS_DISK_OPERATION_FAILED, "DISK_OPERATION_FAILED", NULL},
|
||||
{STATUS_FS_QUERY_REQUIRED, "FS_QUERY_REQUIRED", NULL},
|
||||
{0, NULL, NULL}
|
||||
};
|
||||
|
||||
/* FUNCTIONS *****************************************************************/
|
||||
|
||||
VOID
|
||||
DbgGetErrorText(NTSTATUS ErrorCode, PUNICODE_STRING ErrorText, ULONG Flags)
|
||||
{
|
||||
int i;
|
||||
char TempBuf[255], NumBuf[32];
|
||||
ANSI_STRING AnsiString;
|
||||
|
||||
TempBuf[0] = '\0';
|
||||
if (Flags & DBG_GET_SHOW_FACILITY)
|
||||
{
|
||||
if (NT_CUSTOMER(ErrorCode))
|
||||
{
|
||||
_snprintf(TempBuf, sizeof(TempBuf)-1,
|
||||
"%%CUST-%s-",
|
||||
SeverityCodes[NT_SEVERITY(ErrorCode)]);
|
||||
TempBuf[sizeof(TempBuf)-1] = '\0';
|
||||
}
|
||||
else
|
||||
{
|
||||
for (i = 0; FacList[i].Name != NULL; i++)
|
||||
{
|
||||
if (FacList[i].Code == (ULONG) NT_FACILITY(ErrorCode))
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (FacList[i].Name != NULL)
|
||||
{
|
||||
_snprintf(TempBuf, sizeof(TempBuf)-1, "%%%s-%s-",
|
||||
FacList[i].Name,
|
||||
SeverityCodes[NT_SEVERITY(ErrorCode)]);
|
||||
TempBuf[sizeof(TempBuf)-1] = '\0';
|
||||
}
|
||||
else
|
||||
{
|
||||
_snprintf(TempBuf, sizeof(TempBuf)-1, "%%UNKNOWN-%s-",
|
||||
SeverityCodes[NT_SEVERITY(ErrorCode)]);
|
||||
TempBuf[sizeof(TempBuf)-1] = '\0';
|
||||
}
|
||||
}
|
||||
}
|
||||
for (i = 0; ErrList[i].Name != NULL; i++)
|
||||
{
|
||||
if (ErrorCode == ErrList[i].Code)
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (ErrList[i].Name != NULL)
|
||||
{
|
||||
if (Flags & DBG_GET_SHOW_FACILITY)
|
||||
{
|
||||
strcat(TempBuf, ErrList[i].Name);
|
||||
strcat(TempBuf, " ");
|
||||
}
|
||||
if (ErrList[i].Text != NULL)
|
||||
{
|
||||
strcat(TempBuf, ErrList[i].Text);
|
||||
}
|
||||
else
|
||||
{
|
||||
strcat(TempBuf, ErrList[i].Name);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (Flags & DBG_GET_SHOW_FACILITY)
|
||||
{
|
||||
_snprintf(NumBuf, sizeof(NumBuf)-1, "%08lx", ErrorCode);
|
||||
NumBuf[sizeof(NumBuf)-1] = '\0';
|
||||
strcat(TempBuf, NumBuf);
|
||||
strcat(TempBuf, " ");
|
||||
}
|
||||
sprintf(NumBuf, "Unknown Message #%08lx", ErrorCode);
|
||||
strcat(TempBuf, NumBuf);
|
||||
}
|
||||
RtlInitAnsiString(&AnsiString, TempBuf);
|
||||
RtlAnsiStringToUnicodeString(ErrorText, &AnsiString, TRUE);
|
||||
}
|
||||
|
||||
VOID
|
||||
DbgPrintErrorMessage(NTSTATUS ErrorCode)
|
||||
{
|
||||
UNICODE_STRING ErrorText;
|
||||
|
||||
DbgGetErrorText(ErrorCode, &ErrorText, 0xf);
|
||||
DbgPrint("%wZ\n", &ErrorText);
|
||||
RtlFreeUnicodeString(&ErrorText);
|
||||
}
|
||||
|
||||
|
||||
@@ -1,198 +0,0 @@
|
||||
/* $Id$
|
||||
*
|
||||
* COPYRIGHT: See COPYING in the top level directory
|
||||
* PROJECT: ReactOS kernel
|
||||
* FILE: ntoskrnl/dbg/print.c
|
||||
* PURPOSE: Debug output
|
||||
*
|
||||
* PROGRAMMERS: Eric Kohl ([email protected])
|
||||
*/
|
||||
|
||||
/* INCLUDES *****************************************************************/
|
||||
|
||||
#include <ntoskrnl.h>
|
||||
#include <internal/debug.h>
|
||||
|
||||
/* FUNCTIONS ****************************************************************/
|
||||
|
||||
#if 0
|
||||
ULONG DbgService (ULONG Service, PVOID Context1, PVOID Context2);
|
||||
__asm__ ("\n\t.global _DbgService\n\t"
|
||||
"_DbgService:\n\t"
|
||||
"mov 4(%esp), %eax\n\t"
|
||||
"mov 8(%esp), %ecx\n\t"
|
||||
"mov 12(%esp), %edx\n\t"
|
||||
"int $0x2D\n\t"
|
||||
"ret\n\t");
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Note: DON'T CHANGE THIS FUNCTION!!!
|
||||
* DON'T CALL HalDisplayString OR SOMETING ELSE!!!
|
||||
* You'll only break the serial/bochs debugging feature!!!
|
||||
*/
|
||||
|
||||
/*
|
||||
* @implemented
|
||||
*/
|
||||
ULONG
|
||||
DbgPrint(PCH Format, ...)
|
||||
{
|
||||
ANSI_STRING DebugString;
|
||||
CHAR Buffer[1024];
|
||||
va_list ap;
|
||||
#ifdef SERIALIZE_DBGPRINT
|
||||
# define MESSAGETABLE_SIZE 16
|
||||
LONG MyTableIndex;
|
||||
static LONG Lock = 0;
|
||||
static LONG TableWriteIndex = 0, TableReadIndex = 0;
|
||||
static CHAR MessageTable[MESSAGETABLE_SIZE][sizeof(Buffer)] = { { '\0' } };
|
||||
#endif /* SERIALIZE_DBGPRINT */
|
||||
|
||||
/* init ansi string */
|
||||
DebugString.Buffer = Buffer;
|
||||
DebugString.MaximumLength = sizeof(Buffer);
|
||||
|
||||
va_start (ap, Format);
|
||||
DebugString.Length = _vsnprintf (Buffer, sizeof( Buffer ), Format, ap);
|
||||
va_end (ap);
|
||||
|
||||
#ifdef SERIALIZE_DBGPRINT
|
||||
/* check if we are already running */
|
||||
if (InterlockedCompareExchange(&Lock, 1, 0) == 1)
|
||||
{
|
||||
MyTableIndex = InterlockedIncrement(&TableWriteIndex) - 1;
|
||||
InterlockedCompareExchange(&TableWriteIndex, 0, MESSAGETABLE_SIZE);
|
||||
MyTableIndex %= MESSAGETABLE_SIZE;
|
||||
|
||||
if (MessageTable[MyTableIndex][0] != '\0') /* table is full */
|
||||
{
|
||||
DebugString.Buffer = "CRITICAL ERROR: DbgPrint Table is FULL!";
|
||||
DebugString.Length = 39;
|
||||
KdpPrintString(&DebugString);
|
||||
for (;;);
|
||||
}
|
||||
else
|
||||
{
|
||||
/*DebugString.Buffer = "µµµ";
|
||||
DebugString.Length = 3;
|
||||
KdpPrintString(&DebugString);*/
|
||||
memcpy(MessageTable[MyTableIndex], DebugString.Buffer, DebugString.Length);
|
||||
MessageTable[MyTableIndex][DebugString.Length] = '\0';
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
#endif /* SERIALIZE_DBGPRINT */
|
||||
KdpPrintString (&DebugString);
|
||||
#ifdef SERIALIZE_DBGPRINT
|
||||
MyTableIndex = TableReadIndex;
|
||||
while (MessageTable[MyTableIndex][0] != '\0')
|
||||
{
|
||||
/*DebugString.Buffer = "$$$";
|
||||
DebugString.Length = 3;
|
||||
KdpPrintString(&DebugString);*/
|
||||
|
||||
DebugString.Buffer = MessageTable[MyTableIndex];
|
||||
DebugString.Length = strlen(DebugString.Buffer);
|
||||
DebugString.MaximumLength = DebugString.Length + 1;
|
||||
|
||||
KdpPrintString(&DebugString);
|
||||
MessageTable[MyTableIndex][0] = '\0';
|
||||
|
||||
MyTableIndex = InterlockedIncrement(&TableReadIndex);
|
||||
InterlockedCompareExchange(&TableReadIndex, 0, MESSAGETABLE_SIZE);
|
||||
MyTableIndex %= MESSAGETABLE_SIZE;
|
||||
}
|
||||
InterlockedDecrement(&Lock);
|
||||
}
|
||||
# undef MESSAGETABLE_SIZE
|
||||
#endif /* SERIALIZE_DBGPRINT */
|
||||
|
||||
return (ULONG)DebugString.Length;
|
||||
}
|
||||
|
||||
/*
|
||||
* @unimplemented
|
||||
*/
|
||||
ULONG
|
||||
__cdecl
|
||||
DbgPrintEx(
|
||||
IN ULONG ComponentId,
|
||||
IN ULONG Level,
|
||||
IN PCH Format,
|
||||
...
|
||||
)
|
||||
{
|
||||
UNIMPLEMENTED;
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* @unimplemented
|
||||
*/
|
||||
ULONG
|
||||
__cdecl
|
||||
DbgPrintReturnControlC(
|
||||
PCH Format,
|
||||
...
|
||||
)
|
||||
{
|
||||
UNIMPLEMENTED;
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* @unimplemented
|
||||
*/
|
||||
VOID STDCALL
|
||||
DbgPrompt (PCH OutputString,
|
||||
PCH InputString,
|
||||
USHORT InputSize)
|
||||
{
|
||||
ANSI_STRING Output;
|
||||
ANSI_STRING Input;
|
||||
|
||||
Input.Length = 0;
|
||||
Input.MaximumLength = InputSize;
|
||||
Input.Buffer = InputString;
|
||||
|
||||
Output.Length = strlen (OutputString);
|
||||
Output.MaximumLength = Output.Length + 1;
|
||||
Output.Buffer = OutputString;
|
||||
|
||||
/* FIXME: Not implemented yet! */
|
||||
// KdpPromptString (&Output,
|
||||
// &Input);
|
||||
}
|
||||
|
||||
/*
|
||||
* @unimplemented
|
||||
*/
|
||||
NTSTATUS
|
||||
STDCALL
|
||||
DbgQueryDebugFilterState(
|
||||
IN ULONG ComponentId,
|
||||
IN ULONG Level
|
||||
)
|
||||
{
|
||||
UNIMPLEMENTED;
|
||||
return STATUS_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
/*
|
||||
* @unimplemented
|
||||
*/
|
||||
NTSTATUS
|
||||
STDCALL
|
||||
DbgSetDebugFilterState(
|
||||
IN ULONG ComponentId,
|
||||
IN ULONG Level,
|
||||
IN BOOLEAN State
|
||||
)
|
||||
{
|
||||
UNIMPLEMENTED;
|
||||
return STATUS_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
/* EOF */
|
||||
@@ -1,134 +0,0 @@
|
||||
/* $Id$
|
||||
*
|
||||
* COPYRIGHT: See COPYING in the top level directory
|
||||
* PROJECT: ReactOS kernel
|
||||
* FILE: ntoskrnl/dbg/rdebug.c
|
||||
* PURPOSE: Runtime debugging support
|
||||
*
|
||||
* PROGRAMMERS: Casper S. Hornstrup ([email protected])
|
||||
*/
|
||||
|
||||
/* INCLUDES *****************************************************************/
|
||||
|
||||
#include <ntoskrnl.h>
|
||||
#define NDEBUG
|
||||
#include <internal/debug.h>
|
||||
|
||||
/* GLOBALS ******************************************************************/
|
||||
|
||||
typedef struct _RDEBUG_ENTRY {
|
||||
LIST_ENTRY ListEntry;
|
||||
CHAR Filename[MAX_PATH];
|
||||
} RDEBUG_ENTRY, *PRDEBUG_ENTRY;
|
||||
|
||||
LIST_ENTRY RDebugListHead;
|
||||
BOOLEAN RDebugInitialized = FALSE;
|
||||
|
||||
/* FUNCTIONS ****************************************************************/
|
||||
|
||||
PRDEBUG_ENTRY
|
||||
DbgpFind(PCH Filename)
|
||||
{
|
||||
PLIST_ENTRY Current;
|
||||
PRDEBUG_ENTRY Entry;
|
||||
|
||||
Current = RDebugListHead.Flink;
|
||||
while (Current != &RDebugListHead)
|
||||
{
|
||||
Entry = CONTAINING_RECORD(Current, RDEBUG_ENTRY, ListEntry);
|
||||
|
||||
if (strcmp(Filename, Entry->Filename) == 0)
|
||||
{
|
||||
return Entry;
|
||||
}
|
||||
Current = Current->Flink;
|
||||
}
|
||||
|
||||
return(NULL);
|
||||
}
|
||||
|
||||
VOID INIT_FUNCTION
|
||||
DbgRDebugInit(VOID)
|
||||
{
|
||||
if (RDebugInitialized)
|
||||
return;
|
||||
|
||||
InitializeListHead(&RDebugListHead);
|
||||
RDebugInitialized = TRUE;
|
||||
}
|
||||
|
||||
VOID
|
||||
DbgShowFiles(VOID)
|
||||
{
|
||||
PLIST_ENTRY Current;
|
||||
PRDEBUG_ENTRY Entry;
|
||||
ULONG Count;
|
||||
|
||||
if (!RDebugInitialized)
|
||||
return;
|
||||
|
||||
Count = 0;
|
||||
Current = RDebugListHead.Flink;
|
||||
while (Current != &RDebugListHead)
|
||||
{
|
||||
Entry = CONTAINING_RECORD(Current, RDEBUG_ENTRY, ListEntry);
|
||||
|
||||
DbgPrint(" %s\n", Entry->Filename);
|
||||
Count++;
|
||||
|
||||
Current = Current->Flink;
|
||||
}
|
||||
|
||||
if (Count == 1)
|
||||
{
|
||||
DbgPrint(" 1 file listed\n");
|
||||
}
|
||||
else
|
||||
{
|
||||
DbgPrint(" %d files listed\n", Count);
|
||||
}
|
||||
}
|
||||
|
||||
VOID
|
||||
DbgEnableFile(PCH Filename)
|
||||
{
|
||||
PRDEBUG_ENTRY Entry;
|
||||
|
||||
if (!RDebugInitialized)
|
||||
return;
|
||||
|
||||
if (!DbgpFind(Filename))
|
||||
{
|
||||
Entry = ExAllocatePool(NonPagedPool, sizeof(RDEBUG_ENTRY));
|
||||
ASSERT(Entry);
|
||||
RtlMoveMemory(Entry->Filename, Filename, strlen(Filename) + 1);
|
||||
InsertTailList(&RDebugListHead, &Entry->ListEntry);
|
||||
}
|
||||
}
|
||||
|
||||
VOID
|
||||
DbgDisableFile(PCH Filename)
|
||||
{
|
||||
PRDEBUG_ENTRY Entry;
|
||||
|
||||
if (!RDebugInitialized)
|
||||
return;
|
||||
|
||||
Entry = DbgpFind(Filename);
|
||||
|
||||
if (Entry)
|
||||
{
|
||||
RemoveEntryList(&Entry->ListEntry);
|
||||
}
|
||||
}
|
||||
|
||||
BOOLEAN
|
||||
DbgShouldPrint(PCH Filename)
|
||||
{
|
||||
if (!RDebugInitialized)
|
||||
return FALSE;
|
||||
|
||||
return(DbgpFind(Filename) != NULL);
|
||||
}
|
||||
|
||||
/* EOF */
|
||||
@@ -1,90 +0,0 @@
|
||||
/* $Id:$
|
||||
*
|
||||
* COPYRIGHT: See COPYING in the top level directory
|
||||
* PROJECT: ReactOS kernel
|
||||
* FILE: ntoskrnl/dbg/user.c
|
||||
* PURPOSE: User mode debugging
|
||||
*
|
||||
* PROGRAMMERS: David Welch ([email protected])
|
||||
*/
|
||||
|
||||
/* INCLUDES ******************************************************************/
|
||||
|
||||
#include <ntoskrnl.h>
|
||||
#include <internal/debug.h>
|
||||
|
||||
/* FUNCTIONS *****************************************************************/
|
||||
|
||||
VOID
|
||||
DbgkCreateThread(PVOID StartAddress)
|
||||
{
|
||||
LPC_DBG_MESSAGE Message;
|
||||
LPC_DBG_MESSAGE Reply;
|
||||
NTSTATUS Status;
|
||||
|
||||
if (PsGetCurrentThread()->ThreadsProcess->DebugPort == NULL)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
Message.Header.MessageSize = sizeof(LPC_DBG_MESSAGE);
|
||||
Message.Header.DataSize = sizeof(LPC_DBG_MESSAGE) -
|
||||
sizeof(LPC_MESSAGE);
|
||||
Message.Type = DBG_EVENT_CREATE_THREAD;
|
||||
Message.Status = STATUS_SUCCESS;
|
||||
Message.Data.CreateThread.Reserved = 0;
|
||||
Message.Data.CreateThread.StartAddress = StartAddress;
|
||||
|
||||
/* FIXME: Freeze all threads in process */
|
||||
|
||||
/* Send the message to the process's debug port and wait for a reply */
|
||||
Status =
|
||||
LpcSendDebugMessagePort(PsGetCurrentThread()->ThreadsProcess->DebugPort,
|
||||
&Message,
|
||||
&Reply);
|
||||
if (!NT_SUCCESS(Status))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
/* FIXME: Examine reply */
|
||||
return;
|
||||
}
|
||||
|
||||
ULONG
|
||||
DbgkForwardException(EXCEPTION_RECORD Er, ULONG FirstChance)
|
||||
{
|
||||
LPC_DBG_MESSAGE Message;
|
||||
LPC_DBG_MESSAGE Reply;
|
||||
NTSTATUS Status;
|
||||
|
||||
if (PsGetCurrentThread()->ThreadsProcess->DebugPort == NULL)
|
||||
{
|
||||
return(0);
|
||||
}
|
||||
|
||||
Message.Header.MessageSize = sizeof(LPC_DBG_MESSAGE);
|
||||
Message.Header.DataSize = sizeof(LPC_DBG_MESSAGE) -
|
||||
sizeof(LPC_MESSAGE);
|
||||
Message.Type = DBG_EVENT_EXCEPTION;
|
||||
Message.Status = STATUS_SUCCESS;
|
||||
Message.Data.Exception.ExceptionRecord = Er;
|
||||
Message.Data.Exception.FirstChance = FirstChance;
|
||||
|
||||
/* FIXME: Freeze all threads in process */
|
||||
|
||||
/* Send the message to the process's debug port and wait for a reply */
|
||||
Status =
|
||||
LpcSendDebugMessagePort(PsGetCurrentThread()->ThreadsProcess->DebugPort,
|
||||
&Message,
|
||||
&Reply);
|
||||
if (!NT_SUCCESS(Status))
|
||||
{
|
||||
return(0);
|
||||
}
|
||||
|
||||
/* FIXME: Examine reply */
|
||||
return(0);
|
||||
}
|
||||
|
||||
/* EOF */
|
||||
Reference in New Issue
Block a user