diff --git a/reactos/lib/ntdll/def/ntdll.def b/reactos/lib/ntdll/def/ntdll.def index c35c84f1c76..dada4ba4995 100644 --- a/reactos/lib/ntdll/def/ntdll.def +++ b/reactos/lib/ntdll/def/ntdll.def @@ -1,4 +1,4 @@ -; $Id: ntdll.def,v 1.43 2000/03/03 00:40:29 ekohl Exp $ +; $Id: ntdll.def,v 1.44 2000/03/09 00:13:37 ekohl Exp $ ; ; ReactOS Operating System ; @@ -223,6 +223,346 @@ NtWriteRequestData@24 NtWriteVirtualMemory@20 NtW32Call@20 NtYieldExecution@0 +;PfxFindPrefix +;PfxInitialize +;PfxInsertPrefix +;PfxRemovePrefix +;RtlAbortRXact +RtlAbsoluteToSelfRelativeSD@12 +RtlAcquirePebLock@0 +;RtlAcqureResourceExclusive +;RtlAcqureResourceShared +;RtlAddAccessAllowedAce +;RtlAddAccessDeniedAce +;RtlAddAce +;RtlAddActionToRXact +;RtlAtomToAtomTable +;RtlAddAttributeActionToRXact +;RtlAddAuditAccessToAce +;RtlAccCompoundAce +;RtlAdjustPrivilege +;RtlAllocateAndInitializeSid +;RtlAllocateHandle +RtlAllocateHeap@12 +RtlAnsiCharToUnicodeChar@4 +RtlAnsiStringToUnicodeSize@4 +RtlAnsiStringToUnicodeString@12 +RtlAppendAsciizToString@12 +RtlAppendStringToString@12 +RtlAppendUnicodeStringToString@12 +RtlAppendUnicodeToString@12 +;RtlApplyRXact +;RtlApplyRXactNoFlush +;RtlAreAllAccessesGranted +;RtlAreAnyAccessesGranted +RtlAreBitsClear@12 +RtlAreBitsSet@12 +;RtlAssert +;RtlCaptureStackBackTrace +RtlCharToInteger@12 +;RtlCheckRegistryKey +RtlClearAllBits@4 +RtlClearBits@12 +;RtlClosePropertySet +RtlCompactHeap@8 +RtlCompareMemory@12 +RtlCompareMemoryUlong@12 +RtlCompareString@12 +RtlCompareUnicodeString@12 +;RtlCompressBuffer +;RtlConsoleMultiByteToUnicodeN +;RtlConvertExclusiveToShared +RtlConvertLongToLargeInteger@4 +;RtlConvertSharedToExclusive +;RtlConvertSidToUnicodeString +;RtlConvertUiListToApiList +RtlConvertUlongToLargeInteger@4 +;RtlCopyLuid +;RtlCopyLuidAndAttributesArray +;RtlCopySecurityDescriptor +;RtlCopySid +;RtlCopySidAndAttributesArray +RtlCopyString@8 +RtlCopyUnicodeString@8 +;RtlCreateAcl +;RtlCreateAndSetSD +;RtlCreateAtomTable +RtlCreateEnvironment@8 +RtlCreateHeap@24 +RtlCreateProcessParameters@40 +;RtlCreatePropertySet +;RtlCreateQueryDebugBuffer +;RtlCreateRegistryKey +RtlCreateSecurityDescriptor@8 +;RtlCreateTagHeap +RtlCreateUnicodeString@8 +RtlCreateUnicodeStringFromAsciiz@8 +RtlCreateUserProcess@40 +;RtlCreateuserSecurityObject +RtlCreateUserThread@40 +;RtlCustomCPToUnicodeN +;RtlCutoverTimeToSystemTime +RtlDeNormalizeProcessParams@4 +;RtlDecompressBuffer +;RtlDecompressFragment +;RtlDelete +;RtlDeleteAce +;RtlDeleteAtomFromAtomTable +;RtlDeleteCriticalSection +;RtlDeleteElementGenericTable +;RtlDeleteNoSplay +;RtlDeleteRegistryValue +;RtlDeleteResource +;RtlDeleteSecurityObject +;RtlDestroyAtomTable +RtlDestroyEnvironment@4 +;RtlDestroyHandleTable +RtlDestroyHeap@4 +RtlDestroyProcessParameters@4 +;RtlDestroyQueryDebugBuffer +RtlDetermineDosPathNameType_U@4 +RtlDoesFileExists_U@4 +RtlDosPathNameToNtPathName_U@16 +RtlDosSearchPath_U@24 +RtlDowncaseUnicodeString@12 +;RtlDumpResource +;RtlEmptyAtomTable +RtlEnlargedIntegerMultiply@8 +RtlEnlargedUnsignedDivide@16 +RtlEnlargedUnsignedMultiply@8 +;RtlEnterCriticalSection +;RtlEnumProcessHeaps +;RtlEnumerateGenericTable +;RtlEnumerateGenericTableWithoutSplaying +;RtlEnumerateProperties +;RtlEqualComputerName +;RtlEqualDomainName +;RtlEqualLuid +;RtlEqualPrefixSid +;RtlEqualSid +RtlEqualString@12 +RtlEqualUnicodeString@12 +RtlEraseUnicodeString@4 +RtlExpandEnvironmentStrings_U@16 +;RtlExtendHeap +RtlExtendedIntegerMultiply@12 +RtlExtendedLargeIntegerDivide@16 +RtlExtendedMagicDivide@20 +RtlFillMemory@12 +RtlFillMemoryUlong@12 +RtlFindClearBits@12 +RtlFindClearBitsAndSet@12 +RtlFindLongestRunClear@8 +RtlFindLongestRunSet@8 +;RtlFindMessage +RtlFindSetBits@12 +RtlFindSetBitsAndClear@12 +;RtlFirstFreeAce +;RtlFlushPropertySet +;RtlFormatCurrentUserKeyPath +;RtlFormatMessage +RtlFreeAnsiString@4 +;RtlFreeHandle +RtlFreeHeap@12 +RtlFreeOemString@4 +;RtlFreeSid +RtlFreeUnicodeString@4 +;RtlFreeUserThreadStack +;RtlGenerate8dot3Name +;RtlGetAce +;RtlGetCallersAddress +;RtlGetCompressionWorkSpaceSize +;RtlGetControlSecurityDescriptor +RtlGetCurrentDirectory_U@8 +RtlGetDaclSecurityDescriptor@16 +;RtlGetElementGenericTable +RtlGetFullPathName_U@16 +RtlGetGroupSecurityDescriptor@12 +RtlGetLongestNtPathLength@0 +;RtlGetNtGlobalFlags +;RtlGetNtProductType +RtlGetOwnerSecurityDescriptor@12 +;RtlGetProcessHeaps +RtlGetProcessHeap@0 +;RtlGetSaclSecurityDescriptor +;RtlGetUserInfoHeap +;RtlGuidToPropertySetName +;RtlIdentifierAuthoritySid +;RtlImageDirectoryEntryToData +;RtlImageNtHeader +;RtlImageRvaToSection +;RtlImageRvaToVa +;RtlImpersonateSelf +RtlInitAnsiString@8 +;RtlInitcodePageTable +;RtlInitNlsTables +RtlInitString@8 +RtlInitUnicodeString@8 +;RtlInitializeAtomPackage +RtlInitializeBitMap@12 +RtlInitializeContext@20 +;RtlInitializeCriticalSection +;RtlInitializeGenericTable +;RtlInitializeHandleTable +;RtlInitializeRXact +;RtlInitializeResource +;RtlInitializeSid +;RtlInsertElementGenericTable +RtlIntegerToChar@16 +RtlIntegerToUnicodeString@12 +RtlIsDosDeviceName_U@4 +;RtlIsGenericTableEmpty +RtlIsNameLegalDOS8Dot3@12 +;RtlIsTextUnicode +;RtlIsValidHandle +;RtlIsValidIndexHandle +RtlLargeIntegerAdd@16 +RtlLargeIntegerArithmeticShift@12 +RtlLargeIntegerDivide@20 +RtlLargeIntegerNegate@8 +RtlLargeIntegerShiftLeft@12 +RtlLargeIntegerShiftRight@12 +RtlLargeIntegerSubtract@16 +;RtlLargeIntegerToChar +;RtlLeaveCriticalSection +;RtlLengthRequiredSid +RtlLengthSecurityDescriptor@4 +;RtlLengthSid +;RtlLocalTimeToSystemTime +RtlLockHeap@4 +;RtlLookupAtomInAtomTable +;RtlLookupElementGenericTable +;RtlMakeSelfRelativeSD +;RtlMapGenericMask +RtlMoveMemory@12 +RtlMultiByteToUnicodeN@20 +RtlMultiByteToUnicodeSize@12 +;RtlNewInstanceSecurityObject +;RtlNewSecurityGrantedAccess +;RtlNewSecurityObject +RtlNormalizeProcessParams@4 +RtlNtStatusToDosError@4 +RtlNtStatusToPsxErrno@4 +;RtlNumberGenericTableElements +RtlNumberOfClearBits@4 +RtlNumberOfSetBits@4 +RtlOemStringToUnicodeSize@4 +RtlOemStringToUnicodeString@12 +RtlOemToUnicodeN@20 +;RtlOpenCurrentUser +;RtlPcToFileHeader +;RtlPinAtomInAtomTable +;RtlPrefixString +;RtlPrefixUnicodeString +;RtlPropertySetNameToGuid +;RtlProtectHeap +;RtlQueryAtomInAtomTable +RtlQueryEnvironmentVariable_U@12 +;RtlQueryInformationAcl +;RtlQueryProcessBackTraceInformation +;RtlQueryProcessDebugInformation +;RtlQueryProcessHeapInformation +;RtlQueryProcessLockInformation +;RtlQueryProperties +;RtlQueryPropertyNames +;RtlQueryPropertySet +;RtlQueryRegistryValues +;RtlQuerySecutityObject +;RtlQueryTagHeap +;RtlQueryTimeZoneInformation +;RtlRaiseException +;RtlRaiseStatus +;RtlRandom +RtlReAllocateHeap@16 +;RtlRealPredecessor +;RtlRealSuccessor +RtlReleasePebLock@0 +;RtlReleaseResource +;RtlRemoteCall +;RtlResetRtlTranslations +;RtlRunDecodeUnicodeString +;RtlRunEncodeUnicodeString +;RtlSecondsSince1970ToTime +;RtlSecondsSince1980ToTime +;RtlSelfRelatedToAbsoluteSD +RtlSetAllBits@4 +;RtlSetAttributesSecurityDescriptor +RtlSetBits@12 +RtlSetCurrentDirectory_U@4 +RtlSetCurrentEnvironment@8 +RtlSetDaclSecurityDescriptor@16 +RtlSetEnvironmentVariable@12 +RtlSetGroupSecurityDescriptor@12 +;RtlSetInformationAcl +RtlSetOwnerSecurityDescriptor@12 +;RtlSetProperties +;RtlSetPropertyNames +;RtlSetPropertySetClassId +;RtlSetSaclSecurityDescriptor +;RtlSetSecurityObject +;RtlSetTimeZoneInformation +;RtlSetUnicodeCallouts +;RtlSetUserFlagsHeap +;RtlSetUserValueHeap +RtlSizeHeap@12 +;RtlSplay +;RtlStartRXact +;RtlSubAuthorityCountSid +;RtlSubAuthoritySid +;RtlSubtreePredecessor +;RtlSubtreeSuccessor +;RtlSystemTimeToLocalTime +;RtlTimeFieldsToTime +;RtlTimeToElapsedTimeFields +;RtlTimeToSecondsSince1970 +;RtlTimeToSecondsSince1980 +;RtlTimeToTimeFields +;RtlTryEnterCriticalSection +RtlUnicodeStringToAnsiSize@4 +RtlUnicodeStringToAnsiString@12 +RtlUnicodeStringToCountedOemString@12 +RtlUnicodeStringToInteger@12 +RtlUnicodeStringToOemSize@4 +RtlUnicodeStringToOemString@12 +;RtlUnicodeToCustomCPN +RtlUnicodeToMultiByteN@20 +RtlUnicodeToMultiByteSize@12 +RtlUnicodeToOemN@20 +;RtlUniform +RtlUnlockHeap@4 +RtlUnwind@0 +RtlUpcaseUnicodeChar@4 +RtlUpcaseUnicodeString@12 +RtlUpcaseUnicodeStringToAnsiString@12 +RtlUpcaseUnicodeStringToCountedOemString@12 +RtlUpcaseUnicodeStringToOemString@12 +;RtlUpcaseUnicodeToCustomCPN +RtlUpcaseUnicodeToMultiByteN@20 +RtlUpcaseUnicodeToOemN@20 +RtlUpperChar@4 +RtlUpperString@8 +;RtlUsageHeap +;RtlValidAcl +RtlValidSecurityDescriptor@4 +;RtlValidSid +RtlValidateHeap@12 +;RtlValidateProcessHeaps +;RtlWalkHeap +;RtlWriteRegistryValue +;RtlZeroHeap +RtlZeroMemory@8 +;RtlpNtCreateKey +;RtlpNtEnumerateSubKey +;RtlpNtMakeTemporaryKey +;RtlpNtOpenKey +;RtlpNtQueryValueKey +;RtlpNtSetValueKey +;RtlpUnWaitCriticalSection +;RtlpWaitForCriticalSection +RtlxAnsiStringToUnicodeSize@4 +RtlxOemStringToUnicodeSize@4 +RtlxUnicodeStringToAnsiSize@4 +RtlxUnicodeStringToOemSize@4 ZwAcceptConnectPort@24 ZwAccessCheck@32 ZwAccessCheckAndAuditAlarm@44 @@ -433,127 +773,6 @@ ZwWriteRequestData@24 ZwWriteVirtualMemory@20 ZwW32Call@20 ZwYieldExecution@0 -RtlAbsoluteToSelfRelativeSD@12 -RtlAcquirePebLock@0 -RtlAllocateHeap@12 -RtlAnsiCharToUnicodeChar@4 -RtlAnsiStringToUnicodeSize@4 -RtlAnsiStringToUnicodeString@12 -RtlAppendAsciizToString@12 -RtlAppendStringToString@12 -RtlAppendUnicodeStringToString@12 -RtlAppendUnicodeToString@12 -RtlCharToInteger@12 -RtlCreateEnvironment@8 -RtlCreateHeap@24 -RtlCreateProcessParameters@40 -RtlCreateSecurityDescriptor@8 -RtlCreateUnicodeString@8 -RtlCreateUnicodeStringFromAsciiz@8 -RtlCreateUserProcess@40 -RtlCreateUserThread@40 -RtlCompactHeap@8 -RtlCompareString@12 -RtlCompareUnicodeString@12 -RtlConvertLongToLargeInteger@4 -RtlConvertUlongToLargeInteger@4 -;RtlCopyMemory@12 -;RtlCopyMemory -RtlCopyString@8 -RtlCopyUnicodeString@8 -RtlDeNormalizeProcessParams@4 -RtlDestroyEnvironment@4 -RtlDestroyHeap@4 -RtlDestroyProcessParameters@4 -RtlDetermineDosPathNameType_U@4 -RtlDoesFileExists_U@4 -RtlDosPathNameToNtPathName_U@16 -RtlDosSearchPath_U@24 -RtlDowncaseUnicodeString@12 -RtlEnlargedIntegerMultiply@8 -RtlEnlargedUnsignedDivide@16 -RtlEnlargedUnsignedMultiply@8 -RtlEqualString@12 -RtlEqualUnicodeString@12 -RtlEraseUnicodeString@4 -RtlExpandEnvironmentStrings_U@16 -RtlExtendedIntegerMultiply@12 -RtlExtendedLargeIntegerDivide@16 -RtlExtendedMagicDivide@20 -RtlFillMemory@12 -RtlFreeAnsiString@4 -RtlFreeHeap@12 -RtlFreeOemString@4 -RtlFreeUnicodeString@4 -RtlGetCurrentDirectory_U@8 -RtlGetDaclSecurityDescriptor@16 -RtlGetFullPathName_U@16 -RtlGetGroupSecurityDescriptor@12 -RtlGetLongestNtPathLength@0 -RtlGetOwnerSecurityDescriptor@12 -RtlGetProcessHeap@0 -RtlInitAnsiString@8 -RtlInitString@8 -RtlInitUnicodeString@8 -RtlInitializeContext@20 -RtlIntegerToChar@16 -RtlIntegerToUnicodeString@12 -RtlIsDosDeviceName_U@4 -RtlIsNameLegalDOS8Dot3@12 -RtlLargeIntegerAdd@16 -RtlLargeIntegerArithmeticShift@12 -RtlLargeIntegerDivide@20 -RtlLargeIntegerNegate@8 -RtlLargeIntegerShiftLeft@12 -RtlLargeIntegerShiftRight@12 -RtlLargeIntegerSubtract@16 -RtlLengthSecurityDescriptor@4 -RtlLockHeap@4 -RtlMoveMemory@12 -RtlMultiByteToUnicodeN@20 -RtlNormalizeProcessParams@4 -RtlNtStatusToDosError@4 -RtlNtStatusToPsxErrno@4 -RtlOemStringToUnicodeSize@4 -RtlOemStringToUnicodeString@12 -RtlOemToUnicodeN@20 -RtlQueryEnvironmentVariable_U@12 -RtlReAllocateHeap@16 -RtlReleasePebLock@0 -RtlSetCurrentDirectory_U@4 -RtlSetCurrentEnvironment@8 -RtlSetDaclSecurityDescriptor@16 -RtlSetEnvironmentVariable@12 -RtlSetGroupSecurityDescriptor@12 -RtlSetOwnerSecurityDescriptor@12 -RtlSizeHeap@12 -RtlUnlockHeap@4 -RtlUnicodeStringToAnsiSize@4 -RtlUnicodeStringToAnsiString@12 -RtlUnicodeStringToCountedOemString@12 -RtlUnicodeStringToInteger@12 -RtlUnicodeStringToOemSize@4 -RtlUnicodeStringToOemString@12 -RtlUnicodeToMultiByteN@20 -RtlUnicodeToMultiByteSize@12 -RtlUnicodeToOemN@20 -RtlUnwind@0 -RtlUpcaseUnicodeChar@4 -RtlUpcaseUnicodeString@12 -RtlUpcaseUnicodeStringToAnsiString@12 -RtlUpcaseUnicodeStringToCountedOemString@12 -RtlUpcaseUnicodeStringToOemString@12 -RtlUpcaseUnicodeToMultiByteN@20 -RtlUpcaseUnicodeToOemN@20 -RtlUpperChar@4 -RtlUpperString@8 -RtlValidSecurityDescriptor@4 -RtlValidateHeap@12 -RtlZeroMemory@8 -RtlxAnsiStringToUnicodeSize@4 -RtlxOemStringToUnicodeSize@4 -RtlxUnicodeStringToAnsiSize@4 -RtlxUnicodeStringToOemSize@4 __isascii __iscsym __iscsymf diff --git a/reactos/lib/ntdll/def/ntdll.edf b/reactos/lib/ntdll/def/ntdll.edf index 90172c3f107..bddd921669b 100644 --- a/reactos/lib/ntdll/def/ntdll.edf +++ b/reactos/lib/ntdll/def/ntdll.edf @@ -1,4 +1,4 @@ -; $Id: ntdll.edf,v 1.32 2000/03/03 00:40:29 ekohl Exp $ +; $Id: ntdll.edf,v 1.33 2000/03/09 00:13:37 ekohl Exp $ ; ; ReactOS Operating System ; @@ -223,6 +223,141 @@ NtWriteRequestData=NtWriteRequestData@24 NtWriteVirtualMemory=NtWriteVirtualMemory@20 NtW32Call=NtW32Call@20 NtYieldExecution=NtYieldExecution@0 +RtlAbsoluteToSelfRelativeSD=RtlAbsoluteToSelfRelativeSD@12 +RtlAcquirePebLock=RtlAcquirePebLock@0 +RtlAllocateHeap=RtlAllocateHeap@12 +RtlAnsiCharToUnicodeChar=RtlAnsiCharToUnicodeChar@4 +RtlAnsiStringToUnicodeSize=RtlAnsiStringToUnicodeSize@4 +RtlAnsiStringToUnicodeString=RtlAnsiStringToUnicodeString@12 +RtlAppendUnicodeStringToString=RtlAppendUnicodeStringToString@8 +RtlAppendUnicodeToString=RtlAppendUnicodeToString@8 +RtlAreBitsClear=RtlAreBitsClear@12 +RtlAreBitsSet=RtlAreBitsSet@12 +RtlCharToInteger=RtlCharToInteger@12 +RtlClearAllBits=RtlClearAllBits@4 +RtlClearBits=RtlClearBits@12 +RtlCompactHeap=RtlCompactHeap@8 +RtlCompareMemory=RtlCompareMemory@12 +RtlCompareMemoryUlong=RtlCompareMemoryUlong@12 +RtlCompareString=RtlCompareString@12 +RtlCompareUnicodeString=RtlCompareUnicodeString@12 +RtlConvertLongToLargeInteger=RtlConvertLongToLargeInteger@4 +RtlConvertUlongToLargeInteger=RtlConvertUlongToLargeInteger@4 +RtlCopyString=RtlCopyString@8 +RtlCopyUnicodeString=RtlCopyUnicodeString@8 +RtlCreateEnvironment=RtlCreateEnvironment@8 +RtlCreateHeap=RtlCreateHeap@24 +RtlCreateProcessParameters=RtlCreateProcessParameters@40 +RtlCreateSecurityDescriptor=RtlCreateSecurityDescriptor@8 +RtlCreateUnicodeString=RtlCreateUnicodeString@8 +RtlCreateUnicodeStringFromAsciiz=RtlCreateUnicodeStringFromAsciiz@8 +RtlCreateUserProcess=RtlCreateUserProcess@40 +RtlCreateUserThread=RtlCreateUserThread@40 +RtlDeNormalizeProcessParams=RtlDeNormalizeProcessParams@4 +RtlDestroyEnvironment=RtlDestroyEnvironment@4 +RtlDestroyHeap=RtlDestroyHeap@4 +RtlDestroyProcessParameters=RtlDestroyProcessParameters@4 +RtlDetermineDosPathNameType_U=RtlDetermineDosPathNameType_U@4 +RtlDoesFileExists_U=RtlDoesFileExists_U@4 +RtlDosPathNameToNtPathName_U=RtlDosPathNameToNtPathName_U@16 +RtlDosSearchPath_U=RtlDosSearchPath_U@24 +RtlDowncaseUnicodeString=RtlDowncaseUnicodeString@12 +RtlEnlargedIntegerMultiply=RtlEnlargedIntegerMultiply@8 +RtlEnlargedUnsignedDivide=RtlEnlargedUnsignedDivide@16 +RtlEnlargedUnsignedMultiply=RtlEnlargedUnsignedMultiply@8 +RtlEqualString=RtlEqualString@12 +RtlEqualUnicodeString=RtlEqualUnicodeString@12 +RtlEraseUnicodeString=RtlEraseUnicodeString@4 +RtlExpandEnvironmentStrings_U=RtlExpandEnvironmentStrings_U@16 +RtlExtendedIntegerMultiply=RtlExtendedIntegerMultiply@12 +RtlExtendedLargeIntegerDivide=RtlExtendedLargeIntegerDivide@16 +RtlExtendedMagicDivide=RtlExtendedMagicDivide@20 +RtlFillMemory=RtlFillMemory@12 +RtlFillMemoryUlong=RtlFillMemoryUlong@12 +RtlFindClearBits=RtlFindClearBits@12 +RtlFindClearBitsAndSet=RtlFindClearBitsAndSet@12 +RtlFindLongestRunClear=RtlFindLongestRunClear@8 +RtlFindLongestRunSet=RtlFindLongestRunSet@8 +RtlFindSetBits=RtlFindSetBits@12 +RtlFindSetBitsAndClear=RtlFindSetBitsAndClear@12 +RtlFreeAnsiString=RtlFreeAnsiString@4 +RtlFreeHeap=RtlFreeHeap@12 +RtlFreeUnicodeString=RtlFreeUnicodeString@4 +RtlGetCurrentDirectory_U=RtlGetCurrentDirectory_U@8 +RtlGetDaclSecurityDescriptor=RtlGetDaclSecurityDescriptor@16 +RtlGetFullPathName_U=RtlGetFullPathName_U@16 +RtlGetGroupSecurityDescriptor=RtlGetGroupSecurityDescriptor@12 +RtlGetLongestNtPathLength=RtlGetLongestNtPathLength@0 +RtlGetOwnerSecurityDescriptor=RtlGetOwnerSecurityDescriptor@12 +RtlGetProcessHeap=RtlGetProcessHeap@0 +RtlInitAnsiString=RtlInitAnsiString@8 +RtlInitString=RtlInitString@8 +RtlInitUnicodeString=RtlInitUnicodeString@8 +RtlInitializeBitMap=RtlInitializeBitMap@12 +RtlInitializeContext=RtlInitializeContext@20 +RtlIntegerToChar=RtlIntegerToChar@16 +RtlIntegerToUnicodeString=RtlIntegerToUnicodeString@12 +RtlIsDosDeviceName_U=RtlIsDosDeviceName_U@4 +RtlIsNameLegalDOS8Dot3=RtlIsNameLegalDOS8Dot3@12 +RtlLargeIntegerAdd=RtlLargeIntegerAdd@16 +RtlLargeIntegerArithmeticShift=RtlLargeIntegerArithmeticShift@12 +RtlLargeIntegerDivide=RtlLargeIntegerDivide@20 +RtlLargeIntegerNegate=RtlLargeIntegerNegate@8 +RtlLargeIntegerShiftLeft=RtlLargeIntegerShiftLeft@12 +RtlLargeIntegerShiftRight=RtlLargeIntegerShiftRight@12 +RtlLargeIntegerSubtract=RtlLargeIntegerSubtract@16 +RtlLengthSecurityDescriptor=RtlLengthSecurityDescriptor@4 +RtlLockHeap=RtlLockHeap@4 +RtlMoveMemory=RtlMoveMemory@12 +RtlMultiByteToUnicodeN=RtlMultiByteToUnicodeN@20 +RtlMultiByteToUnicodeSize=RtlMultiByteToUnicodeSize@12 +RtlNormalizeProcessParams=RtlNormalizeProcessParams@4 +RtlNtStatusToDosError=RtlNtStatusToDosError@4 +RtlNtStatusToPsxErrno=RtlNtStatusToPsxErrno@4 +RtlNumberOfClearBits=RtlNumberOfClearBits@4 +RtlNumberOfSetBits=RtlNumberOfSetBits@4 +RtlOemStringToUnicodeSize=RtlOemStringToUnicodeSize@4 +RtlOemStringToUnicodeString=RtlOemStringToUnicodeString@12 +RtlOemToUnicodeN=RtlOemToUnicodeN@20 +RtlQueryEnvironmentVariable_U=RtlQueryEnvironmentVariable_U@12 +RtlReAllocateHeap=RtlReAllocateHeap@16 +RtlReleasePebLock=RtlReleasePebLock@0 +RtlSetAllBits=RtlSetAllBits@4 +RtlSetBits=RtlSetBits@12 +RtlSetCurrentDirectory_U=RtlSetCurrentDirectory_U@4 +RtlSetCurrentEnvironment=RtlSetCurrentEnvironment@8 +RtlSetDaclSecurityDescriptor=RtlSetDaclSecurityDescriptor@16 +RtlSetEnvironmentVariable=RtlSetEnvironmentVariable@12 +RtlSetGroupSecurityDescriptor=RtlSetGroupSecurityDescriptor@12 +RtlSetOwnerSecurityDescriptor=RtlSetOwnerSecurityDescriptor@12 +RtlSizeHeap=RtlSizeHeap@12 +RtlUnicodeStringToAnsiSize=RtlUnicodeStringToAnsiSize@4 +RtlUnicodeStringToAnsiString=RtlUnicodeStringToAnsiString@12 +RtlUnicodeStringToCountedOemString=RtlUnicodeStringToCountedOemString@12 +RtlUnicodeStringToInteger=RtlUnicodeStringToInteger@12 +RtlUnicodeStringToOemSize=RtlUnicodeStringToOemSize@4 +RtlUnicodeStringToOemString=RtlUnicodeStringToOemString@12 +RtlUnicodeToMultiByteN=RtlUnicodeToMultiByteN@20 +RtlUnicodeToMultiByteSize=RtlUnicodeToMultiByteSize@12 +RtlUnicodeToOemN=RtlUnicodeToOemN@20 +RtlUnlockHeap=RtlUnlockHeap@4 +RtlUnwind=RtlUnwind@0 +RtlUpcaseUnicodeChar=RtlUpcaseUnicodeChar@4 +RtlUpcaseUnicodeString=RtlUpcaseUnicodeString@12 +RtlUpcaseUnicodeStringToAnsiString=RtlUpcaseUnicodeStringToAnsiString@12 +RtlUpcaseUnicodeStringToCountedOemString=RtlUpcaseUnicodeStringToCountedOemString@12 +RtlUpcaseUnicodeStringToOemString=RtlUpcaseUnicodeStringToOemString@12 +RtlUpcaseUnicodeToMultiByteN=RtlUpcaseUnicodeToMultiByteN@20 +RtlUpcaseUnicodeToOemN=RtlUpcaseUnicodeToOemN@20 +RtlUpperChar=RtlUpperChar@4 +RtlUpperString=RtlUpperString@8 +RtlValidSecurityDescriptor=RtlValidSecurityDescriptor@4 +RtlValidateHeap=RtlValidateHeap@12 +RtlZeroMemory=RtlZeroMemory@8 +RtlxAnsiStringToUnicodeSize=RtlxAnsiStringToUnicodeSize@4 +RtlxOemStringToUnicodeSize=RtlxOemStringToUnicodeSize@4 +RtlxUnicodeStringToAnsiSize=RtlxUnicodeStringToAnsiSize@4 +RtlxUnicodeStringToOemSize=RtlxUnicodeStringToOemSize@4 ZwAcceptConnectPort=ZwAcceptConnectPort@24 ZwAccessCheck=ZwAccessCheck@32 ZwAccessCheckAndAuditAlarm=ZwAccessCheckAndAuditAlarm@44 @@ -433,122 +568,6 @@ ZwWriteRequestData=ZwWriteRequestData@24 ZwWriteVirtualMemory=ZwWriteVirtualMemory@20 ZwW32Call=ZwW32Call@20 ZwYieldExecution=ZwYieldExecution@0 -RtlAbsoluteToSelfRelativeSD=RtlAbsoluteToSelfRelativeSD@12 -RtlAcquirePebLock=RtlAcquirePebLock@0 -RtlAllocateHeap=RtlAllocateHeap@12 -RtlAnsiCharToUnicodeChar=RtlAnsiCharToUnicodeChar@4 -RtlAnsiStringToUnicodeSize=RtlAnsiStringToUnicodeSize@4 -RtlAnsiStringToUnicodeString=RtlAnsiStringToUnicodeString@12 -RtlAppendUnicodeStringToString=RtlAppendUnicodeStringToString@8 -RtlAppendUnicodeToString=RtlAppendUnicodeToString@8 -RtlCharToInteger=RtlCharToInteger@12 -RtlCreateEnvironment=RtlCreateEnvironment@8 -RtlCreateHeap=RtlCreateHeap@24 -RtlCreateProcessParameters=RtlCreateProcessParameters@40 -RtlCreateSecurityDescriptor=RtlCreateSecurityDescriptor@8 -RtlCreateUnicodeString=RtlCreateUnicodeString@8 -RtlCreateUnicodeStringFromAsciiz=RtlCreateUnicodeStringFromAsciiz@8 -RtlCreateUserProcess=RtlCreateUserProcess@40 -RtlCreateUserThread=RtlCreateUserThread@40 -RtlCompactHeap=RtlCompactHeap@8 -RtlCompareString=RtlCompareString@12 -RtlCompareUnicodeString=RtlCompareUnicodeString@12 -RtlConvertLongToLargeInteger=RtlConvertLongToLargeInteger@4 -RtlConvertUlongToLargeInteger=RtlConvertUlongToLargeInteger@4 -RtlCopyString=RtlCopyString@8 -RtlCopyUnicodeString=RtlCopyUnicodeString@8 -RtlDeNormalizeProcessParams=RtlDeNormalizeProcessParams@4 -RtlDestroyEnvironment=RtlDestroyEnvironment@4 -RtlDestroyHeap=RtlDestroyHeap@4 -RtlDestroyProcessParameters=RtlDestroyProcessParameters@4 -RtlDetermineDosPathNameType_U=RtlDetermineDosPathNameType_U@4 -RtlDoesFileExists_U=RtlDoesFileExists_U@4 -RtlDosPathNameToNtPathName_U=RtlDosPathNameToNtPathName_U@16 -RtlDosSearchPath_U=RtlDosSearchPath_U@24 -RtlDowncaseUnicodeString=RtlDowncaseUnicodeString@12 -RtlEnlargedIntegerMultiply=RtlEnlargedIntegerMultiply@8 -RtlEnlargedUnsignedDivide=RtlEnlargedUnsignedDivide@16 -RtlEnlargedUnsignedMultiply=RtlEnlargedUnsignedMultiply@8 -RtlEqualString=RtlEqualString@12 -RtlEqualUnicodeString=RtlEqualUnicodeString@12 -RtlEraseUnicodeString=RtlEraseUnicodeString@4 -RtlExpandEnvironmentStrings_U=RtlExpandEnvironmentStrings_U@16 -RtlExtendedIntegerMultiply=RtlExtendedIntegerMultiply@12 -RtlExtendedLargeIntegerDivide=RtlExtendedLargeIntegerDivide@16 -RtlExtendedMagicDivide=RtlExtendedMagicDivide@20 -RtlFillMemory=RtlFillMemory@12 -RtlFreeAnsiString=RtlFreeAnsiString@4 -RtlFreeHeap=RtlFreeHeap@12 -RtlFreeUnicodeString=RtlFreeUnicodeString@4 -RtlGetCurrentDirectory_U=RtlGetCurrentDirectory_U@8 -RtlGetDaclSecurityDescriptor=RtlGetDaclSecurityDescriptor@16 -RtlGetFullPathName_U=RtlGetFullPathName_U@16 -RtlGetGroupSecurityDescriptor=RtlGetGroupSecurityDescriptor@12 -RtlGetLongestNtPathLength=RtlGetLongestNtPathLength@0 -RtlGetOwnerSecurityDescriptor=RtlGetOwnerSecurityDescriptor@12 -RtlGetProcessHeap=RtlGetProcessHeap@0 -RtlInitAnsiString=RtlInitAnsiString@8 -RtlInitString=RtlInitString@8 -RtlInitUnicodeString=RtlInitUnicodeString@8 -RtlInitializeContext=RtlInitializeContext@20 -RtlIntegerToChar=RtlIntegerToChar@16 -RtlIntegerToUnicodeString=RtlIntegerToUnicodeString@12 -RtlIsDosDeviceName_U=RtlIsDosDeviceName_U@4 -RtlIsNameLegalDOS8Dot3=RtlIsNameLegalDOS8Dot3@12 -RtlLargeIntegerAdd=RtlLargeIntegerAdd@16 -RtlLargeIntegerArithmeticShift=RtlLargeIntegerArithmeticShift@12 -RtlLargeIntegerDivide=RtlLargeIntegerDivide@20 -RtlLargeIntegerNegate=RtlLargeIntegerNegate@8 -RtlLargeIntegerShiftLeft=RtlLargeIntegerShiftLeft@12 -RtlLargeIntegerShiftRight=RtlLargeIntegerShiftRight@12 -RtlLargeIntegerSubtract=RtlLargeIntegerSubtract@16 -RtlLengthSecurityDescriptor=RtlLengthSecurityDescriptor@4 -RtlLockHeap=RtlLockHeap@4 -RtlMoveMemory=RtlMoveMemory@12 -RtlMultiByteToUnicodeN=RtlMultiByteToUnicodeN@20 -RtlNormalizeProcessParams=RtlNormalizeProcessParams@4 -RtlNtStatusToDosError=RtlNtStatusToDosError@4 -RtlNtStatusToPsxErrno=RtlNtStatusToPsxErrno@4 -RtlOemStringToUnicodeSize=RtlOemStringToUnicodeSize@4 -RtlOemStringToUnicodeString=RtlOemStringToUnicodeString@12 -RtlOemToUnicodeN=RtlOemToUnicodeN@20 -RtlQueryEnvironmentVariable_U=RtlQueryEnvironmentVariable_U@12 -RtlReAllocateHeap=RtlReAllocateHeap@16 -RtlReleasePebLock=RtlReleasePebLock@0 -RtlSetCurrentDirectory_U=RtlSetCurrentDirectory_U@4 -RtlSetCurrentEnvironment=RtlSetCurrentEnvironment@8 -RtlSetDaclSecurityDescriptor=RtlSetDaclSecurityDescriptor@16 -RtlSetEnvironmentVariable=RtlSetEnvironmentVariable@12 -RtlSetGroupSecurityDescriptor=RtlSetGroupSecurityDescriptor@12 -RtlSetOwnerSecurityDescriptor=RtlSetOwnerSecurityDescriptor@12 -RtlSizeHeap=RtlSizeHeap@12 -RtlUnlockHeap=RtlUnlockHeap@4 -RtlUnicodeStringToAnsiSize=RtlUnicodeStringToAnsiSize@4 -RtlUnicodeStringToAnsiString=RtlUnicodeStringToAnsiString@12 -RtlUnicodeStringToCountedOemString=RtlUnicodeStringToCountedOemString@12 -RtlUnicodeStringToInteger=RtlUnicodeStringToInteger@12 -RtlUnicodeStringToOemSize=RtlUnicodeStringToOemSize@4 -RtlUnicodeStringToOemString=RtlUnicodeStringToOemString@12 -RtlUnicodeToMultiByteN=RtlUnicodeToMultiByteN@20 -RtlUnicodeToMultiByteSize=RtlUnicodeToMultiByteSize@12 -RtlUnicodeToOemN=RtlUnicodeToOemN@20 -RtlUnwind=RtlUnwind@0 -RtlUpcaseUnicodeChar=RtlUpcaseUnicodeChar@4 -RtlUpcaseUnicodeString=RtlUpcaseUnicodeString@12 -RtlUpcaseUnicodeStringToAnsiString=RtlUpcaseUnicodeStringToAnsiString@12 -RtlUpcaseUnicodeStringToCountedOemString=RtlUpcaseUnicodeStringToCountedOemString@12 -RtlUpcaseUnicodeStringToOemString=RtlUpcaseUnicodeStringToOemString@12 -RtlUpcaseUnicodeToMultiByteN=RtlUpcaseUnicodeToMultiByteN@20 -RtlUpcaseUnicodeToOemN=RtlUpcaseUnicodeToOemN@20 -RtlUpperChar=RtlUpperChar@4 -RtlUpperString=RtlUpperString@8 -RtlValidSecurityDescriptor=RtlValidSecurityDescriptor@4 -RtlValidateHeap=RtlValidateHeap@12 -RtlZeroMemory=RtlZeroMemory@8 -RtlxAnsiStringToUnicodeSize=RtlxAnsiStringToUnicodeSize@4 -RtlxOemStringToUnicodeSize=RtlxOemStringToUnicodeSize@4 -RtlxUnicodeStringToAnsiSize=RtlxUnicodeStringToAnsiSize@4 -RtlxUnicodeStringToOemSize=RtlxUnicodeStringToOemSize@4 __isascii __iscsym __iscsymf diff --git a/reactos/lib/ntdll/makefile b/reactos/lib/ntdll/makefile index 6cb7a8b05de..5fb276dad01 100644 --- a/reactos/lib/ntdll/makefile +++ b/reactos/lib/ntdll/makefile @@ -1,4 +1,4 @@ -# $Id: makefile,v 1.38 2000/02/13 16:05:13 dwelch Exp $ +# $Id: makefile,v 1.39 2000/03/09 00:13:14 ekohl Exp $ # # ReactOS Operating System # @@ -29,7 +29,8 @@ DBG_OBJECTS = dbg/brkpoint.o dbg/print.o RTL_OBJECTS = rtl/critical.o rtl/error.o rtl/heap.o rtl/largeint.o \ rtl/math.o rtl/mem.o rtl/nls.o rtl/process.o rtl/sd.o \ - rtl/thread.o rtl/unicode.o rtl/env.o rtl/path.o rtl/ppb.o + rtl/thread.o rtl/unicode.o rtl/env.o rtl/path.o rtl/ppb.o \ + rtl/bitmap.o STDIO_OBJECTS = stdio/sprintf.o stdio/swprintf.o diff --git a/reactos/lib/ntdll/rtl/bitmap.c b/reactos/lib/ntdll/rtl/bitmap.c new file mode 100644 index 00000000000..62c73ec07d4 --- /dev/null +++ b/reactos/lib/ntdll/rtl/bitmap.c @@ -0,0 +1,649 @@ +/* $Id: bitmap.c,v 1.1 2000/03/09 00:14:10 ekohl Exp $ + * + * COPYRIGHT: See COPYING in the top level directory + * PROJECT: ReactOS kernel + * FILE: lib/ntdll/rtl/bitmap.c + * PURPOSE: Bitmap functions + * UPDATE HISTORY: + * 20/08/99 Created by Eric Kohl + */ + +#include + + +#define ALIGN(x,align) (((x)+(align)-1) / (align)) + + +VOID +STDCALL +RtlInitializeBitMap ( + PRTL_BITMAP BitMapHeader, + PULONG BitMapBuffer, + ULONG SizeOfBitMap + ) +{ + BitMapHeader->SizeOfBitMap = SizeOfBitMap; + BitMapHeader->Buffer = BitMapBuffer; +} + + +BOOLEAN +STDCALL +RtlAreBitsClear ( + PRTL_BITMAP BitMapHeader, + ULONG StartingIndex, + ULONG Length + ) +{ + ULONG Size = BitMapHeader->SizeOfBitMap; + ULONG Shift; + ULONG Count; + PCHAR Ptr; + + if (StartingIndex >= Size || + !Length || + (StartingIndex + Length > Size)) + return FALSE; + + Ptr = (PCHAR)BitMapHeader->Buffer + (StartingIndex / 8); + while (Length) + { + /* get bit shift in current byte */ + Shift = StartingIndex & 7; + + /* get number of bits to check in current byte */ + Count = (Length > 8 - Shift) ? 8 - Shift : Length; + + /* check byte */ + if (*Ptr++ & (~(0xFF << Count) << Shift)) + return FALSE; + + Length -= Count; + StartingIndex += Count; + } + + return TRUE; +} + + +BOOLEAN +STDCALL +RtlAreBitsSet ( + PRTL_BITMAP BitMapHeader, + ULONG StartingIndex, + ULONG Length + ) +{ + ULONG Size = BitMapHeader->SizeOfBitMap; + ULONG Shift; + ULONG Count; + PCHAR Ptr; + + if (StartingIndex >= Size || + !Length || + (StartingIndex + Length > Size)) + return FALSE; + + Ptr = (PCHAR)BitMapHeader->Buffer + (StartingIndex / 8); + while (Length) + { + /* get bit shift in current byte */ + Shift = StartingIndex & 7; + + /* get number of bits to check in current byte */ + Count = (Length > 8 - Shift) ? 8 - Shift : Length; + + /* check byte */ + if (~*Ptr++ & (~(0xFF << Count) << Shift)) + return FALSE; + + Length -= Count; + StartingIndex += Count; + } + + return TRUE; +} + + +VOID +STDCALL +RtlClearAllBits ( + IN OUT PRTL_BITMAP BitMapHeader + ) +{ + memset (BitMapHeader->Buffer, + 0x00, + ALIGN(BitMapHeader->SizeOfBitMap, 8)); +} + + +VOID +STDCALL +RtlClearBits ( + PRTL_BITMAP BitMapHeader, + ULONG StartingIndex, + ULONG NumberToClear + ) +{ + ULONG Size = BitMapHeader->SizeOfBitMap; + ULONG Count; + ULONG Shift; + PCHAR Ptr; + + if (StartingIndex >= Size || NumberToClear == 0) + return; + + if (StartingIndex + NumberToClear > Size) + NumberToClear = Size - StartingIndex; + + Ptr = (PCHAR)(BitMapHeader->Buffer + (StartingIndex / 8)); + while (NumberToClear) + { + /* bit shift in current byte */ + Shift = StartingIndex & 7; + + /* number of bits to change in current byte */ + Count = (NumberToClear > 8 - Shift ) ? 8 - Shift : NumberToClear; + + /* adjust byte */ + *Ptr++ &= ~(~(0xFF << Count) << Shift); + NumberToClear -= Count; + StartingIndex += Count; + } +} + + +ULONG +STDCALL +RtlFindClearBits ( + PRTL_BITMAP BitMapHeader, + ULONG NumberToFind, + ULONG HintIndex + ) +{ + ULONG Size = BitMapHeader->SizeOfBitMap; + ULONG Index; + ULONG Count; + PCHAR Ptr; + CHAR Mask; + + if (NumberToFind > Size || NumberToFind == 0) + return -1; + + if (HintIndex >= Size) + HintIndex = 0; + + Index = HintIndex; + Ptr = (PCHAR)BitMapHeader->Buffer + (Index / 8); + Mask = 1 << (Index & 7); + + while (HintIndex < Size) + { + /* count clear bits */ + for (Count = 0; Index < Size && ~*Ptr & Mask; Index++) + { + if (++Count >= NumberToFind) + return HintIndex; + Mask <<= 1; + if (Mask == 0) + { + Mask = 1; + Ptr++; + } + } + + /* skip set bits */ + for (; Index < Size && *Ptr & Mask; Index++) + { + Mask <<= 1; + if (Mask == 0) + { + Mask = 1; + Ptr++; + } + } + HintIndex = Index; + } + + return -1; +} + + +ULONG +STDCALL +RtlFindClearBitsAndSet ( + PRTL_BITMAP BitMapHeader, + ULONG NumberToFind, + ULONG HintIndex + ) +{ + ULONG Index; + + Index = RtlFindClearBits (BitMapHeader, + NumberToFind, + HintIndex); + if (Index != (ULONG)-1) + RtlSetBits (BitMapHeader, + Index, + NumberToFind); + + return Index; +} + + +ULONG +STDCALL +RtlFindFirstRunClear ( + PRTL_BITMAP BitMapHeader, + PULONG StartingIndex + ) +{ + ULONG Size = BitMapHeader->SizeOfBitMap; + ULONG Index; + ULONG Count; + PCHAR Ptr; + CHAR Mask; + + if (*StartingIndex > Size) + { + *StartingIndex = (ULONG)-1; + return 0; + } + + Index = *StartingIndex; + Ptr = (PCHAR)BitMapHeader->Buffer + (Index / 8); + Mask = 1 << (Index & 7); + + /* skip set bits */ + for (; Index < Size && *Ptr & Mask; Index++) + { + Mask <<= 1; + if (Mask == 0) + { + Mask = 1; + Ptr++; + } + } + + /* return index of first clear bit */ + if (Index >= Size) + { + *StartingIndex = (ULONG)-1; + return 0; + } + else + *StartingIndex = Index; + + /* count clear bits */ + for (Count = 0; Index < Size && ~*Ptr & Mask; Index++) + { + Count++; + Mask <<= 1; + if (Mask == 0) + { + Mask = 1; + Ptr++; + } + } + + return Count; +} + + +ULONG +STDCALL +RtlFindFirstRunSet ( + PRTL_BITMAP BitMapHeader, + PULONG StartingIndex + ) +{ + ULONG Size = BitMapHeader->SizeOfBitMap; + ULONG Index; + ULONG Count; + PCHAR Ptr; + CHAR Mask; + + if (*StartingIndex > Size) + { + *StartingIndex = (ULONG)-1; + return 0; + } + + Index = *StartingIndex; + Ptr = (PCHAR)BitMapHeader->Buffer + (Index / 8); + Mask = 1 << (Index & 7); + + /* skip clear bits */ + for (; Index < Size && ~*Ptr & Mask; Index++) + { + Mask <<= 1; + if (Mask == 0) + { + Mask = 1; + Ptr++; + } + } + + /* return index of first set bit */ + if (Index >= Size) + { + *StartingIndex = (ULONG)-1; + return 0; + } + else + *StartingIndex = Index; + + /* count set bits */ + for (Count = 0; Index < Size && *Ptr & Mask; Index++) + { + Count++; + Mask <<= 1; + if (Mask == 0) + { + Mask = 1; + Ptr++; + } + } + + return Count; +} + + +ULONG +STDCALL +RtlFindLongestRunClear ( + PRTL_BITMAP BitMapHeader, + PULONG StartingIndex + ) +{ + ULONG Size = BitMapHeader->SizeOfBitMap; + PCHAR Ptr = (PCHAR)BitMapHeader->Buffer; + ULONG Index = 0; + ULONG Count; + ULONG Max = 0; + ULONG Start; + ULONG Maxstart = 0; + CHAR Mask = 1; + + while (Index < Size) + { + Start = Index; + + /* count clear bits */ + for (Count = 0; Index < Size && ~*Ptr & Mask; Index++) + { + Count++; + Mask <<= 1; + if (Mask == 0) + { + Mask = 1; + Ptr++; + } + } + + /* skip set bits */ + for (; Index < Size && *Ptr & Mask; Index++) + { + Mask <<= 1; + if (Mask == 0) + { + Mask = 1; + Ptr++; + } + } + + if (Count > Max) + { + Max = Count; + Maxstart = Start; + } + } + + if (StartingIndex) + *StartingIndex = Maxstart; + + return Max; +} + + +ULONG +STDCALL +RtlFindLongestRunSet ( + PRTL_BITMAP BitMapHeader, + PULONG StartingIndex + ) +{ + ULONG Size = BitMapHeader->SizeOfBitMap; + PCHAR Ptr = (PCHAR)BitMapHeader->Buffer; + ULONG Index = 0; + ULONG Count; + ULONG Max = 0; + ULONG Start; + ULONG Maxstart = 0; + CHAR Mask = 1; + + while (Index < Size) + { + Start = Index; + + /* count set bits */ + for (Count = 0; Index < Size && *Ptr & Mask; Index++) + { + Count++; + Mask <<= 1; + if (Mask == 0) + { + Mask = 1; + Ptr++; + } + } + + /* skip clear bits */ + for (; Index < Size && ~*Ptr & Mask; Index++) + { + Mask <<= 1; + if (Mask == 0) + { + Mask = 1; + Ptr++; + } + } + + if (Count > Max) + { + Max = Count; + Maxstart = Start; + } + } + + if (StartingIndex) + *StartingIndex = Maxstart; + + return Max; +} + + +ULONG +STDCALL +RtlFindSetBits ( + PRTL_BITMAP BitMapHeader, + ULONG NumberToFind, + ULONG HintIndex + ) +{ + ULONG Size = BitMapHeader->SizeOfBitMap; + ULONG Index; + ULONG Count; + PCHAR Ptr; + CHAR Mask; + + if (NumberToFind > Size || NumberToFind == 0) + return (ULONG)-1; + + if (HintIndex >= Size) + HintIndex = 0; + + Index = HintIndex; + Ptr = (PCHAR)BitMapHeader->Buffer + (Index / 8); + Mask = 1 << (Index & 7); + + while (HintIndex < Size) + { + /* count set bits */ + for (Count = 0; Index < Size && *Ptr & Mask; Index++) + { + if (++Count >= NumberToFind) + return HintIndex; + Mask <<= 1; + if (Mask == 0) + { + Mask = 1; + Ptr++; + } + } + + /* skip clear bits */ + for (; Index < Size && ~*Ptr & Mask; Index++) + { + Mask <<= 1; + if (Mask == 0) + { + Mask = 1; + Ptr++; + } + } + HintIndex = Index; + } + + return (ULONG)-1; +} + + +ULONG +STDCALL +RtlFindSetBitsAndClear ( + PRTL_BITMAP BitMapHeader, + ULONG NumberToFind, + ULONG HintIndex + ) +{ + ULONG Index; + + Index = RtlFindSetBits (BitMapHeader, + NumberToFind, + HintIndex); + if (Index != (ULONG)-1) + RtlClearBits (BitMapHeader, + Index, + NumberToFind); + + return Index; +} + + +ULONG +STDCALL +RtlNumberOfClearBits ( + PRTL_BITMAP BitMapHeader + ) +{ + PCHAR Ptr = (PCHAR)BitMapHeader->Buffer; + ULONG Size = BitMapHeader->SizeOfBitMap; + ULONG Index; + ULONG Count; + CHAR Mask; + + for (Mask = 1, Index = 0, Count = 0; Index < Size; Index++) + { + if (~*Ptr & Mask) + Count++; + + Mask <<= 1; + if (Mask == 0) + { + Mask = 1; + Ptr++; + } + } + + return Count; +} + + +ULONG +STDCALL +RtlNumberOfSetBits ( + PRTL_BITMAP BitMapHeader + ) +{ + PCHAR Ptr = (PCHAR)BitMapHeader->Buffer; + ULONG Size = BitMapHeader->SizeOfBitMap; + ULONG Index; + ULONG Count; + CHAR Mask; + + for (Mask = 1, Index = 0, Count = 0; Index < Size; Index++) + { + if (*Ptr & Mask) + Count++; + + Mask <<= 1; + if (Mask == 0) + { + Mask = 1; + Ptr++; + } + } + + return Count; +} + + +VOID +STDCALL +RtlSetAllBits ( + IN OUT PRTL_BITMAP BitMapHeader + ) +{ + memset (BitMapHeader->Buffer, + 0xFF, + ALIGN(BitMapHeader->SizeOfBitMap, 8)); +} + + +VOID +STDCALL +RtlSetBits ( + PRTL_BITMAP BitMapHeader, + ULONG StartingIndex, + ULONG NumberToSet + ) +{ + ULONG Size = BitMapHeader->SizeOfBitMap; + ULONG Count; + ULONG Shift; + PCHAR Ptr; + + if (StartingIndex >= Size || NumberToSet == 0) + return; + + if (StartingIndex + NumberToSet > Size) + NumberToSet = Size - StartingIndex; + + Ptr = (PCHAR)BitMapHeader->Buffer + (StartingIndex / 8); + while (NumberToSet) + { + /* bit shift in current byte */ + Shift = StartingIndex & 7; + + /* number of bits to change in current byte */ + Count = (NumberToSet > 8 - Shift) ? 8 - Shift : NumberToSet; + + /* adjust byte */ + *Ptr++ |= ~(0xFF << Count) << Shift; + NumberToSet -= Count; + StartingIndex += Count; + } +} + +/* EOF */ diff --git a/reactos/lib/ntdll/rtl/critical.c b/reactos/lib/ntdll/rtl/critical.c index c13e2330f5d..aefe5b06f9d 100644 --- a/reactos/lib/ntdll/rtl/critical.c +++ b/reactos/lib/ntdll/rtl/critical.c @@ -1,8 +1,9 @@ -/* +/* $Id: critical.c,v 1.5 2000/03/09 00:14:10 ekohl Exp $ + * * COPYRIGHT: See COPYING in the top level directory * PROJECT: ReactOS system libraries - * FILE: lib/kernel32/sync/critical.c - * PURPOSE: Critical regions + * FILE: lib/ntdll/rtl/critical.c + * PURPOSE: Critical sections * UPDATE HISTORY: * Created 30/09/98 */ @@ -16,16 +17,22 @@ /* FUNCTIONS *****************************************************************/ -VOID RtlDeleteCriticalSection(LPCRITICAL_SECTION lpCriticalSection) +VOID +STDCALL +RtlDeleteCriticalSection(LPCRITICAL_SECTION lpCriticalSection) { lpCriticalSection->Reserved = -1; } -VOID RtlEnterCriticalSection(LPCRITICAL_SECTION lpCriticalSection) +VOID +STDCALL +RtlEnterCriticalSection(LPCRITICAL_SECTION lpCriticalSection) { } -VOID RtlInitializeCriticalSection(LPCRITICAL_SECTION pcritical) +VOID +STDCALL +RtlInitializeCriticalSection(LPCRITICAL_SECTION pcritical) { pcritical->LockCount = -1; pcritical->RecursionCount = 0; @@ -34,13 +41,18 @@ VOID RtlInitializeCriticalSection(LPCRITICAL_SECTION pcritical) pcritical->Reserved = 0; } -VOID RtlLeaveCriticalSection(LPCRITICAL_SECTION lpCriticalSection) +VOID +STDCALL +RtlLeaveCriticalSection(LPCRITICAL_SECTION lpCriticalSection) { } -WINBOOL RtlTryEntryCriticalSection(LPCRITICAL_SECTION lpCriticalSection) +BOOLEAN +STDCALL +RtlTryEnterCriticalSection(LPCRITICAL_SECTION lpCriticalSection) { UNIMPLEMENTED; for(;;); } +/* EOF */ diff --git a/reactos/lib/ntdll/rtl/mem.c b/reactos/lib/ntdll/rtl/mem.c index 7b26b3e7b03..b5ce97262a7 100644 --- a/reactos/lib/ntdll/rtl/mem.c +++ b/reactos/lib/ntdll/rtl/mem.c @@ -1,4 +1,4 @@ -/* $Id: mem.c,v 1.7 2000/02/21 22:37:36 ekohl Exp $ +/* $Id: mem.c,v 1.8 2000/03/09 00:14:10 ekohl Exp $ * * COPYRIGHT: See COPYING in the top level directory * PROJECT: ReactOS kernel @@ -44,6 +44,36 @@ RtlCompareMemory(PVOID Source1, PVOID Source2, ULONG Length) return(total); } +ULONG +STDCALL +RtlCompareMemoryUlong ( + PVOID Source, + ULONG Length, + ULONG Value + ) +/* + * FUNCTION: Compares a block of ULONGs with an ULONG and returns the number of equal bytes + * ARGUMENTS: + * Source = Block to compare + * Length = Number of bytes to compare + * Value = Value to compare + * RETURNS: Number of equal bytes + */ +{ + PULONG ptr = (PULONG)Source; + ULONG len = Length / sizeof(ULONG); + int i; + + for (i = 0; i < len; i++) + { + if (*ptr != Value) + break; + ptr++; + } + + return (ULONG)((PCHAR)ptr - (PCHAR)Source); +} + #if 0 VOID RtlCopyBytes(PVOID Destination, CONST VOID* Source, @@ -76,6 +106,25 @@ RtlFillMemory ( ); } +VOID +STDCALL +RtlFillMemoryUlong ( + PVOID Destination, + ULONG Length, + ULONG Fill + ) +{ + PULONG Dest = Destination; + ULONG Count = Length / sizeof(ULONG); + + while (Count > 0) + { + *Dest = Fill; + Dest++; + Count--; + } +} + VOID STDCALL