ReactOS.org
Sign In
Sign Up
Sign In
Sign Up
Manage this list
×
Keyboard Shortcuts
Thread View
j
: Next unread message
k
: Previous unread message
j a
: Jump to all threads
j l
: Jump to MailingList overview
2024
September
August
July
June
May
April
March
February
January
2023
December
November
October
September
August
July
June
May
April
March
February
January
2022
December
November
October
September
August
July
June
May
April
March
February
January
2021
December
November
October
September
August
July
June
May
April
March
February
January
2020
December
November
October
September
August
July
June
May
April
March
February
January
2019
December
November
October
September
August
July
June
May
April
March
February
January
2018
December
November
October
September
August
July
June
May
April
March
February
January
2017
December
November
October
September
August
July
June
May
April
March
February
January
2016
December
November
October
September
August
July
June
May
April
March
February
January
2015
December
November
October
September
August
July
June
May
April
March
February
January
2014
December
November
October
September
August
July
June
May
April
March
February
January
2013
December
November
October
September
August
July
June
May
April
March
February
January
2012
December
November
October
September
August
July
June
May
April
March
February
January
2011
December
November
October
September
August
July
June
May
April
March
February
January
2010
December
November
October
September
August
July
June
May
April
March
February
January
2009
December
November
October
September
August
July
June
May
April
March
February
January
2008
December
November
October
September
August
July
June
May
April
March
February
January
2007
December
November
October
September
August
July
June
May
April
March
February
January
2006
December
November
October
September
August
July
June
May
April
March
February
January
2005
December
November
October
September
August
July
June
May
April
March
February
January
2004
December
November
October
September
August
July
June
May
April
March
February
List overview
Download
Ros-diffs
October 2006
----- 2024 -----
September 2024
August 2024
July 2024
June 2024
May 2024
April 2024
March 2024
February 2024
January 2024
----- 2023 -----
December 2023
November 2023
October 2023
September 2023
August 2023
July 2023
June 2023
May 2023
April 2023
March 2023
February 2023
January 2023
----- 2022 -----
December 2022
November 2022
October 2022
September 2022
August 2022
July 2022
June 2022
May 2022
April 2022
March 2022
February 2022
January 2022
----- 2021 -----
December 2021
November 2021
October 2021
September 2021
August 2021
July 2021
June 2021
May 2021
April 2021
March 2021
February 2021
January 2021
----- 2020 -----
December 2020
November 2020
October 2020
September 2020
August 2020
July 2020
June 2020
May 2020
April 2020
March 2020
February 2020
January 2020
----- 2019 -----
December 2019
November 2019
October 2019
September 2019
August 2019
July 2019
June 2019
May 2019
April 2019
March 2019
February 2019
January 2019
----- 2018 -----
December 2018
November 2018
October 2018
September 2018
August 2018
July 2018
June 2018
May 2018
April 2018
March 2018
February 2018
January 2018
----- 2017 -----
December 2017
November 2017
October 2017
September 2017
August 2017
July 2017
June 2017
May 2017
April 2017
March 2017
February 2017
January 2017
----- 2016 -----
December 2016
November 2016
October 2016
September 2016
August 2016
July 2016
June 2016
May 2016
April 2016
March 2016
February 2016
January 2016
----- 2015 -----
December 2015
November 2015
October 2015
September 2015
August 2015
July 2015
June 2015
May 2015
April 2015
March 2015
February 2015
January 2015
----- 2014 -----
December 2014
November 2014
October 2014
September 2014
August 2014
July 2014
June 2014
May 2014
April 2014
March 2014
February 2014
January 2014
----- 2013 -----
December 2013
November 2013
October 2013
September 2013
August 2013
July 2013
June 2013
May 2013
April 2013
March 2013
February 2013
January 2013
----- 2012 -----
December 2012
November 2012
October 2012
September 2012
August 2012
July 2012
June 2012
May 2012
April 2012
March 2012
February 2012
January 2012
----- 2011 -----
December 2011
November 2011
October 2011
September 2011
August 2011
July 2011
June 2011
May 2011
April 2011
March 2011
February 2011
January 2011
----- 2010 -----
December 2010
November 2010
October 2010
September 2010
August 2010
July 2010
June 2010
May 2010
April 2010
March 2010
February 2010
January 2010
----- 2009 -----
December 2009
November 2009
October 2009
September 2009
August 2009
July 2009
June 2009
May 2009
April 2009
March 2009
February 2009
January 2009
----- 2008 -----
December 2008
November 2008
October 2008
September 2008
August 2008
July 2008
June 2008
May 2008
April 2008
March 2008
February 2008
January 2008
----- 2007 -----
December 2007
November 2007
October 2007
September 2007
August 2007
July 2007
June 2007
May 2007
April 2007
March 2007
February 2007
January 2007
----- 2006 -----
December 2006
November 2006
October 2006
September 2006
August 2006
July 2006
June 2006
May 2006
April 2006
March 2006
February 2006
January 2006
----- 2005 -----
December 2005
November 2005
October 2005
September 2005
August 2005
July 2005
June 2005
May 2005
April 2005
March 2005
February 2005
January 2005
----- 2004 -----
December 2004
November 2004
October 2004
September 2004
August 2004
July 2004
June 2004
May 2004
April 2004
March 2004
February 2004
ros-diffs@reactos.org
17 participants
357 discussions
Start a n
N
ew thread
[ion] 24463: - Initialize the registry in one shot, and allow it to fail and do the associated CONFIG_INIT_FAILED bugcheck. - Initialize Io in one shot, with IoInitSystem. - Locate the system DLL a bit later, since on the boot CD this creates a small incompatibility due to the wrong path being in use.
by ion@svn.reactos.org
Author: ion Date: Mon Oct 9 05:16:28 2006 New Revision: 24463 URL:
http://svn.reactos.org/svn/reactos?rev=24463&view=rev
Log: - Initialize the registry in one shot, and allow it to fail and do the associated CONFIG_INIT_FAILED bugcheck. - Initialize Io in one shot, with IoInitSystem. - Locate the system DLL a bit later, since on the boot CD this creates a small incompatibility due to the wrong path being in use. Modified: trunk/reactos/ntoskrnl/KrnlFun.c trunk/reactos/ntoskrnl/cm/registry.c trunk/reactos/ntoskrnl/ex/init.c trunk/reactos/ntoskrnl/include/internal/ntoskrnl.h trunk/reactos/ntoskrnl/io/iomgr/iomgr.c Modified: trunk/reactos/ntoskrnl/KrnlFun.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/KrnlFun.c?rev=244…
============================================================================== --- trunk/reactos/ntoskrnl/KrnlFun.c (original) +++ trunk/reactos/ntoskrnl/KrnlFun.c Mon Oct 9 05:16:28 2006 @@ -29,7 +29,6 @@ // - FIXES: // * Sanitize some context fields during conversions. // * Figure out why the DPC stack doesn't really work. -// * Try to make MmInit1 NTLDR compatible. // * Add DR macro/save and VM macro/save. // - FEATURES: // * New optimized table-based tick-hashed timer implementation. Modified: trunk/reactos/ntoskrnl/cm/registry.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/cm/registry.c?rev…
============================================================================== --- trunk/reactos/ntoskrnl/cm/registry.c (original) +++ trunk/reactos/ntoskrnl/cm/registry.c Mon Oct 9 05:16:28 2006 @@ -27,6 +27,8 @@ #endif /* GLOBALS ******************************************************************/ + +extern BOOLEAN ExpInTextModeSetup; POBJECT_TYPE CmiKeyType = NULL; PEREGISTRY_HIVE CmiVolatileHive = NULL; @@ -129,6 +131,115 @@ } } +VOID INIT_FUNCTION +CmInit2(PCHAR CommandLine) +{ + ULONG PiceStart = 4; + BOOLEAN MiniNT = FALSE; + PWCHAR SystemBootDevice; + PWCHAR SystemStartOptions; + ULONG Position; + NTSTATUS Status; + + /* Create the 'CurrentControlSet' link. */ + Status = CmiCreateCurrentControlSetLink(); + if (!NT_SUCCESS(Status)) + KEBUGCHECK(CONFIG_INITIALIZATION_FAILED); + + /* + * Parse the system boot device. + */ + Position = 0; + SystemBootDevice = ExAllocatePool(PagedPool, + (strlen(CommandLine) + 1) * sizeof(WCHAR)); + if (SystemBootDevice == NULL) + { + KEBUGCHECK(CONFIG_INITIALIZATION_FAILED); + } + + while (*CommandLine != 0 && *CommandLine != ' ') + SystemBootDevice[Position++] = *(CommandLine++); + SystemBootDevice[Position++] = 0; + + /* + * Write the system boot device to registry. + */ + Status = RtlWriteRegistryValue(RTL_REGISTRY_ABSOLUTE, + L"\\Registry\\Machine\\System\\CurrentControlSet\\Control", + L"SystemBootDevice", + REG_SZ, + SystemBootDevice, + Position * sizeof(WCHAR)); + if (!NT_SUCCESS(Status)) + { + KEBUGCHECK(CONFIG_INITIALIZATION_FAILED); + } + + /* + * Parse the system start options. + */ + Position = 0; + SystemStartOptions = SystemBootDevice; + while ((CommandLine = strchr(CommandLine, '/')) != NULL) + { + /* Skip over the slash */ + CommandLine++; + + /* Special options */ + if (!_strnicmp(CommandLine, "MININT", 6)) + MiniNT = TRUE; + else if (!_strnicmp(CommandLine, "DEBUGPORT=PICE", 14)) + PiceStart = 1; + + /* Add a space between the options */ + if (Position != 0) + SystemStartOptions[Position++] = L' '; + + /* Copy the command */ + while (*CommandLine != 0 && *CommandLine != ' ') + SystemStartOptions[Position++] = *(CommandLine++); + } + SystemStartOptions[Position++] = 0; + + /* + * Write the system start options to registry. + */ + Status = RtlWriteRegistryValue(RTL_REGISTRY_ABSOLUTE, + L"\\Registry\\Machine\\System\\CurrentControlSet\\Control", + L"SystemStartOptions", + REG_SZ, + SystemStartOptions, + Position * sizeof(WCHAR)); + if (!NT_SUCCESS(Status)) + { + KEBUGCHECK(CONFIG_INITIALIZATION_FAILED); + } + + /* + * Create a CurrentControlSet\Control\MiniNT key that is used + * to detect WinPE/MiniNT systems. + */ + if (MiniNT) + { + Status = RtlCreateRegistryKey(RTL_REGISTRY_CONTROL, L"MiniNT"); + if (!NT_SUCCESS(Status)) + KEBUGCHECK(CONFIG_INITIALIZATION_FAILED); + } + + /* Set PICE 'Start' value to 1, if PICE debugging is enabled */ + Status = RtlWriteRegistryValue( + RTL_REGISTRY_SERVICES, + L"\\Pice", + L"Start", + REG_DWORD, + &PiceStart, + sizeof(ULONG)); + if (!NT_SUCCESS(Status)) + KEBUGCHECK(CONFIG_INITIALIZATION_FAILED); + + ExFreePool(SystemBootDevice); +} + VOID INIT_FUNCTION @@ -186,7 +297,7 @@ if (SetupBoot == FALSE) CmInit2(KeLoaderBlock->LoadOptions); } -VOID +BOOLEAN INIT_FUNCTION NTAPI CmInitSystem1(VOID) @@ -245,10 +356,7 @@ &ThreadId, CmiWorkerThread, NULL); - if (!NT_SUCCESS(Status)) - { - KEBUGCHECK(0); - } + if (!NT_SUCCESS(Status)) return FALSE; /* Start the timer */ DueTime.QuadPart = -1; @@ -339,117 +447,12 @@ REG_OPTION_VOLATILE, NULL); ASSERT(NT_SUCCESS(Status)); + + /* Import and Load Registry Hives */ + CmInitHives(ExpInTextModeSetup); + return TRUE; } - -VOID INIT_FUNCTION -CmInit2(PCHAR CommandLine) -{ - ULONG PiceStart = 4; - BOOLEAN MiniNT = FALSE; - PWCHAR SystemBootDevice; - PWCHAR SystemStartOptions; - ULONG Position; - NTSTATUS Status; - - /* Create the 'CurrentControlSet' link. */ - Status = CmiCreateCurrentControlSetLink(); - if (!NT_SUCCESS(Status)) - KEBUGCHECK(CONFIG_INITIALIZATION_FAILED); - - /* - * Parse the system boot device. - */ - Position = 0; - SystemBootDevice = ExAllocatePool(PagedPool, - (strlen(CommandLine) + 1) * sizeof(WCHAR)); - if (SystemBootDevice == NULL) - { - KEBUGCHECK(CONFIG_INITIALIZATION_FAILED); - } - - while (*CommandLine != 0 && *CommandLine != ' ') - SystemBootDevice[Position++] = *(CommandLine++); - SystemBootDevice[Position++] = 0; - - /* - * Write the system boot device to registry. - */ - Status = RtlWriteRegistryValue(RTL_REGISTRY_ABSOLUTE, - L"\\Registry\\Machine\\System\\CurrentControlSet\\Control", - L"SystemBootDevice", - REG_SZ, - SystemBootDevice, - Position * sizeof(WCHAR)); - if (!NT_SUCCESS(Status)) - { - KEBUGCHECK(CONFIG_INITIALIZATION_FAILED); - } - - /* - * Parse the system start options. - */ - Position = 0; - SystemStartOptions = SystemBootDevice; - while ((CommandLine = strchr(CommandLine, '/')) != NULL) - { - /* Skip over the slash */ - CommandLine++; - - /* Special options */ - if (!_strnicmp(CommandLine, "MININT", 6)) - MiniNT = TRUE; - else if (!_strnicmp(CommandLine, "DEBUGPORT=PICE", 14)) - PiceStart = 1; - - /* Add a space between the options */ - if (Position != 0) - SystemStartOptions[Position++] = L' '; - - /* Copy the command */ - while (*CommandLine != 0 && *CommandLine != ' ') - SystemStartOptions[Position++] = *(CommandLine++); - } - SystemStartOptions[Position++] = 0; - - /* - * Write the system start options to registry. - */ - Status = RtlWriteRegistryValue(RTL_REGISTRY_ABSOLUTE, - L"\\Registry\\Machine\\System\\CurrentControlSet\\Control", - L"SystemStartOptions", - REG_SZ, - SystemStartOptions, - Position * sizeof(WCHAR)); - if (!NT_SUCCESS(Status)) - { - KEBUGCHECK(CONFIG_INITIALIZATION_FAILED); - } - - /* - * Create a CurrentControlSet\Control\MiniNT key that is used - * to detect WinPE/MiniNT systems. - */ - if (MiniNT) - { - Status = RtlCreateRegistryKey(RTL_REGISTRY_CONTROL, L"MiniNT"); - if (!NT_SUCCESS(Status)) - KEBUGCHECK(CONFIG_INITIALIZATION_FAILED); - } - - /* Set PICE 'Start' value to 1, if PICE debugging is enabled */ - Status = RtlWriteRegistryValue( - RTL_REGISTRY_SERVICES, - L"\\Pice", - L"Start", - REG_DWORD, - &PiceStart, - sizeof(ULONG)); - if (!NT_SUCCESS(Status)) - KEBUGCHECK(CONFIG_INITIALIZATION_FAILED); - - ExFreePool(SystemBootDevice); -} static NTSTATUS Modified: trunk/reactos/ntoskrnl/ex/init.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/ex/init.c?rev=244…
============================================================================== --- trunk/reactos/ntoskrnl/ex/init.c (original) +++ trunk/reactos/ntoskrnl/ex/init.c Mon Oct 9 05:16:28 2006 @@ -654,7 +654,7 @@ if (!HalInitSystem(ExpInitializationPhase, LoaderBlock)) { /* Initialization failed */ - KEBUGCHECK(HAL_INITIALIZATION_FAILED); + KeBugCheck(HAL_INITIALIZATION_FAILED); } /* We're done */ @@ -728,7 +728,7 @@ /* Convert to ANSI_STRING and null-terminate it */ RtlInitString(&AnsiPath, Buffer ); - Buffer[--AnsiPath.Length] = UNICODE_NULL; + Buffer[--AnsiPath.Length] = ANSI_NULL; /* Get the string from KUSER_SHARED_DATA's buffer */ NtSystemRoot.Buffer = SharedUserData->NtSystemRoot; @@ -902,8 +902,8 @@ /* Initialize Cache Views */ CcInitializeCacheManager(); - /* Initialize the Registry (Hives are NOT yet loaded!) */ - CmInitSystem1(); + /* Initialize the Registry */ + if (!CmInitSystem1()) KeBugCheck(CONFIG_INITIALIZATION_FAILED); /* Update timezone information */ ExRefreshTimeZoneInformation(&SystemBootTime); @@ -917,23 +917,17 @@ /* Initialize LPC */ LpcpInitSystem(); - /* Initialize I/O Objects, Filesystems, Error Logging and Shutdown */ - IoInit(); + /* Enter the kernel debugger before starting up the boot drivers */ + if (KdDebuggerEnabled && KdpEarlyBreak) DbgBreakPoint(); + + /* Initialize the I/O Subsystem */ + if (!IoInitSystem(KeLoaderBlock)) KeBugCheck(IO1_INITIALIZATION_FAILED); + + /* Display the boot screen image if not disabled */ + if (!NoGuiBoot) InbvEnableBootDriver(TRUE); /* Unmap Low memory, and initialize the MPW and Balancer Thread */ MmInit3(); - - /* Import and Load Registry Hives */ - CmInitHives(ExpInTextModeSetup); - - /* Enter the kernel debugger before starting up the boot drivers */ - if (KdDebuggerEnabled && KdpEarlyBreak) DbgBreakPoint(); - - /* Initialize the I/O Subsystem */ - if (!IoInitSystem(KeLoaderBlock)) KeBugCheck(IO1_INITIALIZATION_FAILED); - - /* Display the boot screen image if not disabled */ - if (!NoGuiBoot) InbvEnableBootDriver(TRUE); /* Initialize VDM support */ KeI386VdmInitialize(); Modified: trunk/reactos/ntoskrnl/include/internal/ntoskrnl.h URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/include/internal/…
============================================================================== --- trunk/reactos/ntoskrnl/include/internal/ntoskrnl.h (original) +++ trunk/reactos/ntoskrnl/include/internal/ntoskrnl.h Mon Oct 9 05:16:28 2006 @@ -60,11 +60,8 @@ * Initalization functions (called once by main()) */ VOID MmInitSystem(ULONG Phase, PLOADER_PARAMETER_BLOCK LoaderBlock, ULONG LastKernelAddress); -VOID IoInit(VOID); BOOLEAN NTAPI ObInit(VOID); -VOID NTAPI CmInitSystem1(VOID); -VOID NTAPI CmInitHives(BOOLEAN SetupBoot); -VOID CmInit2(PCHAR CommandLine); +BOOLEAN NTAPI CmInitSystem1(VOID); VOID CmShutdownRegistry(VOID); BOOLEAN CmImportSystemHive(PCHAR ChunkBase, ULONG ChunkSize); BOOLEAN CmImportHardwareHive(PCHAR ChunkBase, ULONG ChunkSize); Modified: trunk/reactos/ntoskrnl/io/iomgr/iomgr.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/io/iomgr/iomgr.c?…
============================================================================== --- trunk/reactos/ntoskrnl/io/iomgr/iomgr.c (original) +++ trunk/reactos/ntoskrnl/io/iomgr/iomgr.c Mon Oct 9 05:16:28 2006 @@ -229,10 +229,18 @@ DPRINT("Done allocation\n"); } -VOID + +BOOLEAN INIT_FUNCTION -IoInit (VOID) +NTAPI +IoInitSystem(IN PLOADER_PARAMETER_BLOCK LoaderBlock) { + PDEVICE_NODE DeviceNode; + PDRIVER_OBJECT DriverObject; + LDR_DATA_TABLE_ENTRY ModuleObject; + NTSTATUS Status; + CHAR Buffer[256]; + ANSI_STRING NtBootPath, RootString; OBJECT_TYPE_INITIALIZER ObjectTypeInitializer; UNICODE_STRING Name; OBJECT_ATTRIBUTES ObjectAttributes; @@ -297,113 +305,100 @@ ObjectTypeInitializer.UseDefaultObject = FALSE; ObCreateObjectType(&Name, &ObjectTypeInitializer, NULL, &IoFileObjectType); - /* - * Create the '\Driver' object directory - */ - RtlInitUnicodeString(&DirName, L"\\Driver"); - InitializeObjectAttributes(&ObjectAttributes, - &DirName, - 0, - NULL, - NULL); - ZwCreateDirectoryObject(&Handle, - 0, - &ObjectAttributes); - - /* - * Create the '\FileSystem' object directory - */ - RtlInitUnicodeString(&DirName, - L"\\FileSystem"); - InitializeObjectAttributes(&ObjectAttributes, - &DirName, - 0, - NULL, - NULL); - ZwCreateDirectoryObject(&Handle, - 0, - &ObjectAttributes); - - /* - * Create the '\Device' directory - */ - RtlInitUnicodeString(&DirName, - L"\\Device"); - InitializeObjectAttributes(&ObjectAttributes, - &DirName, - 0, - NULL, - NULL); - ZwCreateDirectoryObject(&Handle, - 0, - &ObjectAttributes); - - /* - * Create the '\??' directory - */ - RtlInitUnicodeString(&DirName, - L"\\??"); - InitializeObjectAttributes(&ObjectAttributes, - &DirName, - 0, - NULL, - NULL); - ZwCreateDirectoryObject(&Handle, - 0, - &ObjectAttributes); - - /* - * Create the '\ArcName' directory - */ - RtlInitUnicodeString(&DirName, - L"\\ArcName"); - InitializeObjectAttributes(&ObjectAttributes, - &DirName, - 0, - NULL, - NULL); - ZwCreateDirectoryObject(&Handle, - 0, - &ObjectAttributes); - - /* - * Initialize remaining subsubsystem - */ - IopInitDriverImplementation(); - IoInitCancelHandling(); - IoInitFileSystemImplementation(); - IoInitVpbImplementation(); - IoInitShutdownNotification(); - IopInitPnpNotificationImplementation(); - IopInitErrorLog(); - IopInitTimerImplementation(); - IopInitLookasideLists(); - - /* - * Create link from '\DosDevices' to '\??' directory - */ - RtlInitUnicodeString(&DirName, - L"\\??"); - IoCreateSymbolicLink(&LinkName, - &DirName); - - /* - * Initialize PnP manager - */ - PnpInit(); -} - -BOOLEAN -INIT_FUNCTION -NTAPI -IoInitSystem(IN PLOADER_PARAMETER_BLOCK LoaderBlock) -{ - PDEVICE_NODE DeviceNode; - PDRIVER_OBJECT DriverObject; - LDR_DATA_TABLE_ENTRY ModuleObject; - NTSTATUS Status; - CHAR Buffer[256]; - ANSI_STRING NtBootPath, RootString; + /* + * Create the '\Driver' object directory + */ + RtlInitUnicodeString(&DirName, L"\\Driver"); + InitializeObjectAttributes(&ObjectAttributes, + &DirName, + 0, + NULL, + NULL); + ZwCreateDirectoryObject(&Handle, + 0, + &ObjectAttributes); + + /* + * Create the '\FileSystem' object directory + */ + RtlInitUnicodeString(&DirName, + L"\\FileSystem"); + InitializeObjectAttributes(&ObjectAttributes, + &DirName, + 0, + NULL, + NULL); + ZwCreateDirectoryObject(&Handle, + 0, + &ObjectAttributes); + + /* + * Create the '\Device' directory + */ + RtlInitUnicodeString(&DirName, + L"\\Device"); + InitializeObjectAttributes(&ObjectAttributes, + &DirName, + 0, + NULL, + NULL); + ZwCreateDirectoryObject(&Handle, + 0, + &ObjectAttributes); + + /* + * Create the '\??' directory + */ + RtlInitUnicodeString(&DirName, + L"\\??"); + InitializeObjectAttributes(&ObjectAttributes, + &DirName, + 0, + NULL, + NULL); + ZwCreateDirectoryObject(&Handle, + 0, + &ObjectAttributes); + + /* + * Create the '\ArcName' directory + */ + RtlInitUnicodeString(&DirName, + L"\\ArcName"); + InitializeObjectAttributes(&ObjectAttributes, + &DirName, + 0, + NULL, + NULL); + ZwCreateDirectoryObject(&Handle, + 0, + &ObjectAttributes); + + /* + * Initialize remaining subsubsystem + */ + IopInitDriverImplementation(); + IoInitCancelHandling(); + IoInitFileSystemImplementation(); + IoInitVpbImplementation(); + IoInitShutdownNotification(); + IopInitPnpNotificationImplementation(); + IopInitErrorLog(); + IopInitTimerImplementation(); + IopInitLookasideLists(); + + /* + * Create link from '\DosDevices' to '\??' directory + */ + RtlInitUnicodeString(&DirName, + L"\\??"); + IoCreateSymbolicLink(&LinkName, + &DirName); + + /* + * Initialize PnP manager + */ + PnpInit(); RtlInitEmptyAnsiString(&NtBootPath, Buffer, sizeof(Buffer)); @@ -480,9 +475,6 @@ /* Load services for devices found by PnP manager */ IopInitializePnpServices(IopRootDeviceNode, FALSE); - /* Load the System DLL and its Entrypoints */ - if (!NT_SUCCESS(PsLocateSystemDll())) return FALSE; - /* Load system start drivers */ IopInitializeSystemDrivers(); @@ -517,6 +509,9 @@ Status = RtlAnsiStringToUnicodeString(&NtSystemRoot, &RootString, FALSE); if (!NT_SUCCESS(Status)) return FALSE; + /* Load the System DLL and its Entrypoints */ + if (!NT_SUCCESS(PsLocateSystemDll())) return FALSE; + /* Return success */ return TRUE; }
17 years, 11 months
1
0
0
0
[ion] 24462: - Add RtlInitEmptyAnsiString to DDK. - Fix a pretty bad stack/memory corruption bug related to IoReassignSystemRoot. - Combine IoInit2 and IoInit3 into IoInitSystem, and make it return a BOOLEAN, and handle error with the appropriate IO1_INIT_FAILED bugcheck. Will combine IoInit1 soon.
by ion@svn.reactos.org
Author: ion Date: Mon Oct 9 03:46:26 2006 New Revision: 24462 URL:
http://svn.reactos.org/svn/reactos?rev=24462&view=rev
Log: - Add RtlInitEmptyAnsiString to DDK. - Fix a pretty bad stack/memory corruption bug related to IoReassignSystemRoot. - Combine IoInit2 and IoInit3 into IoInitSystem, and make it return a BOOLEAN, and handle error with the appropriate IO1_INIT_FAILED bugcheck. Will combine IoInit1 soon. Modified: trunk/reactos/include/ddk/winddk.h trunk/reactos/ntoskrnl/ex/init.c trunk/reactos/ntoskrnl/include/internal/io.h trunk/reactos/ntoskrnl/include/internal/ntoskrnl.h trunk/reactos/ntoskrnl/io/iomgr/iomgr.c Modified: trunk/reactos/include/ddk/winddk.h URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/include/ddk/winddk.h?rev=2…
============================================================================== --- trunk/reactos/include/ddk/winddk.h (original) +++ trunk/reactos/include/ddk/winddk.h Mon Oct 9 03:46:26 2006 @@ -6275,6 +6275,17 @@ UnicodeString->Buffer = Buffer; } +FORCEINLINE +VOID +RtlInitEmptyAnsiString(OUT PANSI_STRING AnsiString, + IN PCHAR Buffer, + IN USHORT BufferSize) +{ + AnsiString->Length = 0; + AnsiString->MaximumLength = BufferSize; + AnsiString->Buffer = Buffer; +} + NTSYSAPI NTSTATUS NTAPI Modified: trunk/reactos/ntoskrnl/ex/init.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/ex/init.c?rev=244…
============================================================================== --- trunk/reactos/ntoskrnl/ex/init.c (original) +++ trunk/reactos/ntoskrnl/ex/init.c Mon Oct 9 03:46:26 2006 @@ -929,17 +929,11 @@ /* Enter the kernel debugger before starting up the boot drivers */ if (KdDebuggerEnabled && KdpEarlyBreak) DbgBreakPoint(); - /* Setup Drivers and Root Device Node */ - IoInit2(FALSE); + /* Initialize the I/O Subsystem */ + if (!IoInitSystem(KeLoaderBlock)) KeBugCheck(IO1_INITIALIZATION_FAILED); /* Display the boot screen image if not disabled */ if (!NoGuiBoot) InbvEnableBootDriver(TRUE); - - /* Create ARC Names, SystemRoot SymLink, Load Drivers and Assign Letters */ - IoInit3(); - - /* Load the System DLL and its Entrypoints */ - PsLocateSystemDll(); /* Initialize VDM support */ KeI386VdmInitialize(); Modified: trunk/reactos/ntoskrnl/include/internal/io.h URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/include/internal/…
============================================================================== --- trunk/reactos/ntoskrnl/include/internal/io.h (original) +++ trunk/reactos/ntoskrnl/include/internal/io.h Mon Oct 9 03:46:26 2006 @@ -575,6 +575,12 @@ OUT PANSI_STRING NtBootPath ); +BOOLEAN +NTAPI +IoInitSystem( + IN PLOADER_PARAMETER_BLOCK LoaderBlock +); + // // Device/Volume Routines // Modified: trunk/reactos/ntoskrnl/include/internal/ntoskrnl.h URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/include/internal/…
============================================================================== --- trunk/reactos/ntoskrnl/include/internal/ntoskrnl.h (original) +++ trunk/reactos/ntoskrnl/include/internal/ntoskrnl.h Mon Oct 9 03:46:26 2006 @@ -61,8 +61,6 @@ */ VOID MmInitSystem(ULONG Phase, PLOADER_PARAMETER_BLOCK LoaderBlock, ULONG LastKernelAddress); VOID IoInit(VOID); -VOID IoInit2(BOOLEAN BootLog); -VOID NTAPI IoInit3(VOID); BOOLEAN NTAPI ObInit(VOID); VOID NTAPI CmInitSystem1(VOID); VOID NTAPI CmInitHives(BOOLEAN SetupBoot); Modified: trunk/reactos/ntoskrnl/io/iomgr/iomgr.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/io/iomgr/iomgr.c?…
============================================================================== --- trunk/reactos/ntoskrnl/io/iomgr/iomgr.c (original) +++ trunk/reactos/ntoskrnl/io/iomgr/iomgr.c Mon Oct 9 03:46:26 2006 @@ -60,8 +60,6 @@ #pragma alloc_text(INIT, IoInitShutdownNotification) #pragma alloc_text(INIT, IopInitLookasideLists) #pragma alloc_text(INIT, IoInit) -#pragma alloc_text(INIT, IoInit2) -#pragma alloc_text(INIT, IoInit3) #endif /* INIT FUNCTIONS ************************************************************/ @@ -395,103 +393,96 @@ PnpInit(); } -VOID +BOOLEAN INIT_FUNCTION -IoInit2(BOOLEAN BootLog) +NTAPI +IoInitSystem(IN PLOADER_PARAMETER_BLOCK LoaderBlock) { - PDEVICE_NODE DeviceNode; - PDRIVER_OBJECT DriverObject; - LDR_DATA_TABLE_ENTRY ModuleObject; - NTSTATUS Status; - - PnpInit2(); - - IoCreateDriverList(); - - KeInitializeSpinLock (&IoStatisticsLock); - - /* Initialize raw filesystem driver */ - - /* Use IopRootDeviceNode for now */ - Status = IopCreateDeviceNode(IopRootDeviceNode, - NULL, - &DeviceNode); - if (!NT_SUCCESS(Status)) + PDEVICE_NODE DeviceNode; + PDRIVER_OBJECT DriverObject; + LDR_DATA_TABLE_ENTRY ModuleObject; + NTSTATUS Status; + CHAR Buffer[256]; + ANSI_STRING NtBootPath, RootString; + + RtlInitEmptyAnsiString(&NtBootPath, Buffer, sizeof(Buffer)); + + PnpInit2(); + + IoCreateDriverList(); + + KeInitializeSpinLock (&IoStatisticsLock); + + /* Initialize raw filesystem driver */ + + /* Use IopRootDeviceNode for now */ + Status = IopCreateDeviceNode(IopRootDeviceNode, NULL, &DeviceNode); + if (!NT_SUCCESS(Status)) { - CPRINT("IopCreateDeviceNode() failed with status (%x)\n", Status); - return; + CPRINT("IopCreateDeviceNode() failed with status (%x)\n", Status); + return FALSE; } - ModuleObject.DllBase = NULL; - ModuleObject.SizeOfImage = 0; - ModuleObject.EntryPoint = RawFsDriverEntry; - - Status = IopInitializeDriverModule( - DeviceNode, - &ModuleObject, - &DeviceNode->ServiceName, - TRUE, - &DriverObject); - if (!NT_SUCCESS(Status)) + ModuleObject.DllBase = NULL; + ModuleObject.SizeOfImage = 0; + ModuleObject.EntryPoint = RawFsDriverEntry; + + Status = IopInitializeDriverModule(DeviceNode, + &ModuleObject, + &DeviceNode->ServiceName, + TRUE, + &DriverObject); + if (!NT_SUCCESS(Status)) { - IopFreeDeviceNode(DeviceNode); - CPRINT("IopInitializeDriver() failed with status (%x)\n", Status); - return; + IopFreeDeviceNode(DeviceNode); + CPRINT("IopInitializeDriver() failed with status (%x)\n", Status); + return FALSE; } - Status = IopInitializeDevice(DeviceNode, DriverObject); - if (!NT_SUCCESS(Status)) + Status = IopInitializeDevice(DeviceNode, DriverObject); + if (!NT_SUCCESS(Status)) { - IopFreeDeviceNode(DeviceNode); - CPRINT("IopInitializeDevice() failed with status (%x)\n", Status); - return; + IopFreeDeviceNode(DeviceNode); + CPRINT("IopInitializeDevice() failed with status (%x)\n", Status); + return FALSE; } - Status = IopStartDevice(DeviceNode); - if (!NT_SUCCESS(Status)) + Status = IopStartDevice(DeviceNode); + if (!NT_SUCCESS(Status)) { - IopFreeDeviceNode(DeviceNode); - CPRINT("IopInitializeDevice() failed with status (%x)\n", Status); - return; + IopFreeDeviceNode(DeviceNode); + CPRINT("IopInitializeDevice() failed with status (%x)\n", Status); + return FALSE; } - /* - * Initialize PnP root releations - */ - IoSynchronousInvalidateDeviceRelations( - IopRootDeviceNode->PhysicalDeviceObject, - BusRelations); - - /* Start boot logging */ - IopInitBootLog(BootLog); + /* + * Initialize PnP root releations + */ + IoSynchronousInvalidateDeviceRelations(IopRootDeviceNode-> + PhysicalDeviceObject, + BusRelations); /* Load boot start drivers */ IopInitializeBootDrivers(); /* Call back drivers that asked for */ IopReinitializeBootDrivers(); -} - -VOID -NTAPI -INIT_FUNCTION -IoInit3(VOID) -{ - NTSTATUS Status; - ANSI_STRING NtBootPath, RootString; /* Create ARC names for boot devices */ - IopCreateArcNames(KeLoaderBlock); + IopCreateArcNames(LoaderBlock); /* Read KDB Data */ KdbInit(); /* I/O is now setup for disk access, so phase 3 */ - KdInitSystem(3, KeLoaderBlock); + KdInitSystem(3, LoaderBlock); /* Load services for devices found by PnP manager */ IopInitializePnpServices(IopRootDeviceNode, FALSE); + /* Load the System DLL and its Entrypoints */ + if (!NT_SUCCESS(PsLocateSystemDll())) return FALSE; + /* Load system start drivers */ IopInitializeSystemDrivers(); @@ -502,7 +493,8 @@ IopReinitializeDrivers(); /* Convert SystemRoot from ARC to NT path */ - IopReassignSystemRoot(KeLoaderBlock, &NtBootPath); + Status = IopReassignSystemRoot(LoaderBlock, &NtBootPath); + if (!NT_SUCCESS(Status)) return FALSE; /* Set the ANSI_STRING for the root path */ RootString.MaximumLength = NtSystemRoot.MaximumLength / sizeof(WCHAR); @@ -513,17 +505,20 @@ /* Convert the path into the ANSI_STRING */ Status = RtlUnicodeStringToAnsiString(&RootString, &NtSystemRoot, FALSE); - if (!NT_SUCCESS(Status)) return; + if (!NT_SUCCESS(Status)) return FALSE; /* Assign drive letters */ - IoAssignDriveLetters(KeLoaderBlock, + IoAssignDriveLetters(LoaderBlock, &NtBootPath, RootString.Buffer, &RootString); /* Update system root */ Status = RtlAnsiStringToUnicodeString(&NtSystemRoot, &RootString, FALSE); - if (!NT_SUCCESS(Status)) return; + if (!NT_SUCCESS(Status)) return FALSE; + + /* Return success */ + return TRUE; } /* EOF */
17 years, 11 months
1
0
0
0
[ion] 24461: - Remove InitSharedUserDataPage since this entire function is not needed anymore due to the recent ARC improvements. - Call IoAssignDriverLetters with the proper parameters, and give it a chance to update the SystemRoot path (although our version doesn't yet do this).
by ion@svn.reactos.org
Author: ion Date: Mon Oct 9 02:50:26 2006 New Revision: 24461 URL:
http://svn.reactos.org/svn/reactos?rev=24461&view=rev
Log: - Remove InitSharedUserDataPage since this entire function is not needed anymore due to the recent ARC improvements. - Call IoAssignDriverLetters with the proper parameters, and give it a chance to update the SystemRoot path (although our version doesn't yet do this). Modified: trunk/reactos/ntoskrnl/ex/init.c trunk/reactos/ntoskrnl/io/iomgr/arcname.c trunk/reactos/ntoskrnl/io/iomgr/iomgr.c Modified: trunk/reactos/ntoskrnl/ex/init.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/ex/init.c?rev=244…
============================================================================== --- trunk/reactos/ntoskrnl/ex/init.c (original) +++ trunk/reactos/ntoskrnl/ex/init.c Mon Oct 9 02:50:26 2006 @@ -1,13 +1,13 @@ /* - * COPYRIGHT: See COPYING in the top level directory - * PROJECT: ReactOS kernel - * FILE: ntoskrnl/ex/init.c - * PURPOSE: Executive initalization - * - * PROGRAMMERS: Alex Ionescu (alex(a)relsoft.net) - Added ExpInitializeExecutive - * and optimized/cleaned it. - * Eric Kohl (ekohl(a)abo.rhein-zeitung.de) - */ +* PROJECT: ReactOS Kernel +* LICENSE: GPL - See COPYING in the top level directory +* FILE: ntoskrnl/ex/init.c +* PURPOSE: Executive Initialization Code +* PROGRAMMERS: Alex Ionescu (alex.ionescu(a)reactos.org) +* Eric Kohl (ekohl(a)rz-online.de) +*/ + +/* INCLUDES ******************************************************************/ #include <ntoskrnl.h> #define NDEBUG @@ -303,157 +303,6 @@ /* Copy the table into the system process and set this as the base */ RtlMoveMemory(SectionBase, ExpNlsTableBase, ExpNlsTableSize); ExpNlsTableBase = SectionBase; -} - -static -VOID -INIT_FUNCTION -InitSystemSharedUserPage (IN PLOADER_PARAMETER_BLOCK LoaderBlock) -{ - UNICODE_STRING ArcDeviceName; - UNICODE_STRING ArcName; - UNICODE_STRING BootPath; - UNICODE_STRING DriveDeviceName; - UNICODE_STRING DriveName; - WCHAR DriveNameBuffer[20]; - PWCHAR ArcNameBuffer; - NTSTATUS Status; - ULONG Length; - OBJECT_ATTRIBUTES ObjectAttributes; - HANDLE Handle; - ULONG i; - BOOLEAN BootDriveFound = FALSE; - - /* Set the Product Type */ - SharedUserData->NtProductType = NtProductWinNt; - SharedUserData->ProductTypeIsValid = TRUE; - - /* - * Retrieve the current dos system path - * (e.g.: C:\reactos) from the given arc path - * (e.g.: multi(0)disk(0)rdisk(0)partititon(1)\reactos) - * Format: "<arc_name>\<path> [options...]" - */ - - RtlCreateUnicodeStringFromAsciiz(&BootPath, LoaderBlock->NtBootPathName); - - /* Remove the trailing backslash */ - BootPath.Length -= sizeof(WCHAR); - BootPath.MaximumLength -= sizeof(WCHAR); - - /* Only ARC Name left - Build full ARC Name */ - ArcNameBuffer = ExAllocatePool (PagedPool, 256 * sizeof(WCHAR)); - swprintf (ArcNameBuffer, L"\\ArcName\\%S", LoaderBlock->ArcBootDeviceName); - RtlInitUnicodeString (&ArcName, ArcNameBuffer); - - /* Allocate ARC Device Name string */ - ArcDeviceName.Length = 0; - ArcDeviceName.MaximumLength = 256 * sizeof(WCHAR); - ArcDeviceName.Buffer = ExAllocatePool (PagedPool, 256 * sizeof(WCHAR)); - - /* Open the Symbolic Link */ - InitializeObjectAttributes(&ObjectAttributes, - &ArcName, - OBJ_OPENLINK, - NULL, - NULL); - Status = NtOpenSymbolicLinkObject(&Handle, - SYMBOLIC_LINK_ALL_ACCESS, - &ObjectAttributes); - - /* Free the String */ - ExFreePool(ArcName.Buffer); - - /* Check for Success */ - if (!NT_SUCCESS(Status)) { - - /* Free the Strings */ - RtlFreeUnicodeString(&BootPath); - ExFreePool(ArcDeviceName.Buffer); - CPRINT("NtOpenSymbolicLinkObject() failed (Status %x)\n", Status); - KEBUGCHECK(0); - } - - /* Query the Link */ - Status = NtQuerySymbolicLinkObject(Handle, - &ArcDeviceName, - &Length); - NtClose (Handle); - - /* Check for Success */ - if (!NT_SUCCESS(Status)) { - - /* Free the Strings */ - RtlFreeUnicodeString(&BootPath); - ExFreePool(ArcDeviceName.Buffer); - CPRINT("NtQuerySymbolicLinkObject() failed (Status %x)\n", Status); - KEBUGCHECK(0); - } - - /* Allocate Device Name string */ - DriveDeviceName.Length = 0; - DriveDeviceName.MaximumLength = 256 * sizeof(WCHAR); - DriveDeviceName.Buffer = ExAllocatePool (PagedPool, 256 * sizeof(WCHAR)); - - /* Loop Drives */ - for (i = 0; i < 26; i++) { - - /* Setup the String */ - swprintf (DriveNameBuffer, L"\\??\\%C:", 'A' + i); - RtlInitUnicodeString(&DriveName, - DriveNameBuffer); - - /* Open the Symbolic Link */ - InitializeObjectAttributes(&ObjectAttributes, - &DriveName, - OBJ_OPENLINK, - NULL, - NULL); - Status = NtOpenSymbolicLinkObject(&Handle, - SYMBOLIC_LINK_ALL_ACCESS, - &ObjectAttributes); - - /* If it failed, skip to the next drive */ - if (!NT_SUCCESS(Status)) { - DPRINT("Failed to open link %wZ\n", &DriveName); - continue; - } - - /* Query it */ - Status = NtQuerySymbolicLinkObject(Handle, - &DriveDeviceName, - &Length); - - /* If it failed, skip to the next drive */ - if (!NT_SUCCESS(Status)) { - DPRINT("Failed to query link %wZ\n", &DriveName); - continue; - } - DPRINT("Opened link: %wZ ==> %wZ\n", &DriveName, &DriveDeviceName); - - /* See if we've found the boot drive */ - if (!RtlCompareUnicodeString (&ArcDeviceName, &DriveDeviceName, FALSE)) { - - DPRINT("DOS Boot path: %c:%wZ\n", 'A' + i, &BootPath); - swprintf(SharedUserData->NtSystemRoot, L"%C:%wZ", 'A' + i, &BootPath); - BootDriveFound = TRUE; - } - - /* Close this Link */ - NtClose (Handle); - } - - /* Free all the Strings we have in memory */ - RtlFreeUnicodeString (&BootPath); - ExFreePool(DriveDeviceName.Buffer); - ExFreePool(ArcDeviceName.Buffer); - - /* Make sure we found the Boot Drive */ - if (BootDriveFound == FALSE) { - - DbgPrint("No system drive found!\n"); - KEBUGCHECK (NO_BOOT_DEVICE); - } } VOID @@ -770,7 +619,7 @@ /* Fail if this is XP */ if (Extension->MinorVersion < 2) return FALSE; - /* This is 2003 or newer, aprove it */ + /* This is 2003 or newer, approve it */ return TRUE; } @@ -1092,9 +941,6 @@ /* Load the System DLL and its Entrypoints */ PsLocateSystemDll(); - /* Initialize shared user page. Set dos system path, dos device map, etc. */ - InitSystemSharedUserPage(KeLoaderBlock); - /* Initialize VDM support */ KeI386VdmInitialize(); Modified: trunk/reactos/ntoskrnl/io/iomgr/arcname.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/io/iomgr/arcname.…
============================================================================== --- trunk/reactos/ntoskrnl/io/iomgr/arcname.c (original) +++ trunk/reactos/ntoskrnl/io/iomgr/arcname.c Mon Oct 9 02:50:26 2006 @@ -1,14 +1,13 @@ -/* $Id$ - * - * COPYRIGHT: See COPYING in the top level directory - * PROJECT: ReactOS kernel - * FILE: ntoskrnl/io/arcname.c - * PURPOSE: Creates ARC names for boot devices - * - * PROGRAMMERS: Eric Kohl (ekohl(a)rz-online.de) - */ - -/* INCLUDES *****************************************************************/ +/* +* PROJECT: ReactOS Kernel +* LICENSE: GPL - See COPYING in the top level directory +* FILE: ntoskrnl/io/iomgr/arcname.c +* PURPOSE: ARC Path Initialization Functions +* PROGRAMMERS: Alex Ionescu (alex.ionescu(a)reactos.org) +* Eric Kohl (ekohl(a)rz-online.de) +*/ + +/* INCLUDES ******************************************************************/ #include <ntoskrnl.h> #define NDEBUG @@ -19,7 +18,7 @@ UNICODE_STRING IoArcHalDeviceName, IoArcBootDeviceName; PCHAR IoLoaderArcBootDeviceName; -/* FUNCTIONS ****************************************************************/ +/* FUNCTIONS *****************************************************************/ BOOLEAN INIT_FUNCTION Modified: trunk/reactos/ntoskrnl/io/iomgr/iomgr.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/io/iomgr/iomgr.c?…
============================================================================== --- trunk/reactos/ntoskrnl/io/iomgr/iomgr.c (original) +++ trunk/reactos/ntoskrnl/io/iomgr/iomgr.c Mon Oct 9 02:50:26 2006 @@ -29,6 +29,7 @@ POBJECT_TYPE IoDeviceObjectType = NULL; POBJECT_TYPE IoFileObjectType = NULL; extern POBJECT_TYPE IoControllerObjectType; +extern UNICODE_STRING NtSystemRoot; BOOLEAN IoCountOperations; ULONG IoReadOperationCount = 0; LARGE_INTEGER IoReadTransferCount = {{0, 0}}; @@ -476,7 +477,8 @@ INIT_FUNCTION IoInit3(VOID) { - ANSI_STRING NtBootPath; + NTSTATUS Status; + ANSI_STRING NtBootPath, RootString; /* Create ARC names for boot devices */ IopCreateArcNames(KeLoaderBlock); @@ -502,11 +504,26 @@ /* Convert SystemRoot from ARC to NT path */ IopReassignSystemRoot(KeLoaderBlock, &NtBootPath); + /* Set the ANSI_STRING for the root path */ + RootString.MaximumLength = NtSystemRoot.MaximumLength / sizeof(WCHAR); + RootString.Length = 0; + RootString.Buffer = ExAllocatePoolWithTag(PagedPool, + RootString.MaximumLength, + TAG_IO); + + /* Convert the path into the ANSI_STRING */ + Status = RtlUnicodeStringToAnsiString(&RootString, &NtSystemRoot, FALSE); + if (!NT_SUCCESS(Status)) return; + /* Assign drive letters */ IoAssignDriveLetters(KeLoaderBlock, - NULL, - NULL, - NULL); + &NtBootPath, + RootString.Buffer, + &RootString); + + /* Update system root */ + Status = RtlAnsiStringToUnicodeString(&NtSystemRoot, &RootString, FALSE); + if (!NT_SUCCESS(Status)) return; } /* EOF */
17 years, 11 months
1
0
0
0
[cwittich] 24460: fix formatting
by cwittich@svn.reactos.org
Author: cwittich Date: Mon Oct 9 01:51:34 2006 New Revision: 24460 URL:
http://svn.reactos.org/svn/reactos?rev=24460&view=rev
Log: fix formatting Modified: trunk/tools/buildbot/buildbot/buildbot/status/words.py Modified: trunk/tools/buildbot/buildbot/buildbot/status/words.py URL:
http://svn.reactos.org/svn/reactos/trunk/tools/buildbot/buildbot/buildbot/s…
============================================================================== --- trunk/tools/buildbot/buildbot/buildbot/status/words.py (original) +++ trunk/tools/buildbot/buildbot/buildbot/status/words.py Mon Oct 9 01:51:34 2006 @@ -82,44 +82,44 @@ bot retrieves all status information """ self.nickname = nickname - self.wantnick = nickname + self.wantnick = nickname self.channels = channels self.password = password self.status = status self.categories = categories self.counter = 0 self.hasQuit = 0 - self.pingSelf = 1 - self.hasReconnected = 0 - self.timeout = 60 + self.pingSelf = 1 + self.hasReconnected = 0 + self.timeout = 60 def signedOn(self): if self.password: - if self.nickname != self.wantnick: - self.msg("Nickserv", "GHOST " + self.wantnick + " " + self.password) - self.setNick(self.wantnick) + if self.nickname != self.wantnick: + self.msg("Nickserv", "GHOST " + self.wantnick + " " + self.password) + self.setNick(self.wantnick) self.msg("Nickserv", "IDENTIFY " + self.password) for c in self.channels: self.join(c) - reactor.callLater(self.timeout, self.checkPing) - self.lastping = time.time() + reactor.callLater(self.timeout, self.checkPing) + self.lastping = time.time() def checkPing(self): - if time.time() - self.lastping > (self.timeout * 2): - self.pingSelf = 1 - log.msg("Dropping due to pingout") - self.shutdown() + if time.time() - self.lastping > (self.timeout * 2): + self.pingSelf = 1 + log.msg("Dropping due to pingout") + self.shutdown() if self.pingSelf: - self.ping(self.nickname) - self.monitor = reactor.callLater(self.timeout, self.checkPing) + self.ping(self.nickname) + self.monitor = reactor.callLater(self.timeout, self.checkPing) def end(self): - self.pingSelf = 0 + self.pingSelf = 0 def shutdown(self): - self.sendLine("QUIT") - self.end() + self.sendLine("QUIT") + self.end() def joined(self, channel): log.msg("I have joined", channel) - if self.hasReconnected: - self.msg(channel, "Hello again") + if self.hasReconnected: + self.msg(channel, "Hello again") def left(self, channel): log.msg("I have left", channel) def kickedFrom(self, channel, kicker, message): @@ -228,18 +228,18 @@ reactor.callLater(when, self.reply, reply, r) when += 2.5 def command_PING(self, user, reply, person): - self.reply(reply, "ping to " + person) - self.ping(person) + self.reply(reply, "ping to " + person) + self.ping(person) def pong(self, user, secs): - self.lastping = time.time() + self.lastping = time.time() log.msg("Pong from " + user + " took " + str(secs)) # def command_JOIN(self, user, reply, chan): -# self.reply(reply, "joining " + chan) -# self.join(chan) +# self.reply(reply, "joining " + chan) +# self.join(chan) # def command_PART(self, user, reply, chan): -# self.reply(reply, "parting " + chan) -# self.part(chan) +# self.reply(reply, "parting " + chan) +# self.part(chan) def command_HELLO(self, user, reply, args): self.reply(reply, "yes?") @@ -266,7 +266,7 @@ command_LIST.usage = "list builders - List configured builders" def command_DEAD(self, user, reply, args): - self.pingSelf = 0 + self.pingSelf = 0 def command_STATUS(self, user, reply, args): args = args.split() @@ -506,12 +506,12 @@ self.reply(reply, "What you say!") # def command_DISCON(self, user, reply, args): -# log.msg("Disconnecting on request: " + str(args)) -# self.shutdown() +# log.msg("Disconnecting on request: " + str(args)) +# self.shutdown() def connectionLost(self, reason = "foo"): - log.msg("Connection lost: " + str(reason)) - self.shutdown() + log.msg("Connection lost: " + str(reason)) + self.shutdown() def action(self, user, channel, data): #log.msg("action: %s,%s,%s" % (user, channel, data)) @@ -559,7 +559,7 @@ self.password = password self.channels = channels self.categories = categories - self.hasReconnected = False + self.hasReconnected = False def __getstate__(self): d = self.__dict__.copy() @@ -571,9 +571,9 @@ self.hasReconnected = True if self.p: self.p.quit("buildmaster reconfigured: bot disconnecting") - self.p.end() - self.factory.shutdown() - del self.factory + self.p.end() + self.factory.shutdown() + del self.factory def buildProtocol(self, address): p = self.protocol(self.nickname, self.password, @@ -582,7 +582,7 @@ p.factory = self p.status = self.status p.control = self.control - p.hasReconnected = self.hasReconnected + p.hasReconnected = self.hasReconnected self.p = p return p
17 years, 11 months
1
0
0
0
[cwittich] 24459: arty's IRC bot changes
by cwittich@svn.reactos.org
Author: cwittich Date: Mon Oct 9 01:41:07 2006 New Revision: 24459 URL:
http://svn.reactos.org/svn/reactos?rev=24459&view=rev
Log: arty's IRC bot changes Modified: trunk/tools/buildbot/buildbot/buildbot/status/words.py Modified: trunk/tools/buildbot/buildbot/buildbot/status/words.py URL:
http://svn.reactos.org/svn/reactos/trunk/tools/buildbot/buildbot/buildbot/s…
============================================================================== --- trunk/tools/buildbot/buildbot/buildbot/status/words.py (original) +++ trunk/tools/buildbot/buildbot/buildbot/status/words.py Mon Oct 9 01:41:07 2006 @@ -2,7 +2,7 @@ # code to deliver build status through twisted.words (instant messaging # protocols: irc, etc) - +import time import traceback, StringIO, re, shlex from twisted.internet import protocol, reactor @@ -82,20 +82,44 @@ bot retrieves all status information """ self.nickname = nickname + self.wantnick = nickname self.channels = channels self.password = password self.status = status self.categories = categories self.counter = 0 self.hasQuit = 0 + self.pingSelf = 1 + self.hasReconnected = 0 + self.timeout = 60 def signedOn(self): if self.password: + if self.nickname != self.wantnick: + self.msg("Nickserv", "GHOST " + self.wantnick + " " + self.password) + self.setNick(self.wantnick) self.msg("Nickserv", "IDENTIFY " + self.password) for c in self.channels: self.join(c) + reactor.callLater(self.timeout, self.checkPing) + self.lastping = time.time() + def checkPing(self): + if time.time() - self.lastping > (self.timeout * 2): + self.pingSelf = 1 + log.msg("Dropping due to pingout") + self.shutdown() + if self.pingSelf: + self.ping(self.nickname) + self.monitor = reactor.callLater(self.timeout, self.checkPing) + def end(self): + self.pingSelf = 0 + def shutdown(self): + self.sendLine("QUIT") + self.end() def joined(self, channel): log.msg("I have joined", channel) + if self.hasReconnected: + self.msg(channel, "Hello again") def left(self, channel): log.msg("I have left", channel) def kickedFrom(self, channel, kicker, message): @@ -203,6 +227,19 @@ for r in response: reactor.callLater(when, self.reply, reply, r) when += 2.5 + def command_PING(self, user, reply, person): + self.reply(reply, "ping to " + person) + self.ping(person) + def pong(self, user, secs): + self.lastping = time.time() + log.msg("Pong from " + user + " took " + str(secs)) +# def command_JOIN(self, user, reply, chan): +# self.reply(reply, "joining " + chan) +# self.join(chan) + +# def command_PART(self, user, reply, chan): +# self.reply(reply, "parting " + chan) +# self.part(chan) def command_HELLO(self, user, reply, args): self.reply(reply, "yes?") @@ -227,6 +264,9 @@ self.reply(reply, str) return command_LIST.usage = "list builders - List configured builders" + + def command_DEAD(self, user, reply, args): + self.pingSelf = 0 def command_STATUS(self, user, reply, args): args = args.split() @@ -464,6 +504,14 @@ def command_EXCITED(self, user, reply, args): # like 'buildbot: destroy the sun!' self.reply(reply, "What you say!") + +# def command_DISCON(self, user, reply, args): +# log.msg("Disconnecting on request: " + str(args)) +# self.shutdown() + + def connectionLost(self, reason = "foo"): + log.msg("Connection lost: " + str(reason)) + self.shutdown() def action(self, user, channel, data): #log.msg("action: %s,%s,%s" % (user, channel, data)) @@ -511,6 +559,7 @@ self.password = password self.channels = channels self.categories = categories + self.hasReconnected = False def __getstate__(self): d = self.__dict__.copy() @@ -519,8 +568,12 @@ def shutdown(self): self.shuttingDown = True + self.hasReconnected = True if self.p: self.p.quit("buildmaster reconfigured: bot disconnecting") + self.p.end() + self.factory.shutdown() + del self.factory def buildProtocol(self, address): p = self.protocol(self.nickname, self.password, @@ -529,6 +582,7 @@ p.factory = self p.status = self.status p.control = self.control + p.hasReconnected = self.hasReconnected self.p = p return p
17 years, 11 months
1
0
0
0
[ion] 24458: - Finalize ARC Boot changes: * Rename IoCreateArcNames to IopCreateArcNames and set it to NTAPI, as well as pass the loader block as a parameter. * Reduce buffers to 128 bytes, since ARC Paths don't get longer then that. * Optimize stack usage by using a single ANSI_STRING instead of 3 or 4. * Optimize stack usage by using a single ansi buffer, not 2 or more.
by ion@svn.reactos.org
Author: ion Date: Mon Oct 9 01:38:45 2006 New Revision: 24458 URL:
http://svn.reactos.org/svn/reactos?rev=24458&view=rev
Log: - Finalize ARC Boot changes: * Rename IoCreateArcNames to IopCreateArcNames and set it to NTAPI, as well as pass the loader block as a parameter. * Reduce buffers to 128 bytes, since ARC Paths don't get longer then that. * Optimize stack usage by using a single ANSI_STRING instead of 3 or 4. * Optimize stack usage by using a single ansi buffer, not 2 or more. Modified: trunk/reactos/ntoskrnl/include/internal/io.h trunk/reactos/ntoskrnl/io/iomgr/arcname.c trunk/reactos/ntoskrnl/io/iomgr/iomgr.c Modified: trunk/reactos/ntoskrnl/include/internal/io.h URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/include/internal/…
============================================================================== --- trunk/reactos/ntoskrnl/include/internal/io.h (original) +++ trunk/reactos/ntoskrnl/include/internal/io.h Mon Oct 9 01:38:45 2006 @@ -563,8 +563,9 @@ // Initialization Routines // NTSTATUS -IoCreateArcNames( - VOID +NTAPI +IopCreateArcNames( + IN PLOADER_PARAMETER_BLOCK LoaderBlock ); NTSTATUS Modified: trunk/reactos/ntoskrnl/io/iomgr/arcname.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/io/iomgr/arcname.…
============================================================================== --- trunk/reactos/ntoskrnl/io/iomgr/arcname.c (original) +++ trunk/reactos/ntoskrnl/io/iomgr/arcname.c Mon Oct 9 01:38:45 2006 @@ -30,7 +30,7 @@ OBJECT_ATTRIBUTES ObjectAttributes; ANSI_STRING InstallName; UNICODE_STRING DeviceName; - CHAR Buffer[MAX_PATH]; + CHAR Buffer[128]; FILE_BASIC_INFORMATION FileInfo; NTSTATUS Status; PCHAR p, q; @@ -117,7 +117,7 @@ { ULONG j, Checksum; ANSI_STRING TempString; - CHAR Buffer[256]; + CHAR Buffer[128]; UNICODE_STRING DeviceName; NTSTATUS Status; PDEVICE_OBJECT DeviceObject; @@ -257,8 +257,8 @@ IopAssignArcNamesToCdrom(IN PULONG Buffer, IN ULONG DiskNumber) { - CHAR ArcBuffer[256]; - ANSI_STRING TempString, ArcNameString; + CHAR ArcBuffer[128]; + ANSI_STRING TempString; UNICODE_STRING DeviceName, ArcName; NTSTATUS Status; LARGE_INTEGER PartitionOffset; @@ -345,8 +345,8 @@ sprintf(ArcBuffer, "\\ArcName\\%s", KeLoaderBlock->ArcBootDeviceName); /* Convert it to Unicode */ - RtlInitAnsiString(&ArcNameString, ArcBuffer); - Status = RtlAnsiStringToUnicodeString(&ArcName, &ArcNameString, TRUE); + RtlInitAnsiString(&TempString, ArcBuffer); + Status = RtlAnsiStringToUnicodeString(&ArcName, &TempString, TRUE); if (!NT_SUCCESS(Status)) return FALSE; /* Create the symbolic link and free the strings */ @@ -364,13 +364,13 @@ NTSTATUS INIT_FUNCTION -IoCreateArcNames(VOID) +NTAPI +IopCreateArcNames(IN PLOADER_PARAMETER_BLOCK LoaderBlock) { - PLOADER_PARAMETER_BLOCK LoaderBlock = KeLoaderBlock; PCONFIGURATION_INFORMATION ConfigInfo = IoGetConfigurationInformation(); PARC_DISK_INFORMATION ArcDiskInfo = LoaderBlock->ArcDiskInformation; - CHAR ArcBuffer[256], Buffer[256]; - ANSI_STRING ArcBootString, ArcSystemString, ArcString, TempString, BootString; + CHAR Buffer[128]; + ANSI_STRING ArcBootString, ArcSystemString, ArcString; UNICODE_STRING ArcName, BootPath, DeviceName; BOOLEAN SingleDisk; ULONG i, j, Length; @@ -387,13 +387,13 @@ (&ArcDiskInfo->DiskSignatureListHead); /* Create the global HAL partition name */ - sprintf(ArcBuffer, "\\ArcName\\%s", LoaderBlock->ArcHalDeviceName); - RtlInitAnsiString(&ArcString, ArcBuffer); + sprintf(Buffer, "\\ArcName\\%s", LoaderBlock->ArcHalDeviceName); + RtlInitAnsiString(&ArcString, Buffer); RtlAnsiStringToUnicodeString(&IoArcHalDeviceName, &ArcString, TRUE); /* Create the global system partition name */ - sprintf(ArcBuffer, "\\ArcName\\%s", LoaderBlock->ArcBootDeviceName); - RtlInitAnsiString(&ArcString, ArcBuffer); + sprintf(Buffer, "\\ArcName\\%s", LoaderBlock->ArcBootDeviceName); + RtlInitAnsiString(&ArcString, Buffer); RtlAnsiStringToUnicodeString(&IoArcBootDeviceName, &ArcString, TRUE); /* Allocate memory for the string */ @@ -457,16 +457,20 @@ sprintf(Buffer, "\\Device\\Harddisk%lu\\Partition0", i); /* Convert it to Unicode */ - RtlInitAnsiString(&TempString, Buffer); - Status = RtlAnsiStringToUnicodeString(&DeviceName, &TempString, TRUE); + RtlInitAnsiString(&ArcString, Buffer); + Status = RtlAnsiStringToUnicodeString(&DeviceName, + &ArcString, + TRUE); if (!NT_SUCCESS(Status)) continue; /* Build the ARC Device Name */ - sprintf(ArcBuffer, "\\ArcName\\%s", ArcDiskEntry->ArcName); + sprintf(Buffer, "\\ArcName\\%s", ArcDiskEntry->ArcName); /* Convert it to Unicode */ - RtlInitAnsiString(&ArcString, ArcBuffer); - Status = RtlAnsiStringToUnicodeString(&ArcName, &ArcString, TRUE); + RtlInitAnsiString(&ArcString, Buffer); + Status = RtlAnsiStringToUnicodeString(&ArcName, + &ArcString, + TRUE); if (!NT_SUCCESS(Status)) continue; /* Create the symbolic link and free the strings */ @@ -478,16 +482,24 @@ for (j = 0; j < PartitionCount; j++) { /* Build the partition device name */ - sprintf(Buffer, "\\Device\\Harddisk%lu\\Partition%lu", i, j + 1); + sprintf(Buffer, + "\\Device\\Harddisk%lu\\Partition%lu", + i, + j + 1); /* Convert it to Unicode */ - RtlInitAnsiString(&TempString, Buffer); - Status = RtlAnsiStringToUnicodeString(&DeviceName, &TempString, TRUE); + RtlInitAnsiString(&ArcString, Buffer); + Status = RtlAnsiStringToUnicodeString(&DeviceName, + &ArcString, + TRUE); if (!NT_SUCCESS(Status)) continue; /* Build the partial ARC name for this partition */ - sprintf(ArcBuffer, "%spartition(%lu)", ArcDiskEntry->ArcName, j + 1); - RtlInitAnsiString(&ArcString, ArcBuffer); + sprintf(Buffer, + "%spartition(%lu)", + ArcDiskEntry->ArcName, + j + 1); + RtlInitAnsiString(&ArcString, Buffer); /* Check if this is the boot device */ if (RtlEqualString(&ArcString, &ArcBootString, TRUE)) @@ -500,8 +512,11 @@ if (RtlEqualString(&ArcString, &ArcSystemString, TRUE)) { /* It is, create a Unicode string for it */ - RtlInitAnsiString(&BootString, LoaderBlock->NtHalPathName); - Status = RtlAnsiStringToUnicodeString(&BootPath, &BootString, TRUE); + RtlInitAnsiString(&ArcString, + LoaderBlock->NtHalPathName); + Status = RtlAnsiStringToUnicodeString(&BootPath, + &ArcString, + TRUE); if (NT_SUCCESS(Status)) { /* FIXME: Save in registry */ @@ -512,11 +527,16 @@ } /* Build the full ARC name */ - sprintf(Buffer, "\\ArcName\\%spartition(%lu)", ArcDiskEntry->ArcName, j + 1); + sprintf(Buffer, + "\\ArcName\\%spartition(%lu)", + ArcDiskEntry->ArcName, + j + 1); /* Convert it to Unicode */ RtlInitAnsiString(&ArcString, Buffer); - Status = RtlAnsiStringToUnicodeString(&ArcName, &ArcString, TRUE); + Status = RtlAnsiStringToUnicodeString(&ArcName, + &ArcString, + TRUE); if (!NT_SUCCESS(Status)) continue; /* Create the symbolic link and free the strings */ Modified: trunk/reactos/ntoskrnl/io/iomgr/iomgr.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/io/iomgr/iomgr.c?…
============================================================================== --- trunk/reactos/ntoskrnl/io/iomgr/iomgr.c (original) +++ trunk/reactos/ntoskrnl/io/iomgr/iomgr.c Mon Oct 9 01:38:45 2006 @@ -472,14 +472,14 @@ } VOID -STDCALL +NTAPI INIT_FUNCTION IoInit3(VOID) { ANSI_STRING NtBootPath; /* Create ARC names for boot devices */ - IoCreateArcNames(); + IopCreateArcNames(KeLoaderBlock); /* Read KDB Data */ KdbInit();
17 years, 11 months
1
0
0
0
[ion] 24457: - Optimize IopApplyRosCdromArcHack by not searching for the second copy of ntoskrnl if we already found the first. - Also optimize stack usage by only using an ANSI buffer instead of having another Unicode buffer and unicode strings. Saves 530 bytes of stack.
by ion@svn.reactos.org
Author: ion Date: Mon Oct 9 01:16:20 2006 New Revision: 24457 URL:
http://svn.reactos.org/svn/reactos?rev=24457&view=rev
Log: - Optimize IopApplyRosCdromArcHack by not searching for the second copy of ntoskrnl if we already found the first. - Also optimize stack usage by only using an ANSI buffer instead of having another Unicode buffer and unicode strings. Saves 530 bytes of stack. Modified: trunk/reactos/ntoskrnl/io/iomgr/arcname.c Modified: trunk/reactos/ntoskrnl/io/iomgr/arcname.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/io/iomgr/arcname.…
============================================================================== --- trunk/reactos/ntoskrnl/io/iomgr/arcname.c (original) +++ trunk/reactos/ntoskrnl/io/iomgr/arcname.c Mon Oct 9 01:16:20 2006 @@ -28,9 +28,9 @@ { ULONG DeviceNumber = -1; OBJECT_ATTRIBUTES ObjectAttributes; + ANSI_STRING InstallName; UNICODE_STRING DeviceName; - WCHAR Buffer[MAX_PATH]; - CHAR AnsiBuffer[MAX_PATH]; + CHAR Buffer[MAX_PATH]; FILE_BASIC_INFORMATION FileInfo; NTSTATUS Status; PCHAR p, q; @@ -39,29 +39,53 @@ p = strstr(KeLoaderBlock->ArcBootDeviceName, "cdrom"); if (p) { + /* Build installer name */ + sprintf(Buffer, "\\Device\\CdRom%lu\\reactos\\ntoskrnl.exe", i); + RtlInitAnsiString(&InstallName, Buffer); + Status = RtlAnsiStringToUnicodeString(&DeviceName, &InstallName, TRUE); + if (!NT_SUCCESS(Status)) return FALSE; + /* Try to find the installer */ - swprintf(Buffer, L"\\Device\\CdRom%lu\\reactos\\ntoskrnl.exe", i); - RtlInitUnicodeString(&DeviceName, Buffer); InitializeObjectAttributes(&ObjectAttributes, &DeviceName, 0, NULL, NULL); Status = ZwQueryAttributesFile(&ObjectAttributes, &FileInfo); - if (NT_SUCCESS(Status)) DeviceNumber = i; - - /* Try to find live CD boot */ - swprintf(Buffer, - L"\\Device\\CdRom%lu\\reactos\\system32\\ntoskrnl.exe", - i); - RtlInitUnicodeString(&DeviceName, Buffer); - InitializeObjectAttributes(&ObjectAttributes, - &DeviceName, - 0, - NULL, - NULL); - Status = ZwQueryAttributesFile(&ObjectAttributes, &FileInfo); - if (NT_SUCCESS(Status)) DeviceNumber = i; + + /* Free the string */ + RtlFreeUnicodeString(&DeviceName); + + /* Check if we found the file */ + if (NT_SUCCESS(Status)) + { + /* We did, save the device number */ + DeviceNumber = i; + } + else + { + /* Build live CD kernel name */ + sprintf(Buffer, + "\\Device\\CdRom%lu\\reactos\\system32\\ntoskrnl.exe", + i); + RtlInitAnsiString(&InstallName, Buffer); + Status = RtlAnsiStringToUnicodeString(&DeviceName, + &InstallName, + TRUE); + if (!NT_SUCCESS(Status)) return FALSE; + + /* Try to find it */ + InitializeObjectAttributes(&ObjectAttributes, + &DeviceName, + 0, + NULL, + NULL); + Status = ZwQueryAttributesFile(&ObjectAttributes, &FileInfo); + if (NT_SUCCESS(Status)) DeviceNumber = i; + + /* Free the string */ + RtlFreeUnicodeString(&DeviceName); + } /* Build the name */ sprintf(p, "cdrom(%lu)", DeviceNumber); @@ -71,9 +95,9 @@ if (q) { q++; - strcpy(AnsiBuffer, q); + strcpy(Buffer, q); sprintf(p, "cdrom(%lu)", DeviceNumber); - strcat(p, AnsiBuffer); + strcat(p, Buffer); } }
17 years, 11 months
1
0
0
0
[ion] 24456: - Part 2.5 of ARC Boot changes. Re-factor IoCreateArcNames not to use a list-entry of detected disk from pool that gets looped and de-referenced, but instead use a simple loop which calls a function that gets disk information one-by-one (IopGetDiskInformation), so that it's used on the spot instead of allocated, linked, and retrieved later. - Inline IopAssignArcNamesToDisk to reduce some stack size abuse and too much parameter shuffling. - Stack use is still very inefficient, will f
by ion@svn.reactos.org
Author: ion Date: Mon Oct 9 01:09:00 2006 New Revision: 24456 URL:
http://svn.reactos.org/svn/reactos?rev=24456&view=rev
Log: - Part 2.5 of ARC Boot changes. Re-factor IoCreateArcNames not to use a list-entry of detected disk from pool that gets looped and de-referenced, but instead use a simple loop which calls a function that gets disk information one-by-one (IopGetDiskInformation), so that it's used on the spot instead of allocated, linked, and retrieved later. - Inline IopAssignArcNamesToDisk to reduce some stack size abuse and too much parameter shuffling. - Stack use is still very inefficient, will fix next. Modified: trunk/reactos/ntoskrnl/io/iomgr/arcname.c Modified: trunk/reactos/ntoskrnl/io/iomgr/arcname.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/io/iomgr/arcname.…
============================================================================== --- trunk/reactos/ntoskrnl/io/iomgr/arcname.c (original) +++ trunk/reactos/ntoskrnl/io/iomgr/arcname.c Mon Oct 9 01:09:00 2006 @@ -8,12 +8,16 @@ * PROGRAMMERS: Eric Kohl (ekohl(a)rz-online.de) */ - /* INCLUDES *****************************************************************/ #include <ntoskrnl.h> #define NDEBUG -#include <internal/debug.h> +#include <debug.h> + +/* GLOBALS *******************************************************************/ + +UNICODE_STRING IoArcHalDeviceName, IoArcBootDeviceName; +PCHAR IoLoaderArcBootDeviceName; /* FUNCTIONS ****************************************************************/ @@ -78,12 +82,16 @@ return FALSE; } -VOID +BOOLEAN INIT_FUNCTION NTAPI -IopEnumerateDisks(IN PLIST_ENTRY ListHead) +IopGetDiskInformation(IN ULONG i, + OUT PULONG CheckSum, + OUT PULONG Signature, + OUT PULONG PartitionCount, + OUT PDEVICE_OBJECT *DiskDeviceObject) { - ULONG i, j; + ULONG j, Checksum; ANSI_STRING TempString; CHAR Buffer[256]; UNICODE_STRING DeviceName; @@ -97,237 +105,126 @@ IO_STATUS_BLOCK StatusBlock; LARGE_INTEGER PartitionOffset; PPARTITION_SECTOR PartitionBuffer; - PDISKENTRY DiskEntry; - - /* Loop every detected disk */ - for (i = 0; i < IoGetConfigurationInformation()->DiskCount; i++) - { - /* Build the name */ - sprintf(Buffer, "\\Device\\Harddisk%lu\\Partition0", i); - - /* Convert it to Unicode */ - RtlInitAnsiString(&TempString, Buffer); - Status = RtlAnsiStringToUnicodeString(&DeviceName, &TempString, TRUE); - if (!NT_SUCCESS(Status)) continue; - - /* Get the device pointer */ - Status = IoGetDeviceObjectPointer(&DeviceName, - FILE_READ_DATA, - &FileObject, - &DeviceObject); - - /* Free the string */ - RtlFreeUnicodeString(&DeviceName); - - /* Move on if we failed */ - if (!NT_SUCCESS(Status)) continue; - - /* Allocate the ROS disk Entry */ - DiskEntry = ExAllocatePoolWithTag(PagedPool, sizeof(DISKENTRY), TAG_IO); - DiskEntry->DiskNumber = i; - DiskEntry->DeviceObject = DeviceObject; - - /* Build an IRP to determine the sector size */ - KeInitializeEvent(&Event, NotificationEvent, FALSE); - Irp = IoBuildDeviceIoControlRequest(IOCTL_DISK_GET_DRIVE_GEOMETRY, - DeviceObject, - NULL, - 0, - &DiskGeometry, - sizeof(DISK_GEOMETRY), - FALSE, - &Event, - &StatusBlock); - if (!Irp) - { - /* Try again */ - ObDereferenceObject(FileObject); - continue; - } - - /* Call the driver and check if we have to wait on it */ - Status = IoCallDriver(DeviceObject, Irp); - if (Status == STATUS_PENDING) - { - /* Wait on the driver */ - KeWaitForSingleObject(&Event, Executive, KernelMode, FALSE, NULL); - Status = StatusBlock.Status; - } - - /* Check if we failed */ - if (!NT_SUCCESS(Status)) - { - /* Try again */ - ObDereferenceObject(FileObject); - continue; - } - - /* Read the partition table */ - Status = IoReadPartitionTable(DeviceObject, - DiskGeometry.BytesPerSector, - TRUE, - &DriveLayout); - - /* Dereference the file object */ + + /* Build the name */ + sprintf(Buffer, "\\Device\\Harddisk%lu\\Partition0", i); + + /* Convert it to Unicode */ + RtlInitAnsiString(&TempString, Buffer); + Status = RtlAnsiStringToUnicodeString(&DeviceName, &TempString, TRUE); + if (!NT_SUCCESS(Status)) return FALSE; + + /* Get the device pointer */ + Status = IoGetDeviceObjectPointer(&DeviceName, + FILE_READ_DATA, + &FileObject, + &DeviceObject); + *DiskDeviceObject = DeviceObject; + + /* Free the string */ + RtlFreeUnicodeString(&DeviceName); + + /* Move on if we failed */ + if (!NT_SUCCESS(Status)) return FALSE; + + /* Build an IRP to determine the sector size */ + KeInitializeEvent(&Event, NotificationEvent, FALSE); + Irp = IoBuildDeviceIoControlRequest(IOCTL_DISK_GET_DRIVE_GEOMETRY, + DeviceObject, + NULL, + 0, + &DiskGeometry, + sizeof(DISK_GEOMETRY), + FALSE, + &Event, + &StatusBlock); + if (!Irp) + { + /* Try again */ ObDereferenceObject(FileObject); - if (!NT_SUCCESS(Status)) continue; - - /* Set the offset to 0 */ - PartitionOffset.QuadPart = 0; - - /* Allocate a buffer for the partition */ - PartitionBuffer = ExAllocatePoolWithTag(NonPagedPool, - DiskGeometry.BytesPerSector, - TAG_IO); - if (!PartitionBuffer) continue; - - /* Build an IRP to read the partition sector */ - KeInitializeEvent(&Event, NotificationEvent, FALSE); - Irp = IoBuildSynchronousFsdRequest(IRP_MJ_READ, - DeviceObject, - PartitionBuffer, - DiskGeometry.BytesPerSector, - &PartitionOffset, - &Event, - &StatusBlock); - - /* Call the driver and check if we have to wait */ - Status = IoCallDriver(DeviceObject, Irp); - if (Status == STATUS_PENDING) - { - /* Wait for completion */ - KeWaitForSingleObject(&Event, Executive, KernelMode, FALSE, NULL); - Status = StatusBlock.Status; - } - - /* Check if we failed */ - if (!NT_SUCCESS(Status)) - { - /* Try again */ - ExFreePool(PartitionBuffer); - ExFreePool(DriveLayout); - continue; - } - - /* Calculate the MBR checksum */ - DiskEntry->Checksum = 0; - for (j = 0; j < 128; j++) - { - DiskEntry->Checksum += ((PULONG)PartitionBuffer)[j]; - } - - /* Save the signature and checksum */ - DiskEntry->Checksum = ~DiskEntry->Checksum + 1; - DiskEntry->Signature = DriveLayout->Signature; - DiskEntry->PartitionCount = DriveLayout->PartitionCount; - - /* Insert it into the list */ - InsertTailList(ListHead, &DiskEntry->ListEntry); - - /* Free the buffer */ + return FALSE; + } + + /* Call the driver and check if we have to wait on it */ + Status = IoCallDriver(DeviceObject, Irp); + if (Status == STATUS_PENDING) + { + /* Wait on the driver */ + KeWaitForSingleObject(&Event, Executive, KernelMode, FALSE, NULL); + Status = StatusBlock.Status; + } + + /* Check if we failed */ + if (!NT_SUCCESS(Status)) + { + /* Try again */ + ObDereferenceObject(FileObject); + return FALSE; + } + + /* Read the partition table */ + Status = IoReadPartitionTable(DeviceObject, + DiskGeometry.BytesPerSector, + TRUE, + &DriveLayout); + + /* Dereference the file object */ + ObDereferenceObject(FileObject); + if (!NT_SUCCESS(Status)) return FALSE; + + /* Set the offset to 0 */ + PartitionOffset.QuadPart = 0; + + /* Allocate a buffer for the partition */ + PartitionBuffer = ExAllocatePoolWithTag(NonPagedPool, + DiskGeometry.BytesPerSector, + TAG_IO); + if (!PartitionBuffer) return FALSE; + + /* Build an IRP to read the partition sector */ + KeInitializeEvent(&Event, NotificationEvent, FALSE); + Irp = IoBuildSynchronousFsdRequest(IRP_MJ_READ, + DeviceObject, + PartitionBuffer, + DiskGeometry.BytesPerSector, + &PartitionOffset, + &Event, + &StatusBlock); + + /* Call the driver and check if we have to wait */ + Status = IoCallDriver(DeviceObject, Irp); + if (Status == STATUS_PENDING) + { + /* Wait for completion */ + KeWaitForSingleObject(&Event, Executive, KernelMode, FALSE, NULL); + Status = StatusBlock.Status; + } + + /* Check if we failed */ + if (!NT_SUCCESS(Status)) + { + /* Try again */ ExFreePool(PartitionBuffer); ExFreePool(DriveLayout); - } -} - -NTSTATUS -INIT_FUNCTION -NTAPI -IopAssignArcNamesToDisk(IN PDEVICE_OBJECT DeviceObject, - IN PCHAR BootArcName, - IN ULONG DiskNumber, - IN ULONG PartitionCount, - IN PBOOLEAN FoundHdBoot) -{ - CHAR Buffer[256]; - CHAR ArcBuffer[256]; - ANSI_STRING TempString, ArcNameString, BootString; - ANSI_STRING ArcBootString, ArcSystemString; - UNICODE_STRING DeviceName, ArcName, BootPath; - ULONG i; - NTSTATUS Status; - - /* Set default */ - *FoundHdBoot = FALSE; - - /* Build the boot strings */ - RtlInitAnsiString(&ArcBootString, KeLoaderBlock->ArcBootDeviceName); - RtlInitAnsiString(&ArcSystemString, KeLoaderBlock->ArcHalDeviceName); - - /* Build the NT Device Name */ - sprintf(Buffer, "\\Device\\Harddisk%lu\\Partition0", DiskNumber); - - /* Convert it to unicode */ - RtlInitAnsiString(&TempString, Buffer); - Status = RtlAnsiStringToUnicodeString(&DeviceName, &TempString, TRUE); - if (!NT_SUCCESS(Status)) return Status; - - /* Build the ARC Device Name */ - sprintf(ArcBuffer, "\\ArcName\\%s", BootArcName); - - /* Convert it to Unicode */ - RtlInitAnsiString(&ArcNameString, ArcBuffer); - Status = RtlAnsiStringToUnicodeString(&ArcName, &ArcNameString, TRUE); - if (!NT_SUCCESS(Status)) return Status; - - /* Create the symbolic link and free the strings */ - IoAssignArcName(&ArcName, &DeviceName); - RtlFreeUnicodeString(&ArcName); - RtlFreeUnicodeString(&DeviceName); - - /* Loop all the partitions */ - for (i = 0; i < PartitionCount; i++) - { - /* Build the partition device name */ - sprintf(Buffer, "\\Device\\Harddisk%lu\\Partition%lu", DiskNumber, i+1); - - /* Convert it to Unicode */ - RtlInitAnsiString(&TempString, Buffer); - Status = RtlAnsiStringToUnicodeString(&DeviceName, &TempString, TRUE); - if (!NT_SUCCESS(Status)) continue; - - /* Build the partial ARC name for this partition */ - sprintf(ArcBuffer, "%spartition(%lu)", BootArcName, i + 1); - RtlInitAnsiString(&ArcNameString, ArcBuffer); - - /* Check if this is the boot device */ - if (RtlEqualString(&ArcNameString, &ArcBootString, TRUE)) - { - /* Remember that we found a Hard Disk Boot Device */ - *FoundHdBoot = TRUE; - } - - /* Check if it's the system boot partition */ - if (RtlEqualString(&ArcNameString, &ArcSystemString, TRUE)) - { - /* It is, create a Unicode string for it */ - RtlInitAnsiString(&BootString, KeLoaderBlock->NtHalPathName); - Status = RtlAnsiStringToUnicodeString(&BootPath, &BootString, TRUE); - if (NT_SUCCESS(Status)) - { - /* FIXME: Save in registry */ - - /* Free the string now */ - RtlFreeUnicodeString(&BootPath); - } - } - - /* Build the full ARC name */ - sprintf(Buffer, "\\ArcName\\%spartition(%lu)", BootArcName, i + 1); - - /* Convert it to Unicode */ - RtlInitAnsiString(&ArcNameString, Buffer); - Status = RtlAnsiStringToUnicodeString(&ArcName, &ArcNameString, TRUE); - if (!NT_SUCCESS(Status)) continue; - - /* Create the symbolic link and free the strings */ - IoAssignArcName(&ArcName, &DeviceName); - RtlFreeUnicodeString(&ArcName); - RtlFreeUnicodeString(&DeviceName); - } - - /* Return success */ - return STATUS_SUCCESS; + return FALSE; + } + + /* Calculate the MBR checksum */ + Checksum = 0; + for (j = 0; j < 128; j++) + { + Checksum += ((PULONG)PartitionBuffer)[j]; + } + + /* Save the signature and checksum */ + *CheckSum = ~Checksum + 1; + *Signature = DriveLayout->Signature; + *PartitionCount = DriveLayout->PartitionCount; + + /* Free the buffer */ + ExFreePool(PartitionBuffer); + ExFreePool(DriveLayout); + return TRUE; } BOOLEAN @@ -441,78 +338,188 @@ return FALSE; } -NTSTATUS INIT_FUNCTION +NTSTATUS +INIT_FUNCTION IoCreateArcNames(VOID) { - PCONFIGURATION_INFORMATION ConfigInfo; - ULONG i; + PLOADER_PARAMETER_BLOCK LoaderBlock = KeLoaderBlock; + PCONFIGURATION_INFORMATION ConfigInfo = IoGetConfigurationInformation(); + PARC_DISK_INFORMATION ArcDiskInfo = LoaderBlock->ArcDiskInformation; + CHAR ArcBuffer[256], Buffer[256]; + ANSI_STRING ArcBootString, ArcSystemString, ArcString, TempString, BootString; + UNICODE_STRING ArcName, BootPath, DeviceName; + BOOLEAN SingleDisk; + ULONG i, j, Length; + PDEVICE_OBJECT DeviceObject; + ULONG Signature, Checksum, PartitionCount; + PLIST_ENTRY NextEntry; + PARC_DISK_SIGNATURE ArcDiskEntry; NTSTATUS Status; - PLIST_ENTRY BiosDiskListHead, Entry; - LIST_ENTRY DiskListHead; - PARC_DISK_SIGNATURE ArcDiskEntry; - PDISKENTRY DiskEntry; BOOLEAN FoundBoot = FALSE; - PULONG Buffer; - - ConfigInfo = IoGetConfigurationInformation(); - - /* Get the boot ARC disk list */ - BiosDiskListHead = &KeLoaderBlock->ArcDiskInformation-> - DiskSignatureListHead; - - /* Enumerate system disks */ - InitializeListHead(&DiskListHead); - IopEnumerateDisks(&DiskListHead); - - while (!IsListEmpty(BiosDiskListHead)) - { - Entry = RemoveHeadList(BiosDiskListHead); - ArcDiskEntry = CONTAINING_RECORD(Entry, ARC_DISK_SIGNATURE, ListEntry); - Entry = DiskListHead.Flink; - while (Entry != &DiskListHead) + PULONG PartitionBuffer; + + /* Check if we only have one disk on the machine */ + SingleDisk = ArcDiskInfo->DiskSignatureListHead.Flink->Flink == + (&ArcDiskInfo->DiskSignatureListHead); + + /* Create the global HAL partition name */ + sprintf(ArcBuffer, "\\ArcName\\%s", LoaderBlock->ArcHalDeviceName); + RtlInitAnsiString(&ArcString, ArcBuffer); + RtlAnsiStringToUnicodeString(&IoArcHalDeviceName, &ArcString, TRUE); + + /* Create the global system partition name */ + sprintf(ArcBuffer, "\\ArcName\\%s", LoaderBlock->ArcBootDeviceName); + RtlInitAnsiString(&ArcString, ArcBuffer); + RtlAnsiStringToUnicodeString(&IoArcBootDeviceName, &ArcString, TRUE); + + /* Allocate memory for the string */ + Length = strlen(LoaderBlock->ArcBootDeviceName) + sizeof(ANSI_NULL); + IoLoaderArcBootDeviceName = ExAllocatePoolWithTag(PagedPool, + Length, + TAG_IO); + if (IoLoaderArcBootDeviceName) + { + /* Copy the name */ + RtlMoveMemory(IoLoaderArcBootDeviceName, + LoaderBlock->ArcBootDeviceName, + Length); + } + + /* Check if we only found a disk, but we're booting from CD-ROM */ + if ((SingleDisk) && strstr(LoaderBlock->ArcBootDeviceName, "cdrom")) + { + /* Then disable single-disk mode, since there's a CD drive out there */ + SingleDisk = FALSE; + } + + /* Build the boot strings */ + RtlInitAnsiString(&ArcBootString, LoaderBlock->ArcBootDeviceName); + RtlInitAnsiString(&ArcSystemString, LoaderBlock->ArcHalDeviceName); + + /* Loop every detected disk */ + for (i = 0; i < ConfigInfo->DiskCount; i++) + { + /* Get information about the disk */ + if (!IopGetDiskInformation(i, + &Checksum, + &Signature, + &PartitionCount, + &DeviceObject)) { - DiskEntry = CONTAINING_RECORD(Entry, DISKENTRY, ListEntry); - DPRINT1("Entry: %s\n", ArcDiskEntry->ArcName); - if (DiskEntry->Checksum == ArcDiskEntry->CheckSum && - DiskEntry->Signature == ArcDiskEntry->Signature) + /* Skip this disk */ + continue; + } + + /* Loop ARC disks */ + for (NextEntry = ArcDiskInfo->DiskSignatureListHead.Flink; + NextEntry != &ArcDiskInfo->DiskSignatureListHead; + NextEntry = NextEntry->Flink) + { + /* Get the current ARC disk signature entry */ + ArcDiskEntry = CONTAINING_RECORD(NextEntry, + ARC_DISK_SIGNATURE, + ListEntry); + + /* + * Now check if the signature and checksum match, unless this is + * the only disk that was in the ARC list, and also in the device + * tree, in which case the check is bypassed and we accept the disk + */ + if (((SingleDisk) && (ConfigInfo->DiskCount == 1)) || + ((Checksum == ArcDiskEntry->CheckSum) && + (Signature == ArcDiskEntry->Signature))) { - Status = IopAssignArcNamesToDisk(DiskEntry->DeviceObject, - ArcDiskEntry->ArcName, - DiskEntry->DiskNumber, - DiskEntry->PartitionCount, - &FoundBoot); - - RemoveEntryList(&DiskEntry->ListEntry); - ExFreePool(DiskEntry); - break; + /* Build the NT Device Name */ + sprintf(Buffer, "\\Device\\Harddisk%lu\\Partition0", i); + + /* Convert it to Unicode */ + RtlInitAnsiString(&TempString, Buffer); + Status = RtlAnsiStringToUnicodeString(&DeviceName, &TempString, TRUE); + if (!NT_SUCCESS(Status)) continue; + + /* Build the ARC Device Name */ + sprintf(ArcBuffer, "\\ArcName\\%s", ArcDiskEntry->ArcName); + + /* Convert it to Unicode */ + RtlInitAnsiString(&ArcString, ArcBuffer); + Status = RtlAnsiStringToUnicodeString(&ArcName, &ArcString, TRUE); + if (!NT_SUCCESS(Status)) continue; + + /* Create the symbolic link and free the strings */ + IoAssignArcName(&ArcName, &DeviceName); + RtlFreeUnicodeString(&ArcName); + RtlFreeUnicodeString(&DeviceName); + + /* Loop all the partitions */ + for (j = 0; j < PartitionCount; j++) + { + /* Build the partition device name */ + sprintf(Buffer, "\\Device\\Harddisk%lu\\Partition%lu", i, j + 1); + + /* Convert it to Unicode */ + RtlInitAnsiString(&TempString, Buffer); + Status = RtlAnsiStringToUnicodeString(&DeviceName, &TempString, TRUE); + if (!NT_SUCCESS(Status)) continue; + + /* Build the partial ARC name for this partition */ + sprintf(ArcBuffer, "%spartition(%lu)", ArcDiskEntry->ArcName, j + 1); + RtlInitAnsiString(&ArcString, ArcBuffer); + + /* Check if this is the boot device */ + if (RtlEqualString(&ArcString, &ArcBootString, TRUE)) + { + /* Remember that we found a Hard Disk Boot Device */ + FoundBoot = TRUE; + } + + /* Check if it's the system boot partition */ + if (RtlEqualString(&ArcString, &ArcSystemString, TRUE)) + { + /* It is, create a Unicode string for it */ + RtlInitAnsiString(&BootString, LoaderBlock->NtHalPathName); + Status = RtlAnsiStringToUnicodeString(&BootPath, &BootString, TRUE); + if (NT_SUCCESS(Status)) + { + /* FIXME: Save in registry */ + + /* Free the string now */ + RtlFreeUnicodeString(&BootPath); + } + } + + /* Build the full ARC name */ + sprintf(Buffer, "\\ArcName\\%spartition(%lu)", ArcDiskEntry->ArcName, j + 1); + + /* Convert it to Unicode */ + RtlInitAnsiString(&ArcString, Buffer); + Status = RtlAnsiStringToUnicodeString(&ArcName, &ArcString, TRUE); + if (!NT_SUCCESS(Status)) continue; + + /* Create the symbolic link and free the strings */ + IoAssignArcName(&ArcName, &DeviceName); + RtlFreeUnicodeString(&ArcName); + RtlFreeUnicodeString(&DeviceName); + } } - Entry = Entry->Flink; } - } - - while (!IsListEmpty(&DiskListHead)) - { - Entry = RemoveHeadList(&DiskListHead); - DiskEntry = CONTAINING_RECORD(Entry, DISKENTRY, ListEntry); - ExFreePool(DiskEntry); } /* Check if we didn't find the boot disk */ if (!FoundBoot) { /* Allocate a buffer for the CD-ROM MBR */ - Buffer = ExAllocatePoolWithTag(NonPagedPool, 2048, TAG_IO); - if (!Buffer) return STATUS_INSUFFICIENT_RESOURCES; + PartitionBuffer = ExAllocatePoolWithTag(NonPagedPool, 2048, TAG_IO); + if (!PartitionBuffer) return STATUS_INSUFFICIENT_RESOURCES; /* Loop every CD-ROM */ for (i = 0; i < ConfigInfo->CdRomCount; i++) { /* Give it an ARC name */ - if (IopAssignArcNamesToCdrom(Buffer, i)) break; + if (IopAssignArcNamesToCdrom(PartitionBuffer, i)) break; } /* Free the buffer */ - ExFreePool(Buffer); + ExFreePool(PartitionBuffer); } /* Return success */
17 years, 11 months
1
0
0
0
[cwittich] 24455: set eol-style:native
by cwittich@svn.reactos.org
Author: cwittich Date: Mon Oct 9 00:42:19 2006 New Revision: 24455 URL:
http://svn.reactos.org/svn/reactos?rev=24455&view=rev
Log: set eol-style:native Modified: trunk/tools/buildbot/buildbot/buildbot/__init__.py (props changed) trunk/tools/buildbot/buildbot/buildbot/buildset.py (props changed) trunk/tools/buildbot/buildbot/buildbot/dnotify.py (props changed) trunk/tools/buildbot/buildbot/buildbot/interfaces.py (props changed) trunk/tools/buildbot/buildbot/buildbot/locks.py (props changed) trunk/tools/buildbot/buildbot/buildbot/master.py (props changed) trunk/tools/buildbot/buildbot/buildbot/pbutil.py (props changed) trunk/tools/buildbot/buildbot/buildbot/scheduler.py (props changed) trunk/tools/buildbot/buildbot/buildbot/sourcestamp.py (props changed) trunk/tools/buildbot/buildbot/buildbot/status/__init__.py (props changed) trunk/tools/buildbot/buildbot/buildbot/status/base.py (props changed) trunk/tools/buildbot/buildbot/buildbot/status/builder.py (props changed) trunk/tools/buildbot/buildbot/buildbot/status/classic.css (props changed) trunk/tools/buildbot/buildbot/buildbot/status/client.py (props changed) trunk/tools/buildbot/buildbot/buildbot/status/html.py (props changed) trunk/tools/buildbot/buildbot/buildbot/status/mail.py (props changed) trunk/tools/buildbot/buildbot/buildbot/status/progress.py (props changed) trunk/tools/buildbot/buildbot/buildbot/status/tests.py (props changed) trunk/tools/buildbot/buildbot/buildbot/status/words.py (props changed) trunk/tools/buildbot/buildbot/buildbot/twcompat.py (props changed) trunk/tools/buildbot/buildbot/buildbot/util.py (props changed) Propchange: trunk/tools/buildbot/buildbot/buildbot/__init__.py ------------------------------------------------------------------------------ svn:eol-style = native Propchange: trunk/tools/buildbot/buildbot/buildbot/buildset.py ------------------------------------------------------------------------------ svn:eol-style = native Propchange: trunk/tools/buildbot/buildbot/buildbot/dnotify.py ------------------------------------------------------------------------------ svn:eol-style = native Propchange: trunk/tools/buildbot/buildbot/buildbot/interfaces.py ------------------------------------------------------------------------------ svn:eol-style = native Propchange: trunk/tools/buildbot/buildbot/buildbot/locks.py ------------------------------------------------------------------------------ svn:eol-style = native Propchange: trunk/tools/buildbot/buildbot/buildbot/master.py ------------------------------------------------------------------------------ svn:eol-style = native Propchange: trunk/tools/buildbot/buildbot/buildbot/pbutil.py ------------------------------------------------------------------------------ svn:eol-style = native Propchange: trunk/tools/buildbot/buildbot/buildbot/scheduler.py ------------------------------------------------------------------------------ svn:eol-style = native Propchange: trunk/tools/buildbot/buildbot/buildbot/sourcestamp.py ------------------------------------------------------------------------------ svn:eol-style = native Propchange: trunk/tools/buildbot/buildbot/buildbot/status/__init__.py ------------------------------------------------------------------------------ svn:eol-style = native Propchange: trunk/tools/buildbot/buildbot/buildbot/status/base.py ------------------------------------------------------------------------------ svn:eol-style = native Propchange: trunk/tools/buildbot/buildbot/buildbot/status/builder.py ------------------------------------------------------------------------------ svn:eol-style = native Propchange: trunk/tools/buildbot/buildbot/buildbot/status/classic.css ------------------------------------------------------------------------------ svn:eol-style = native Propchange: trunk/tools/buildbot/buildbot/buildbot/status/client.py ------------------------------------------------------------------------------ svn:eol-style = native Propchange: trunk/tools/buildbot/buildbot/buildbot/status/html.py ------------------------------------------------------------------------------ svn:eol-style = native Propchange: trunk/tools/buildbot/buildbot/buildbot/status/mail.py ------------------------------------------------------------------------------ svn:eol-style = native Propchange: trunk/tools/buildbot/buildbot/buildbot/status/progress.py ------------------------------------------------------------------------------ svn:eol-style = native Propchange: trunk/tools/buildbot/buildbot/buildbot/status/tests.py ------------------------------------------------------------------------------ svn:eol-style = native Propchange: trunk/tools/buildbot/buildbot/buildbot/status/words.py ------------------------------------------------------------------------------ svn:eol-style = native Propchange: trunk/tools/buildbot/buildbot/buildbot/twcompat.py ------------------------------------------------------------------------------ svn:eol-style = native Propchange: trunk/tools/buildbot/buildbot/buildbot/util.py ------------------------------------------------------------------------------ svn:eol-style = native
17 years, 11 months
1
0
0
0
[weiden] 24454: Some header fixes
by weiden@svn.reactos.org
Author: weiden Date: Mon Oct 9 00:28:03 2006 New Revision: 24454 URL:
http://svn.reactos.org/svn/reactos?rev=24454&view=rev
Log: Some header fixes Modified: trunk/reactos/include/ddk/ndis.h trunk/reactos/include/ddk/ntifs.h trunk/reactos/include/ddk/ntpoapi.h trunk/reactos/include/ddk/video.h trunk/reactos/include/ddk/win2k.h trunk/reactos/include/ddk/winddk.h trunk/reactos/include/ddk/winnt4.h trunk/reactos/include/ndk/kefuncs.h trunk/reactos/include/ndk/obfuncs.h trunk/reactos/lib/rossym/initkm.c [This mail would be too long, it was shortened to contain the URLs only.] Modified: trunk/reactos/include/ddk/ndis.h URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/include/ddk/ndis.h?rev=244…
Modified: trunk/reactos/include/ddk/ntifs.h URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/include/ddk/ntifs.h?rev=24…
Modified: trunk/reactos/include/ddk/ntpoapi.h URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/include/ddk/ntpoapi.h?rev=…
Modified: trunk/reactos/include/ddk/video.h URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/include/ddk/video.h?rev=24…
Modified: trunk/reactos/include/ddk/win2k.h URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/include/ddk/win2k.h?rev=24…
Modified: trunk/reactos/include/ddk/winddk.h URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/include/ddk/winddk.h?rev=2…
Modified: trunk/reactos/include/ddk/winnt4.h URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/include/ddk/winnt4.h?rev=2…
Modified: trunk/reactos/include/ndk/kefuncs.h URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/include/ndk/kefuncs.h?rev=…
Modified: trunk/reactos/include/ndk/obfuncs.h URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/include/ndk/obfuncs.h?rev=…
Modified: trunk/reactos/lib/rossym/initkm.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/lib/rossym/initkm.c?rev=24…
17 years, 11 months
1
0
0
0
← Newer
1
...
20
21
22
23
24
25
26
...
36
Older →
Jump to page:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
Results per page:
10
25
50
100
200