Implemented bitmap functions

svn path=/trunk/; revision=1040
This commit is contained in:
Eric Kohl 2000-03-09 00:14:10 +00:00
parent c3f375c672
commit 89871935c1
6 changed files with 1199 additions and 250 deletions

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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 <ddk/ntddk.h>
#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 */

View file

@ -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 */

View file

@ -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