diff --git a/reactos/include/ntdll/ntdll.h b/reactos/include/ntdll/ntdll.h index 8c2aaeeb5cd..1cdacb5d863 100644 --- a/reactos/include/ntdll/ntdll.h +++ b/reactos/include/ntdll/ntdll.h @@ -17,7 +17,7 @@ #ifdef NDEBUG #if defined(__GNUC__) -#define TRACE_LDR(args...) if (NtGlobalFlag & FLG_SHOW_LDR_SNAPS) { DbgPrint("(LDR:%s:%d) ",__FILE__,__LINE__); DbgPrint(args); } +#define TRACE_LDR(args...) if (RtlGetNtGlobalFlags() & FLG_SHOW_LDR_SNAPS) { DbgPrint("(LDR:%s:%d) ",__FILE__,__LINE__); DbgPrint(args); } #define DPRINT(args...) #else #define DPRINT diff --git a/reactos/lib/ntdll/ldr/startup.c b/reactos/lib/ntdll/ldr/startup.c index 6e605f4e9f2..83a6acf29c3 100644 --- a/reactos/lib/ntdll/ldr/startup.c +++ b/reactos/lib/ntdll/ldr/startup.c @@ -37,8 +37,6 @@ static CRITICAL_SECTION LoaderLock; static RTL_BITMAP TlsBitMap; PLDR_MODULE ExeModule; -ULONG NtGlobalFlag = 0; - NTSTATUS LdrpAttachThread (VOID); @@ -102,7 +100,6 @@ LoadImageFileExecutionOptions(PPEB Peb) * read more options */ } - NtGlobalFlag = Peb->NtGlobalFlag; } @@ -242,6 +239,8 @@ __true_LdrInitializeThunk (ULONG Unknown1, PLDR_MODULE NtModule; // ntdll NLSTABLEINFO NlsTable; WCHAR FullNtDllPath[MAX_PATH]; + SYSTEM_BASIC_INFORMATION SystemInformation; + NTSTATUS Status; DPRINT("LdrInitializeThunk()\n"); if (NtCurrentPeb()->Ldr == NULL || NtCurrentPeb()->Ldr->Initialized == FALSE) @@ -280,6 +279,18 @@ __true_LdrInitializeThunk (ULONG Unknown1, NTHeaders = (PIMAGE_NT_HEADERS)(ImageBase + PEDosHeader->e_lfanew); + + /* Get number of processors */ + Status = ZwQuerySystemInformation(SystemBasicInformation, + &SystemInformation, + sizeof(SYSTEM_BASIC_INFORMATION), + NULL); + if (!NT_SUCCESS(Status)) + { + ZwTerminateProcess(NtCurrentProcess(), Status); + } + + Peb->NumberOfProcessors = SystemInformation.NumberProcessors; /* create process heap */ RtlInitializeHeapManager(); Peb->ProcessHeap = RtlCreateHeap(HEAP_GROWABLE, diff --git a/reactos/lib/ntdll/ldr/utils.c b/reactos/lib/ntdll/ldr/utils.c index 8fa40ad1fa2..e5021e18533 100644 --- a/reactos/lib/ntdll/ldr/utils.c +++ b/reactos/lib/ntdll/ldr/utils.c @@ -1,4 +1,4 @@ -/* $Id: utils.c,v 1.104 2004/12/25 11:18:51 navaraf Exp $ +/* $Id$ * * COPYRIGHT: See COPYING in the top level directory * PROJECT: ReactOS kernel @@ -51,7 +51,6 @@ static ULONG LdrpTlsSize = 0; static HANDLE LdrpKnownDllsDirHandle = NULL; static UNICODE_STRING LdrpKnownDllPath = {0, 0, NULL}; static PLDR_MODULE LdrpLastModule = NULL; -extern ULONG NtGlobalFlag; extern PLDR_MODULE ExeModule; /* PROTOTYPES ****************************************************************/ diff --git a/reactos/lib/ntdll/rtl/misc.c b/reactos/lib/ntdll/rtl/misc.c index 6703acaf352..75345916583 100644 --- a/reactos/lib/ntdll/rtl/misc.c +++ b/reactos/lib/ntdll/rtl/misc.c @@ -1,4 +1,4 @@ -/* $Id: misc.c,v 1.11 2004/12/13 23:11:13 navaraf Exp $ +/* $Id$ * * COPYRIGHT: See COPYING in the top level directory * PROJECT: ReactOS kernel @@ -96,3 +96,14 @@ RtlGetNtVersionNumbers(LPDWORD major, LPDWORD minor, LPDWORD build) *build = (0xF0000000 | pPeb->OSBuildNumber); } } + +/* +* @implemented +*/ +ULONG +STDCALL +RtlGetNtGlobalFlags(VOID) +{ + PPEB pPeb = NtCurrentPeb(); + return pPeb->NtGlobalFlag; +} diff --git a/reactos/lib/rtl/version.c b/reactos/lib/rtl/version.c index 3b135817f58..6a13c5e5241 100644 --- a/reactos/lib/rtl/version.c +++ b/reactos/lib/rtl/version.c @@ -16,7 +16,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ -/* $Id: version.c,v 1.4 2004/11/07 18:45:52 hyperion Exp $ +/* $Id$ * * PROJECT: ReactOS kernel * PURPOSE: Runtime code @@ -36,7 +36,6 @@ /* GLOBALS ******************************************************************/ -extern ULONG NtGlobalFlag; /* FUNCTIONS ****************************************************************/ @@ -71,16 +70,6 @@ RtlGetVersion(RTL_OSVERSIONINFOW *Info) return STATUS_INVALID_PARAMETER; } -/* -* @implemented -*/ -ULONG -STDCALL -RtlGetNtGlobalFlags(VOID) -{ - return(NtGlobalFlag); -} - /* * @unimplemented */ diff --git a/reactos/ntoskrnl/Makefile b/reactos/ntoskrnl/Makefile index 21fef6a6e52..23977a1e964 100644 --- a/reactos/ntoskrnl/Makefile +++ b/reactos/ntoskrnl/Makefile @@ -100,6 +100,7 @@ OBJECTS_RTL = \ rtl/ctype.o \ rtl/handle.o \ rtl/message.o \ + rtl/misc.o \ rtl/purecall.o \ rtl/regio.o \ rtl/sprintf.o \ diff --git a/reactos/ntoskrnl/rtl/misc.c b/reactos/ntoskrnl/rtl/misc.c new file mode 100644 index 00000000000..7092a040d39 --- /dev/null +++ b/reactos/ntoskrnl/rtl/misc.c @@ -0,0 +1,32 @@ +/* $Id$ + * + * COPYRIGHT: See COPYING in the top level directory + * PROJECT: ReactOS kernel + * PURPOSE: Various functions + * FILE: lib/ntoskrnl/rtl/misc.c + * PROGRAMER: Hartmut Birr + * REVISION HISTORY: + * 01/03/2005: Created + */ + +/* INCLUDES *****************************************************************/ + +#include +#define NDEBUG +#include + +/* GLOBALS *******************************************************************/ + +extern ULONG NtGlobalFlag; + +/* FUNCTIONS *****************************************************************/ + +/* +* @implemented +*/ +ULONG +STDCALL +RtlGetNtGlobalFlags(VOID) +{ + return(NtGlobalFlag); +}