mirror of
https://github.com/reactos/reactos.git
synced 2024-12-26 17:14:41 +00:00
[NTOS:KD64] KdInitSystem(): Minor code enhancements.
- Move local variables to the code blocks where they are used. - if-s one-line bodies on their own lines. - Massage the boot-images symbols loading, using a for-loop.
This commit is contained in:
parent
ba342e1d14
commit
cb0c9a4570
1 changed files with 32 additions and 39 deletions
|
@ -162,21 +162,10 @@ KdInitSystem(
|
||||||
_In_ ULONG BootPhase,
|
_In_ ULONG BootPhase,
|
||||||
_In_opt_ PLOADER_PARAMETER_BLOCK LoaderBlock)
|
_In_opt_ PLOADER_PARAMETER_BLOCK LoaderBlock)
|
||||||
{
|
{
|
||||||
BOOLEAN EnableKd, DisableKdAfterInit = FALSE, BlockEnable;
|
BOOLEAN EnableKd, DisableKdAfterInit = FALSE, BlockEnable = FALSE;
|
||||||
PSTR CommandLine, DebugLine, DebugOptionStart, DebugOptionEnd;
|
|
||||||
STRING ImageName;
|
|
||||||
PLDR_DATA_TABLE_ENTRY LdrEntry;
|
PLDR_DATA_TABLE_ENTRY LdrEntry;
|
||||||
PLIST_ENTRY NextEntry;
|
ULONG i;
|
||||||
ULONG i, j, Length;
|
|
||||||
SIZE_T DebugOptionLength;
|
|
||||||
SIZE_T MemSizeMBs;
|
SIZE_T MemSizeMBs;
|
||||||
CHAR NameBuffer[256];
|
|
||||||
PWCHAR Name;
|
|
||||||
|
|
||||||
#if defined(__GNUC__)
|
|
||||||
/* Make gcc happy */
|
|
||||||
BlockEnable = FALSE;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Check if this is Phase 1 */
|
/* Check if this is Phase 1 */
|
||||||
if (BootPhase)
|
if (BootPhase)
|
||||||
|
@ -187,7 +176,8 @@ KdInitSystem(
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Check if we already initialized once */
|
/* Check if we already initialized once */
|
||||||
if (KdDebuggerEnabled) return TRUE;
|
if (KdDebuggerEnabled)
|
||||||
|
return TRUE;
|
||||||
|
|
||||||
/* Set the Debug Routine as the Stub for now */
|
/* Set the Debug Routine as the Stub for now */
|
||||||
KiDebugRoutine = KdpStub;
|
KiDebugRoutine = KdpStub;
|
||||||
|
@ -233,6 +223,8 @@ KdInitSystem(
|
||||||
/* Check if we have a loader block */
|
/* Check if we have a loader block */
|
||||||
if (LoaderBlock)
|
if (LoaderBlock)
|
||||||
{
|
{
|
||||||
|
PSTR CommandLine, DebugLine;
|
||||||
|
|
||||||
/* Get the image entry */
|
/* Get the image entry */
|
||||||
LdrEntry = CONTAINING_RECORD(LoaderBlock->LoadOrderListHead.Flink,
|
LdrEntry = CONTAINING_RECORD(LoaderBlock->LoadOrderListHead.Flink,
|
||||||
LDR_DATA_TABLE_ENTRY,
|
LDR_DATA_TABLE_ENTRY,
|
||||||
|
@ -263,7 +255,7 @@ KdInitSystem(
|
||||||
/* Don't enable KD and don't let it be enabled later */
|
/* Don't enable KD and don't let it be enabled later */
|
||||||
KdPitchDebugger = TRUE;
|
KdPitchDebugger = TRUE;
|
||||||
}
|
}
|
||||||
else if ((DebugLine = strstr(CommandLine, "DEBUG")) != NULL)
|
else if ((DebugLine = strstr(CommandLine, "DEBUG")))
|
||||||
{
|
{
|
||||||
/* Enable KD */
|
/* Enable KD */
|
||||||
EnableKd = TRUE;
|
EnableKd = TRUE;
|
||||||
|
@ -272,11 +264,14 @@ KdInitSystem(
|
||||||
if (DebugLine[5] == '=')
|
if (DebugLine[5] == '=')
|
||||||
{
|
{
|
||||||
/* Save pointers */
|
/* Save pointers */
|
||||||
|
PSTR DebugOptionStart, DebugOptionEnd;
|
||||||
DebugOptionStart = DebugOptionEnd = &DebugLine[6];
|
DebugOptionStart = DebugOptionEnd = &DebugLine[6];
|
||||||
|
|
||||||
/* Scan the string for debug options */
|
/* Scan the string for debug options */
|
||||||
for (;;)
|
for (;;)
|
||||||
{
|
{
|
||||||
|
SIZE_T DebugOptionLength;
|
||||||
|
|
||||||
/* Loop until we reach the end of the string */
|
/* Loop until we reach the end of the string */
|
||||||
while (*DebugOptionEnd != ANSI_NULL)
|
while (*DebugOptionEnd != ANSI_NULL)
|
||||||
{
|
{
|
||||||
|
@ -287,7 +282,7 @@ KdInitSystem(
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
* We reached the end of the option or
|
* We reached the end of the option or
|
||||||
* the end of the string, break out
|
* the end of the string, break out.
|
||||||
*/
|
*/
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -301,20 +296,19 @@ KdInitSystem(
|
||||||
/* Calculate the length of the current option */
|
/* Calculate the length of the current option */
|
||||||
DebugOptionLength = (DebugOptionEnd - DebugOptionStart);
|
DebugOptionLength = (DebugOptionEnd - DebugOptionStart);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Break out if we reached the last option
|
* Break out if we reached the last option
|
||||||
* or if there were no options at all
|
* or if there were no options at all.
|
||||||
*/
|
*/
|
||||||
if (!DebugOptionLength) break;
|
if (!DebugOptionLength)
|
||||||
|
break;
|
||||||
|
|
||||||
/* Now check which option this is */
|
/* Now check which option this is */
|
||||||
if ((DebugOptionLength == 10) &&
|
if ((DebugOptionLength == 10) &&
|
||||||
!(strncmp(DebugOptionStart, "AUTOENABLE", 10)))
|
!(strncmp(DebugOptionStart, "AUTOENABLE", 10)))
|
||||||
{
|
{
|
||||||
/*
|
/* Disable the debugger, but
|
||||||
* Disable the debugger, but
|
* allow to re-enable it later */
|
||||||
* allow it to be reenabled
|
|
||||||
*/
|
|
||||||
DisableKdAfterInit = TRUE;
|
DisableKdAfterInit = TRUE;
|
||||||
BlockEnable = FALSE;
|
BlockEnable = FALSE;
|
||||||
KdAutoEnableOnEvent = TRUE;
|
KdAutoEnableOnEvent = TRUE;
|
||||||
|
@ -335,14 +329,11 @@ KdInitSystem(
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* If there are more options then
|
* If there are more options then the next character
|
||||||
* the next character should be a comma
|
* should be a comma. Break out if it isn't.
|
||||||
*/
|
*/
|
||||||
if (*DebugOptionEnd != ',')
|
if (*DebugOptionEnd != ',')
|
||||||
{
|
|
||||||
/* It isn't, break out */
|
|
||||||
break;
|
break;
|
||||||
}
|
|
||||||
|
|
||||||
/* Move on to the next option */
|
/* Move on to the next option */
|
||||||
DebugOptionEnd++;
|
DebugOptionEnd++;
|
||||||
|
@ -431,10 +422,16 @@ KdInitSystem(
|
||||||
/* Check if we have a loader block */
|
/* Check if we have a loader block */
|
||||||
if (LoaderBlock)
|
if (LoaderBlock)
|
||||||
{
|
{
|
||||||
/* Loop boot images */
|
PLIST_ENTRY NextEntry;
|
||||||
NextEntry = LoaderBlock->LoadOrderListHead.Flink;
|
ULONG j, Length;
|
||||||
i = 0;
|
PWCHAR Name;
|
||||||
while ((NextEntry != &LoaderBlock->LoadOrderListHead) && (i < 2))
|
STRING ImageName;
|
||||||
|
CHAR NameBuffer[256];
|
||||||
|
|
||||||
|
/* Loop over the first two boot images: HAL and kernel */
|
||||||
|
for (NextEntry = LoaderBlock->LoadOrderListHead.Flink, i = 0;
|
||||||
|
NextEntry != &LoaderBlock->LoadOrderListHead && (i < 2);
|
||||||
|
NextEntry = NextEntry->Flink, ++i)
|
||||||
{
|
{
|
||||||
/* Get the image entry */
|
/* Get the image entry */
|
||||||
LdrEntry = CONTAINING_RECORD(NextEntry,
|
LdrEntry = CONTAINING_RECORD(NextEntry,
|
||||||
|
@ -454,15 +451,11 @@ KdInitSystem(
|
||||||
/* Null-terminate */
|
/* Null-terminate */
|
||||||
NameBuffer[j] = ANSI_NULL;
|
NameBuffer[j] = ANSI_NULL;
|
||||||
|
|
||||||
/* Load symbols for image */
|
/* Load the symbols */
|
||||||
RtlInitString(&ImageName, NameBuffer);
|
RtlInitString(&ImageName, NameBuffer);
|
||||||
DbgLoadImageSymbols(&ImageName,
|
DbgLoadImageSymbols(&ImageName,
|
||||||
LdrEntry->DllBase,
|
LdrEntry->DllBase,
|
||||||
(ULONG_PTR)PsGetCurrentProcessId());
|
(ULONG_PTR)PsGetCurrentProcessId());
|
||||||
|
|
||||||
/* Go to the next entry */
|
|
||||||
NextEntry = NextEntry->Flink;
|
|
||||||
i++;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Check for incoming break-in and break on symbol load
|
/* Check for incoming break-in and break on symbol load
|
||||||
|
|
Loading…
Reference in a new issue