- Part one of major RTL cleanup. Merge duplicated code and stick everything in lib\rtl that used to be in ntdll. Also cleanup the file headers, copyright information and includes. Modified: trunk/reactos/lib/ntdll/ntdll.xml Deleted: trunk/reactos/lib/ntdll/rtl/apc.c Deleted: trunk/reactos/lib/ntdll/rtl/callback.c Deleted: trunk/reactos/lib/ntdll/rtl/crc32.c Deleted: trunk/reactos/lib/ntdll/rtl/dbgbuffer.c Deleted: trunk/reactos/lib/ntdll/rtl/handle.c Modified: trunk/reactos/lib/ntdll/rtl/libsupp.c Deleted: trunk/reactos/lib/ntdll/rtl/math.c Deleted: trunk/reactos/lib/ntdll/rtl/message.c Deleted: trunk/reactos/lib/ntdll/rtl/misc.c Deleted: trunk/reactos/lib/ntdll/rtl/process.c Deleted: trunk/reactos/lib/ntdll/rtl/propvar.c Deleted: trunk/reactos/lib/ntdll/rtl/rangelist.c Deleted: trunk/reactos/lib/ntdll/rtl/resource.c Deleted: trunk/reactos/lib/ntdll/rtl/secobj.c Deleted: trunk/reactos/lib/ntdll/rtl/teb.c Deleted: trunk/reactos/lib/ntdll/rtl/timerqueue.c Deleted: trunk/reactos/lib/ntdll/rtl/trace.c Added: trunk/reactos/lib/ntdll/rtl/version.c Modified: trunk/reactos/lib/rtl/access.c Modified: trunk/reactos/lib/rtl/acl.c Added: trunk/reactos/lib/rtl/apc.c Modified: trunk/reactos/lib/rtl/atom.c Modified: trunk/reactos/lib/rtl/bit.c Modified: trunk/reactos/lib/rtl/bitmap.c Modified: trunk/reactos/lib/rtl/bootdata.c Added: trunk/reactos/lib/rtl/callback.c Modified: trunk/reactos/lib/rtl/compress.c Added: trunk/reactos/lib/rtl/crc32.c Added: trunk/reactos/lib/rtl/dbgbuffer.c Modified: trunk/reactos/lib/rtl/dos8dot3.c Modified: trunk/reactos/lib/rtl/encode.c Modified: trunk/reactos/lib/rtl/env.c Modified: trunk/reactos/lib/rtl/error.c Modified: trunk/reactos/lib/rtl/exception.c Modified: trunk/reactos/lib/rtl/generictable.c Added: trunk/reactos/lib/rtl/handle.c Modified: trunk/reactos/lib/rtl/heap.c Modified: trunk/reactos/lib/rtl/image.c Modified: trunk/reactos/lib/rtl/largeint.c Modified: trunk/reactos/lib/rtl/luid.c Added: trunk/reactos/lib/rtl/math.c Modified: trunk/reactos/lib/rtl/mem.c Added: trunk/reactos/lib/rtl/message.c Modified: trunk/reactos/lib/rtl/network.c Modified: trunk/reactos/lib/rtl/nls.c Modified: trunk/reactos/lib/rtl/ppb.c Modified: trunk/reactos/lib/rtl/process.c Added: trunk/reactos/lib/rtl/propvar.c Modified: trunk/reactos/lib/rtl/qsort.c Modified: trunk/reactos/lib/rtl/random.c Added: trunk/reactos/lib/rtl/rangelist.c Modified: trunk/reactos/lib/rtl/registry.c Added: trunk/reactos/lib/rtl/resource.c Modified: trunk/reactos/lib/rtl/rtl.h Modified: trunk/reactos/lib/rtl/rtl.xml Modified: trunk/reactos/lib/rtl/sd.c Modified: trunk/reactos/lib/rtl/security.c Modified: trunk/reactos/lib/rtl/sid.c Modified: trunk/reactos/lib/rtl/splaytree.c Modified: trunk/reactos/lib/rtl/thread.c Modified: trunk/reactos/lib/rtl/time.c Added: trunk/reactos/lib/rtl/timerqueue.c Modified: trunk/reactos/lib/rtl/timezone.c Modified: trunk/reactos/lib/rtl/unicode.c Modified: trunk/reactos/lib/rtl/unicodeprefix.c Modified: trunk/reactos/lib/rtl/version.c Modified: trunk/reactos/ntoskrnl/ntoskrnl.xml Modified: trunk/reactos/ntoskrnl/rtl/libsupp.c Deleted: trunk/reactos/ntoskrnl/rtl/message.c Deleted: trunk/reactos/ntoskrnl/rtl/rangelist.c _____
Modified: trunk/reactos/lib/ntdll/ntdll.xml --- trunk/reactos/lib/ntdll/ntdll.xml 2005-09-07 21:25:42 UTC (rev 17730) +++ trunk/reactos/lib/ntdll/ntdll.xml 2005-09-08 00:09:32 UTC (rev 17731) @@ -32,25 +32,11 @@
<file>dllmain.c</file> </directory> <directory name="rtl"> - <file>apc.c</file> - <file>callback.c</file> - <file>crc32.c</file> <file>critical.c</file> - <file>dbgbuffer.c</file> <file>exception.c</file> - <file>handle.c</file> <file>libsupp.c</file> - <file>math.c</file> - <file>message.c</file> - <file>misc.c</file> <file>path.c</file> - <file>process.c</file> - <file>propvar.c</file> - <file>rangelist.c</file> - <file>resource.c</file> - <file>secobj.c</file> - <file>teb.c</file> - <file>timerqueue.c</file> + <file>version.c</file> </directory> <directory name="stdio"> <file>sprintf.c</file> _____
Deleted: trunk/reactos/lib/ntdll/rtl/apc.c --- trunk/reactos/lib/ntdll/rtl/apc.c 2005-09-07 21:25:42 UTC (rev 17730) +++ trunk/reactos/lib/ntdll/rtl/apc.c 2005-09-08 00:09:32 UTC (rev 17731) @@ -1,55 +0,0 @@
-/* - * ReactOS kernel - * Copyright (C) 2000 David Welch welch@cwcom.net - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - */ -/* $Id$ - * - * PROJECT: ReactOS kernel - * PURPOSE: User-mode APC support - * FILE: lib/ntdll/rtl/apc.c - * PROGRAMER: David Welch welch@cwcom.net - */ - -/* INCLUDES *****************************************************************/ - -#include <ntdll.h> -#define NDEBUG -#include <debug.h> - -/* FUNCTIONS ***************************************************************/ - -VOID STDCALL -KiUserApcDispatcher(PIO_APC_ROUTINE ApcRoutine, - PVOID ApcContext, - PIO_STATUS_BLOCK Iosb, - ULONG Reserved, - PCONTEXT Context) -{ - /* - * Call the APC - */ - //DPRINT1("ITS ME\n"); - ApcRoutine(ApcContext, - Iosb, - Reserved); - /* - * Switch back to the interrupted context - */ - //DPRINT1("switch back\n"); - NtContinue(Context, 1); -} - _____
Deleted: trunk/reactos/lib/ntdll/rtl/callback.c --- trunk/reactos/lib/ntdll/rtl/callback.c 2005-09-07 21:25:42 UTC (rev 17730) +++ trunk/reactos/lib/ntdll/rtl/callback.c 2005-09-08 00:09:32 UTC (rev 17731) @@ -1,35 +0,0 @@
-/* $Id$ - * - * COPYRIGHT: See COPYING in the top level directory - * PROJECT: ReactOS kernel - * PURPOSE: User-mode callback support - * FILE: lib/ntdll/rtl/callback.c - * PROGRAMER: David Welch welch@cwcom.net - */ - -/* INCLUDES *****************************************************************/ - -#include <ntdll.h> -#define NDEBUG -#include <debug.h> -/* TYPES *********************************************************************/ - -typedef NTSTATUS (STDCALL *KERNEL_CALLBACK_FUNCTION)(PVOID Argument, - ULONG ArgumentLength); - -/* FUNCTIONS *****************************************************************/ - -VOID STDCALL -KiUserCallbackDispatcher(ULONG RoutineIndex, - PVOID Argument, - ULONG ArgumentLength) -{ - PPEB Peb; - NTSTATUS Status; - KERNEL_CALLBACK_FUNCTION Callback; - - Peb = NtCurrentPeb(); - Callback = (KERNEL_CALLBACK_FUNCTION)Peb->KernelCallbackTable[RoutineIndex]; - Status = Callback(Argument, ArgumentLength); - ZwCallbackReturn(NULL, 0, Status); -} _____
Deleted: trunk/reactos/lib/ntdll/rtl/crc32.c --- trunk/reactos/lib/ntdll/rtl/crc32.c 2005-09-07 21:25:42 UTC (rev 17730) +++ trunk/reactos/lib/ntdll/rtl/crc32.c 2005-09-08 00:09:32 UTC (rev 17731) @@ -1,109 +0,0 @@
-/* - * COPYRIGHT: See COPYING in the top level directory - * PROJECT: ReactOS kernel - * PURPOSE: crc32 functions - * FILE: lib/ntdll/rtl/crc32.c - * PROGRAMER: Steven Edwards - * REVISION HISTORY: - * 11/15/2000: Created - */ - -/* This work is based off of rtl.c in Wine. - * Please give credit where credit is due: - * - * Copyright 2003 Thomas Mertes - * Crc32 code Copyright 1986 Gary S. Brown (Public domain) - */ - -/* INCLUDES *****************************************************************/ - -#include <ntdll.h> -#define NDEBUG -#include <debug.h> -/* FUNCTIONS ****************************************************************/ - -/* CRC polynomial 0xedb88320 */ -static const ULONG CrcTable[256] = -{ - 0x00000000, 0x77073096, 0xee0e612c, 0x990951ba, 0x076dc419, 0x706af48f, - 0xe963a535, 0x9e6495a3, 0x0edb8832, 0x79dcb8a4, 0xe0d5e91e, 0x97d2d988, - 0x09b64c2b, 0x7eb17cbd, 0xe7b82d07, 0x90bf1d91, 0x1db71064, 0x6ab020f2, - 0xf3b97148, 0x84be41de, 0x1adad47d, 0x6ddde4eb, 0xf4d4b551, 0x83d385c7, - 0x136c9856, 0x646ba8c0, 0xfd62f97a, 0x8a65c9ec, 0x14015c4f, 0x63066cd9, - 0xfa0f3d63, 0x8d080df5, 0x3b6e20c8, 0x4c69105e, 0xd56041e4, 0xa2677172, - 0x3c03e4d1, 0x4b04d447, 0xd20d85fd, 0xa50ab56b, 0x35b5a8fa, 0x42b2986c, - 0xdbbbc9d6, 0xacbcf940, 0x32d86ce3, 0x45df5c75, 0xdcd60dcf, 0xabd13d59, - 0x26d930ac, 0x51de003a, 0xc8d75180, 0xbfd06116, 0x21b4f4b5, 0x56b3c423, - 0xcfba9599, 0xb8bda50f, 0x2802b89e, 0x5f058808, 0xc60cd9b2, 0xb10be924, - 0x2f6f7c87, 0x58684c11, 0xc1611dab, 0xb6662d3d, 0x76dc4190, 0x01db7106, - 0x98d220bc, 0xefd5102a, 0x71b18589, 0x06b6b51f, 0x9fbfe4a5, 0xe8b8d433, - 0x7807c9a2, 0x0f00f934, 0x9609a88e, 0xe10e9818, 0x7f6a0dbb, 0x086d3d2d, - 0x91646c97, 0xe6635c01, 0x6b6b51f4, 0x1c6c6162, 0x856530d8, 0xf262004e, - 0x6c0695ed, 0x1b01a57b, 0x8208f4c1, 0xf50fc457, 0x65b0d9c6, 0x12b7e950, - 0x8bbeb8ea, 0xfcb9887c, 0x62dd1ddf, 0x15da2d49, 0x8cd37cf3, 0xfbd44c65, - 0x4db26158, 0x3ab551ce, 0xa3bc0074, 0xd4bb30e2, 0x4adfa541, 0x3dd895d7, - 0xa4d1c46d, 0xd3d6f4fb, 0x4369e96a, 0x346ed9fc, 0xad678846, 0xda60b8d0, - 0x44042d73, 0x33031de5, 0xaa0a4c5f, 0xdd0d7cc9, 0x5005713c, 0x270241aa, - 0xbe0b1010, 0xc90c2086, 0x5768b525, 0x206f85b3, 0xb966d409, 0xce61e49f, - 0x5edef90e, 0x29d9c998, 0xb0d09822, 0xc7d7a8b4, 0x59b33d17, 0x2eb40d81, - 0xb7bd5c3b, 0xc0ba6cad, 0xedb88320, 0x9abfb3b6, 0x03b6e20c, 0x74b1d29a, - 0xead54739, 0x9dd277af, 0x04db2615, 0x73dc1683, 0xe3630b12, 0x94643b84, - 0x0d6d6a3e, 0x7a6a5aa8, 0xe40ecf0b, 0x9309ff9d, 0x0a00ae27, 0x7d079eb1, - 0xf00f9344, 0x8708a3d2, 0x1e01f268, 0x6906c2fe, 0xf762575d, 0x806567cb, - 0x196c3671, 0x6e6b06e7, 0xfed41b76, 0x89d32be0, 0x10da7a5a, 0x67dd4acc, - 0xf9b9df6f, 0x8ebeeff9, 0x17b7be43, 0x60b08ed5, 0xd6d6a3e8, 0xa1d1937e, - 0x38d8c2c4, 0x4fdff252, 0xd1bb67f1, 0xa6bc5767, 0x3fb506dd, 0x48b2364b, - 0xd80d2bda, 0xaf0a1b4c, 0x36034af6, 0x41047a60, 0xdf60efc3, 0xa867df55, - 0x316e8eef, 0x4669be79, 0xcb61b38c, 0xbc66831a, 0x256fd2a0, 0x5268e236, - 0xcc0c7795, 0xbb0b4703, 0x220216b9, 0x5505262f, 0xc5ba3bbe, 0xb2bd0b28, - 0x2bb45a92, 0x5cb36a04, 0xc2d7ffa7, 0xb5d0cf31, 0x2cd99e8b, 0x5bdeae1d, - 0x9b64c2b0, 0xec63f226, 0x756aa39c, 0x026d930a, 0x9c0906a9, 0xeb0e363f, - 0x72076785, 0x05005713, 0x95bf4a82, 0xe2b87a14, 0x7bb12bae, 0x0cb61b38, - 0x92d28e9b, 0xe5d5be0d, 0x7cdcefb7, 0x0bdbdf21, 0x86d3d2d4, 0xf1d4e242, - 0x68ddb3f8, 0x1fda836e, 0x81be16cd, 0xf6b9265b, 0x6fb077e1, 0x18b74777, - 0x88085ae6, 0xff0f6a70, 0x66063bca, 0x11010b5c, 0x8f659eff, 0xf862ae69, - 0x616bffd3, 0x166ccf45, 0xa00ae278, 0xd70dd2ee, 0x4e048354, 0x3903b3c2, - 0xa7672661, 0xd06016f7, 0x4969474d, 0x3e6e77db, 0xaed16a4a, 0xd9d65adc, - 0x40df0b66, 0x37d83bf0, 0xa9bcae53, 0xdebb9ec5, 0x47b2cf7f, 0x30b5ffe9, - 0xbdbdf21c, 0xcabac28a, 0x53b39330, 0x24b4a3a6, 0xbad03605, 0xcdd70693, - 0x54de5729, 0x23d967bf, 0xb3667a2e, 0xc4614ab8, 0x5d681b02, 0x2a6f2b94, - 0xb40bbe37, 0xc30c8ea1, 0x5a05df1b, 0x2d02ef8d -}; - -/********************************************************************* - * RtlComputeCrc32 [NTDLL.@] - * - * Calculate the CRC32 checksum of a block of bytes - * - * PARAMS - * Initial [I] Initial CRC value - * Data [I] Data block - * Length [I] Length of the byte block - * - * RETURNS - * The cumulative CRC32 of Initial and Length bytes of the Data block. - * - * @implemented - */ -ULONG STDCALL -RtlComputeCrc32 (IN ULONG Initial, - IN PUCHAR Data, - IN ULONG Length) -{ - ULONG CrcValue; - -#ifdef DBG - DbgPrint("(%lu,%p,%lu)\n", Initial, Data, Length); -#endif - - CrcValue = ~Initial; - while (Length > 0) - { - CrcValue = CrcTable[(CrcValue ^ *Data) & 0xff] ^ (CrcValue >> 8); - Data++; - Length--; - } - return ~CrcValue; -} - -/* EOF */ _____
Deleted: trunk/reactos/lib/ntdll/rtl/dbgbuffer.c --- trunk/reactos/lib/ntdll/rtl/dbgbuffer.c 2005-09-07 21:25:42 UTC (rev 17730) +++ trunk/reactos/lib/ntdll/rtl/dbgbuffer.c 2005-09-08 00:09:32 UTC (rev 17731) @@ -1,424 +0,0 @@
-/* - * ReactOS kernel - * Copyright (C) 2004 ReactOS Team - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - */ -/* - * - * PROJECT: ReactOS kernel - * PURPOSE: User-mode Debug Buffer support - * FILE: lib/ntdll/rtl/dbgbuffer.c - * PROGRAMER: James Tabor - * Fixme: Add Process and Thread event pair support. - * Start Locks and Heap support. - * Test: Create remote thread to help query remote - * processes and use view mapping to read them. - * - */ - -/* INCLUDES *****************************************************************/ - -#include <ntdll.h> -#define NDEBUG -#include <debug.h> - -/* FUNCTIONS ***************************************************************/ - -/* - * @unimplemented - */ -PDEBUG_BUFFER STDCALL -RtlCreateQueryDebugBuffer(IN ULONG Size, - IN BOOLEAN EventPair) -{ - NTSTATUS Status; - PDEBUG_BUFFER Buf = NULL; - ULONG SectionSize = 100 * PAGE_SIZE; - - Status = NtAllocateVirtualMemory( NtCurrentProcess(), - (PVOID)&Buf, - 0, - &SectionSize, - MEM_COMMIT, - PAGE_READWRITE); - if (!NT_SUCCESS(Status)) - { - return NULL; - } - - Buf->SectionBase = Buf; - Buf->SectionSize = SectionSize; - - DPRINT("RtlCQDB: BA: %x BS: %d\n", Buf->SectionBase, Buf->SectionSize); - - return Buf; -} - -/* - * @unimplemented - */ -NTSTATUS STDCALL -RtlDestroyQueryDebugBuffer(IN PDEBUG_BUFFER Buf) -{ - NTSTATUS Status = STATUS_SUCCESS; - - if (NULL != Buf) - { - Status = NtFreeVirtualMemory( NtCurrentProcess(), - (PVOID)&Buf, - &Buf->SectionSize, - MEM_RELEASE); - } - if (!NT_SUCCESS(Status)) - { - DPRINT1("RtlDQDB: Failed to free VM!\n"); - } - return Status; -} - -/* - * Based on lib/epsapi/enum/modules.c by KJK::Hyperion. - * - */ -NTSTATUS STDCALL -RtlpQueryRemoteProcessModules(HANDLE ProcessHandle, - IN PMODULE_INFORMATION ModuleInformation OPTIONAL, - IN ULONG Size OPTIONAL, - OUT PULONG ReturnedSize) -{ - PROCESS_BASIC_INFORMATION pbiInfo; - PPEB_LDR_DATA ppldLdrData; - LDR_DATA_TABLE_ENTRY lmModule; - PLIST_ENTRY pleListHead; - PLIST_ENTRY pleCurEntry; - - PDEBUG_MODULE_INFORMATION ModulePtr = NULL; - NTSTATUS Status = STATUS_SUCCESS; - ULONG UsedSize = sizeof(ULONG); - ANSI_STRING AnsiString; - PCHAR p; - - DPRINT("RtlpQueryRemoteProcessModules Start\n"); - - /* query the process basic information (includes the PEB address) */ - Status = NtQueryInformationProcess ( ProcessHandle, - ProcessBasicInformation, - &pbiInfo, - sizeof(PROCESS_BASIC_INFORMATION), - NULL); - - if (!NT_SUCCESS(Status)) - { - /* failure */ - DPRINT("NtQueryInformationProcess 1 &x \n", Status); - return Status; - } - - if (ModuleInformation == NULL || Size == 0) - { - Status = STATUS_INFO_LENGTH_MISMATCH; - } - else - { - ModuleInformation->ModuleCount = 0; - ModulePtr = &ModuleInformation->ModuleEntry[0]; - Status = STATUS_SUCCESS; - } - - /* get the address of the PE Loader data */ - Status = NtReadVirtualMemory ( ProcessHandle, - &(pbiInfo.PebBaseAddress->Ldr), - &ppldLdrData, - sizeof(ppldLdrData), - NULL ); - - if (!NT_SUCCESS(Status)) - { - /* failure */ - DPRINT("NtReadVirtualMemory 1 %x \n", Status); - return Status; - } - - - /* head of the module list: the last element in the list will point to this */ - pleListHead = &ppldLdrData->InLoadOrderModuleList; - - /* get the address of the first element in the list */ - Status = NtReadVirtualMemory ( ProcessHandle, - &(ppldLdrData->InLoadOrderModuleList.Flink), - &pleCurEntry, - sizeof(pleCurEntry), - NULL ); - - if (!NT_SUCCESS(Status)) - { - /* failure */ - DPRINT("NtReadVirtualMemory 2 %x \n", Status); - return Status; - } - - while(pleCurEntry != pleListHead) - { - - UNICODE_STRING Unicode; - WCHAR Buffer[256 * sizeof(WCHAR)]; - - /* read the current module */ - Status = NtReadVirtualMemory ( ProcessHandle, - CONTAINING_RECORD(pleCurEntry, LDR_DATA_TABLE_ENTRY, InLoadOrderModuleList), - &lmModule, - sizeof(LDR_DATA_TABLE_ENTRY), - NULL ); - - /* Import module name from remote Process user space. */ - Unicode.Length = lmModule.FullDllName.Length; - Unicode.MaximumLength = lmModule.FullDllName.MaximumLength; - Unicode.Buffer = Buffer; - - Status = NtReadVirtualMemory ( ProcessHandle, - lmModule.FullDllName.Buffer, - Unicode.Buffer, - Unicode.Length, - NULL ); - - if (!NT_SUCCESS(Status)) - { - /* failure */ - DPRINT( "NtReadVirtualMemory 3 %x \n", Status); - return Status; - } - - DPRINT(" Module %wZ\n", &Unicode); - - if (UsedSize > Size) - { - Status = STATUS_INFO_LENGTH_MISMATCH; - } - else if (ModuleInformation != NULL) - { - ModulePtr->Reserved[0] = ModulePtr->Reserved[1] = 0; // FIXME: ?? - ModulePtr->Base = lmModule.DllBase; - ModulePtr->Size = lmModule.SizeOfImage; - ModulePtr->Flags = lmModule.Flags; - ModulePtr->Index = 0; // FIXME: ?? - ModulePtr->Unknown = 0; // FIXME: ?? - ModulePtr->LoadCount = lmModule.LoadCount; - - AnsiString.Length = 0; - AnsiString.MaximumLength = 256; - AnsiString.Buffer = ModulePtr->ImageName; - RtlUnicodeStringToAnsiString(&AnsiString, - &Unicode, - FALSE); - - p = strrchr(ModulePtr->ImageName, '\'); - if (p != NULL) - ModulePtr->ModuleNameOffset = p - ModulePtr->ImageName + 1; - else - ModulePtr->ModuleNameOffset = 0; - - ModulePtr++; - ModuleInformation->ModuleCount++; - } - UsedSize += sizeof(DEBUG_MODULE_INFORMATION); - - /* address of the next module in the list */ - pleCurEntry = lmModule.InLoadOrderModuleList.Flink; - } - - if (ReturnedSize != 0) - *ReturnedSize = UsedSize; - - DPRINT("RtlpQueryRemoteProcessModules End\n"); - - /* success */ - return (STATUS_SUCCESS); -} - -/* - * @unimplemented - */ -NTSTATUS STDCALL -RtlQueryProcessDebugInformation(IN ULONG ProcessId, - IN ULONG DebugInfoMask, - IN OUT PDEBUG_BUFFER Buf) -{ - NTSTATUS Status = STATUS_SUCCESS; - ULONG Pid = (ULONG) NtCurrentTeb()->Cid.UniqueProcess; - - Buf->InfoClassMask = DebugInfoMask; - Buf->SizeOfInfo = sizeof(DEBUG_BUFFER); - - DPRINT("QueryProcessDebugInformation Start\n"); - -/* - Currently ROS can not read-only from kenrel space, and doesn't - check for boundaries inside kernel space that are page protected - from every one but the kernel. aka page 0 - 2 - */ -if (ProcessId <= 1) - { - Status = STATUS_ACCESS_VIOLATION; - } -else -if (Pid == ProcessId) - { - if (DebugInfoMask & PDI_MODULES) - { - PMODULE_INFORMATION Mp; - ULONG ReturnSize = 0; - ULONG MSize; - - Mp = (PMODULE_INFORMATION)(Buf + Buf->SizeOfInfo); - - /* I like this better than the do & while loop. */ - Status = LdrQueryProcessModuleInformation( NULL, - 0 , - &ReturnSize); - Status = LdrQueryProcessModuleInformation( Mp, - ReturnSize , - &ReturnSize); - if (!NT_SUCCESS(Status)) - { - return Status; - } - - MSize = Mp->ModuleCount * (sizeof(MODULE_INFORMATION) + 8); - Buf->ModuleInformation = Mp; - Buf->SizeOfInfo = Buf->SizeOfInfo + MSize; - } - - if (DebugInfoMask & PDI_HEAPS) - { - PHEAP_INFORMATION Hp; - ULONG HSize; - - Hp = (PHEAP_INFORMATION)(Buf + Buf->SizeOfInfo); - HSize = sizeof(HEAP_INFORMATION); - if (DebugInfoMask & PDI_HEAP_TAGS) - { - } - if (DebugInfoMask & PDI_HEAP_BLOCKS) - { - } - Buf->HeapInformation = Hp; - Buf->SizeOfInfo = Buf->SizeOfInfo + HSize; - - } - - if (DebugInfoMask & PDI_LOCKS) - { - PLOCK_INFORMATION Lp; - ULONG LSize; - - Lp = (PLOCK_INFORMATION)(Buf + Buf->SizeOfInfo); - LSize = sizeof(LOCK_INFORMATION); - Buf->LockInformation = Lp; - Buf->SizeOfInfo = Buf->SizeOfInfo + LSize; - } - - DPRINT("QueryProcessDebugInformation end \n"); - DPRINT("QueryDebugInfo : %d\n", Buf->SizeOfInfo); -} -else -{ - HANDLE hProcess; - CLIENT_ID ClientId; - OBJECT_ATTRIBUTES ObjectAttributes; - - Buf->Unknown[0] = (ULONG)NtCurrentProcess(); - - ClientId.UniqueThread = 0; - ClientId.UniqueProcess = (HANDLE)ProcessId; - InitializeObjectAttributes(&ObjectAttributes, - NULL, - 0, - NULL, - NULL); - - Status = NtOpenProcess( &hProcess, - (PROCESS_ALL_ACCESS), - &ObjectAttributes, - &ClientId ); - if (!NT_SUCCESS(Status)) - { - return Status; - } - - if (DebugInfoMask & PDI_MODULES) - { - PMODULE_INFORMATION Mp; - ULONG ReturnSize = 0; - ULONG MSize; - - Mp = (PMODULE_INFORMATION)(Buf + Buf->SizeOfInfo); - - Status = RtlpQueryRemoteProcessModules( hProcess, - NULL, - 0, - &ReturnSize); - - Status = RtlpQueryRemoteProcessModules( hProcess, - Mp, - ReturnSize , - &ReturnSize); - if (!NT_SUCCESS(Status)) - { - return Status; - } - - MSize = Mp->ModuleCount * (sizeof(MODULE_INFORMATION) + 8); - Buf->ModuleInformation = Mp; - Buf->SizeOfInfo = Buf->SizeOfInfo + MSize; - } - - if (DebugInfoMask & PDI_HEAPS) - { - PHEAP_INFORMATION Hp; - ULONG HSize; - - Hp = (PHEAP_INFORMATION)(Buf + Buf->SizeOfInfo); - HSize = sizeof(HEAP_INFORMATION); - if (DebugInfoMask & PDI_HEAP_TAGS) - { - } - if (DebugInfoMask & PDI_HEAP_BLOCKS) - { - } - Buf->HeapInformation = Hp; - Buf->SizeOfInfo = Buf->SizeOfInfo + HSize; - - } - - if (DebugInfoMask & PDI_LOCKS) - { - PLOCK_INFORMATION Lp; - ULONG LSize; - - Lp = (PLOCK_INFORMATION)(Buf + Buf->SizeOfInfo); - LSize = sizeof(LOCK_INFORMATION); - Buf->LockInformation = Lp; - Buf->SizeOfInfo = Buf->SizeOfInfo + LSize; - } - - DPRINT("QueryProcessDebugInformation end \n"); - DPRINT("QueryDebugInfo : %d\n", Buf->SizeOfInfo); -} - return Status; - -} - -/* EOL */ _____
Deleted: trunk/reactos/lib/ntdll/rtl/handle.c --- trunk/reactos/lib/ntdll/rtl/handle.c 2005-09-07 21:25:42 UTC (rev 17730) +++ trunk/reactos/lib/ntdll/rtl/handle.c 2005-09-08 00:09:32 UTC (rev 17731) @@ -1,193 +0,0 @@
-/* $Id$ - * - * COPYRIGHT: See COPYING in the top level directory - * PROJECT: ReactOS kernel - * PURPOSE: Handle table - * FILE: lib/ntdll/rtl/handle.c - * PROGRAMER: Eric Kohl ekohl@rz-online.de - */ - -/* INCLUDES ******************************************************************/ - -#include <ntdll.h> -#define NDEBUG -#include <debug.h> - -/* FUNCTIONS *****************************************************************/ - -VOID STDCALL -RtlInitializeHandleTable(ULONG TableSize, - ULONG HandleSize, - PRTL_HANDLE_TABLE HandleTable) -{ - /* initialize handle table */ - memset(HandleTable, - 0, - sizeof(RTL_HANDLE_TABLE)); - HandleTable->MaximumNumberOfHandles = TableSize; - HandleTable->SizeOfHandleTableEntry = HandleSize; -} - - -/* - * @implemented - */ -VOID STDCALL -RtlDestroyHandleTable(PRTL_HANDLE_TABLE HandleTable) -{ - PVOID ArrayPointer; - ULONG ArraySize; - - /* free handle array */ - if (HandleTable->CommittedHandles) - { - ArrayPointer = (PVOID)HandleTable->CommittedHandles; - ArraySize = HandleTable->SizeOfHandleTableEntry * HandleTable->MaximumNumberOfHandles; - NtFreeVirtualMemory(NtCurrentProcess(), - &ArrayPointer, - &ArraySize, - MEM_RELEASE); - } -} - - -/* - * @implemented - */ -PRTL_HANDLE_TABLE_ENTRY STDCALL -RtlAllocateHandle(PRTL_HANDLE_TABLE HandleTable, - PULONG Index) -{ - PRTL_HANDLE_TABLE_ENTRY *pp_new, *pph, ph; - NTSTATUS Status; - PRTL_HANDLE_TABLE_ENTRY retval; - PVOID ArrayPointer; - ULONG ArraySize; - - pp_new = &HandleTable->FreeHandles; - - if (HandleTable->FreeHandles == NULL) - { - /* no free handle available */ - if (HandleTable->UnCommittedHandles == NULL) - { - /* allocate handle array */ - ArraySize = HandleTable->SizeOfHandleTableEntry * HandleTable->MaximumNumberOfHandles; - ArrayPointer = NULL; - - /* FIXME - only reserve handles here! */ - Status = NtAllocateVirtualMemory(NtCurrentProcess(), - (PVOID*)&ArrayPointer, - 0, - &ArraySize, - MEM_RESERVE | MEM_COMMIT, - PAGE_READWRITE); - if (!NT_SUCCESS(Status)) - return NULL; - - /* update handle array pointers */ - HandleTable->FreeHandles = (PRTL_HANDLE_TABLE_ENTRY)ArrayPointer; - HandleTable->MaxReservedHandles = (PRTL_HANDLE_TABLE_ENTRY)((ULONG_PTR)ArrayPointer + ArraySize); - HandleTable->CommittedHandles = (PRTL_HANDLE_TABLE_ENTRY)ArrayPointer; - HandleTable->UnCommittedHandles = (PRTL_HANDLE_TABLE_ENTRY)ArrayPointer; - } - - /* FIXME - should check if handles need to be committed */ - - /* build free list in handle array */ - ph = HandleTable->FreeHandles; - pph = pp_new; - while (ph < HandleTable->MaxReservedHandles) - { - *pph = ph; - pph = &ph->NextFree; - ph = (PRTL_HANDLE_TABLE_ENTRY)((ULONG_PTR)ph + HandleTable->SizeOfHandleTableEntry); - } - *pph = 0; - } - - /* remove handle from free list */ - retval = *pp_new; - *pp_new = retval->NextFree; - retval->NextFree = NULL; - - if (Index) - *Index = ((ULONG)((ULONG_PTR)retval - (ULONG_PTR)HandleTable->CommittedHandles) / - HandleTable->SizeOfHandleTableEntry); - - return retval; -} - - -/* - * @implemented - */ -BOOLEAN STDCALL -RtlFreeHandle(PRTL_HANDLE_TABLE HandleTable, - PRTL_HANDLE_TABLE_ENTRY Handle) -{ -#if DBG - /* check if handle is valid */ - if (RtlIsValidHandle(HandleTable, Handle)) - return FALSE; -#endif - - /* clear handle */ - memset(Handle, 0, HandleTable->SizeOfHandleTableEntry); - - /* add handle to free list */ - Handle->NextFree = HandleTable->FreeHandles; - HandleTable->FreeHandles = Handle; - - return TRUE; -} - - -/* - * @implemented - */ -BOOLEAN STDCALL -RtlIsValidHandle(PRTL_HANDLE_TABLE HandleTable, - PRTL_HANDLE_TABLE_ENTRY Handle) -{ - if ((HandleTable != NULL) - && (Handle >= HandleTable->CommittedHandles) - && (Handle < HandleTable->MaxReservedHandles) - && (Handle->Flags & RTL_HANDLE_VALID)) - return TRUE; - return FALSE; -} - - -/* - * @implemented - */ -BOOLEAN STDCALL -RtlIsValidIndexHandle(IN PRTL_HANDLE_TABLE HandleTable, - IN ULONG Index, - OUT PRTL_HANDLE_TABLE_ENTRY *Handle) -{ - PRTL_HANDLE_TABLE_ENTRY InternalHandle; - - DPRINT("RtlIsValidIndexHandle(HandleTable %p Index %x Handle %p)\n", HandleTable, Index, Handle); - - if (HandleTable == NULL) - return FALSE; - - DPRINT("Handles %p HandleSize %x\n", - HandleTable->CommittedHandles, HandleTable->SizeOfHandleTableEntry); - - InternalHandle = (PRTL_HANDLE_TABLE_ENTRY)((ULONG_PTR)HandleTable->CommittedHandles + - (HandleTable->SizeOfHandleTableEntry * Index)); - if (!RtlIsValidHandle(HandleTable, InternalHandle)) - return FALSE; - - DPRINT("InternalHandle %p\n", InternalHandle); - - if (Handle != NULL) - *Handle = InternalHandle; - - return TRUE; -} - -/* EOF */ _____
Modified: trunk/reactos/lib/ntdll/rtl/libsupp.c --- trunk/reactos/lib/ntdll/rtl/libsupp.c 2005-09-07 21:25:42 UTC (rev 17730) +++ trunk/reactos/lib/ntdll/rtl/libsupp.c 2005-09-08 00:09:32 UTC (rev 17731) @@ -1,14 +1,13 @@
-/* $Id$ - * +/* * COPYRIGHT: See COPYING in the top level directory * PROJECT: ReactOS kernel * FILE: lib/ntdll/rtl/libsup.c * PURPOSE: Rtl library support routines * PROGRAMMER: Gunnar Dalsnes - * UPDATE HISTORY: - * */
+/* INCLUDES *****************************************************************/ + #include <ntdll.h> #define NDEBUG #include <debug.h> @@ -16,13 +15,54 @@ /* FUNCTIONS ***************************************************************/
KPROCESSOR_MODE +STDCALL RtlpGetMode() { return UserMode; }
+PPEB +STDCALL +RtlpCurrentPeb(VOID) +{ + return NtCurrentPeb(); +}
+ +/* + * @implemented + */ +VOID STDCALL +RtlAcquirePebLock(VOID) +{ + PPEB Peb = NtCurrentPeb (); + Peb->FastPebLockRoutine (Peb->FastPebLock); +} + + +/* + * @implemented + */ +VOID STDCALL +RtlReleasePebLock(VOID) +{ + PPEB Peb = NtCurrentPeb (); + Peb->FastPebUnlockRoutine (Peb->FastPebLock); +} + +/* +* @implemented +*/ +ULONG +STDCALL +RtlGetNtGlobalFlags(VOID) +{ + PPEB pPeb = NtCurrentPeb(); + return pPeb->NtGlobalFlag; +} + PVOID +STDCALL RtlpAllocateMemory(UINT Bytes, ULONG Tag) { @@ -35,6 +75,7 @@
VOID +STDCALL RtlpFreeMemory(PVOID Mem, ULONG Tag) { _____
Deleted: trunk/reactos/lib/ntdll/rtl/math.c --- trunk/reactos/lib/ntdll/rtl/math.c 2005-09-07 21:25:42 UTC (rev 17730) +++ trunk/reactos/lib/ntdll/rtl/math.c 2005-09-08 00:09:32 UTC (rev 17731) @@ -1,221 +0,0 @@
-/* Math functions for i387. - Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by John C. Bowman bowman@ipp-garching.mpg.de, 1995. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. - - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ -#include <ntdll.h> -#define NDEBUG -#include <debug.h> - -double atan (double __x); -double ceil (double __x); -double cos (double __x); -double fabs (double __x); -double floor (double __x); -double log (double __x); -double __log2 (double __x); -double pow (double __x, double __y); -double sin (double __x); -double sqrt (double __x); -double tan (double __x); - -int _fltused = 0x9875; - -double atan (double __x) [truncated at 1000 lines; 7082 more skipped]