include the right files
[reactos.git] / reactos / ntoskrnl / rtl / bitmap.c
index c261eb4..25d1a15 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: bitmap.c,v 1.6 2002/11/11 22:53:26 hbirr Exp $
+/* $Id: bitmap.c,v 1.10 2004/08/05 18:17:37 ion Exp $
  *
  * COPYRIGHT:       See COPYING in the top level directory
  * PROJECT:         ReactOS kernel
 
 #include <ddk/ntddk.h>
 
+#define NDEBUG
+#include <debug.h>
 
 #define ALIGN(x,align) (((x)+(align)-1) / (align))
 
+#define MASK(Count, Shift) ((Count) == 32 ? 0xFFFFFFFF : ~(0xFFFFFFFF << (Count)) << (Shift))
 
+
+/*
+ * @implemented
+ */
 VOID
 STDCALL
 RtlInitializeBitMap (
@@ -27,6 +34,9 @@ RtlInitializeBitMap (
 }
 
 
+/*
+ * @implemented
+ */
 BOOLEAN
 STDCALL
 RtlAreBitsClear (
@@ -55,7 +65,7 @@ RtlAreBitsClear (
                Count = (Length > 32 - Shift) ? 32 - Shift : Length;
 
                /* check dword */
-               if (*Ptr++ & (~(0xFFFFFFFF << Count) << Shift))
+               if (*Ptr++ & MASK(Count, Shift))
                        return FALSE;
 
                Length -= Count;
@@ -66,6 +76,9 @@ RtlAreBitsClear (
 }
 
 
+/*
+ * @implemented
+ */
 BOOLEAN
 STDCALL
 RtlAreBitsSet (
@@ -94,7 +107,7 @@ RtlAreBitsSet (
                Count = (Length > 32 - Shift) ? 32 - Shift : Length;
 
                /* check dword */
-               if (~*Ptr++ & (~(0xFFFFFFFF << Count) << Shift))
+               if (~*Ptr++ & MASK(Count, Shift))
                        return FALSE;
 
                Length -= Count;
@@ -105,6 +118,9 @@ RtlAreBitsSet (
 }
 
 
+/*
+ * @implemented
+ */
 VOID
 STDCALL
 RtlClearAllBits (
@@ -113,10 +129,25 @@ RtlClearAllBits (
 {
        memset (BitMapHeader->Buffer,
                0x00,
-               ALIGN(BitMapHeader->SizeOfBitMap, 32));
+               ALIGN(BitMapHeader->SizeOfBitMap, 8));
 }
 
+/*
+* @unimplemented
+*/
+VOID
+STDCALL
+RtlClearBit (
+       PRTL_BITMAP BitMapHeader,
+       ULONG BitNumber
+       )
+{
+       UNIMPLEMENTED;
+}
 
+/*
+ * @implemented
+ */
 VOID
 STDCALL
 RtlClearBits (
@@ -146,13 +177,16 @@ RtlClearBits (
                Count = (NumberToClear > 32 - Shift ) ? 32 - Shift : NumberToClear;
 
                /* adjust dword */
-               *Ptr++ &= ~(~(0xFFFFFFFF << Count) << Shift);
+               *Ptr++ &= ~MASK(Count, Shift);
                NumberToClear -= Count;
                StartingIndex += Count;
        }
 }
 
 
+/*
+ * @implemented
+ */
 ULONG
 STDCALL
 RtlFindClearBits (
@@ -209,6 +243,9 @@ RtlFindClearBits (
 }
 
 
+/*
+ * @implemented
+ */
 ULONG
 STDCALL
 RtlFindClearBitsAndSet (
@@ -231,6 +268,9 @@ RtlFindClearBitsAndSet (
 }
 
 
+/*
+ * @implemented
+ */
 ULONG
 STDCALL
 RtlFindFirstRunClear (
@@ -289,6 +329,51 @@ RtlFindFirstRunClear (
        return Count;
 }
 
+/*
+* @unimplemented
+*/
+ULONG
+STDCALL
+RtlFindClearRuns (
+       PRTL_BITMAP BitMapHeader,
+       PRTL_BITMAP_RUN RunArray,
+       ULONG SizeOfRunArray,
+       BOOLEAN LocateLongestRuns
+       )
+{
+       UNIMPLEMENTED;
+       return 0;
+}
+
+/*
+* @unimplemented
+*/
+ULONG
+STDCALL
+RtlFindLastBackwardRunClear (
+       IN PRTL_BITMAP BitMapHeader,
+       IN ULONG FromIndex,
+       IN PULONG StartingRunIndex
+       )
+{
+       UNIMPLEMENTED;
+       return 0;
+}
+
+/*
+* @unimplemented
+*/
+ULONG
+STDCALL
+RtlFindNextForwardRunClear (
+       IN PRTL_BITMAP BitMapHeader,
+       IN ULONG FromIndex,
+       IN PULONG StartingRunIndex
+       )
+{
+       UNIMPLEMENTED;
+       return 0;
+}
 
 ULONG
 STDCALL
@@ -349,6 +434,9 @@ RtlFindFirstRunSet (
 }
 
 
+/*
+ * @implemented
+ */
 ULONG
 STDCALL
 RtlFindLongestRunClear (
@@ -420,7 +508,7 @@ RtlFindLongestRunSet (
        ULONG Max = 0;
        ULONG Start;
        ULONG Maxstart = 0;
-       ULONG  Mask = 1;
+       ULONG Mask = 1;
 
        while (Index < Size)
        {
@@ -463,6 +551,9 @@ RtlFindLongestRunSet (
 }
 
 
+/*
+ * @implemented
+ */
 ULONG
 STDCALL
 RtlFindSetBits (
@@ -475,7 +566,7 @@ RtlFindSetBits (
        ULONG Index;
        ULONG Count;
        PULONG Ptr;
-       CHAR  Mask;
+       ULONG Mask;
 
        if (NumberToFind > Size || NumberToFind == 0)
                return (ULONG)-1;
@@ -519,6 +610,9 @@ RtlFindSetBits (
 }
 
 
+/*
+ * @implemented
+ */
 ULONG
 STDCALL
 RtlFindSetBitsAndClear (
@@ -541,6 +635,9 @@ RtlFindSetBitsAndClear (
 }
 
 
+/*
+ * @implemented
+ */
 ULONG
 STDCALL
 RtlNumberOfClearBits (
@@ -570,6 +667,9 @@ RtlNumberOfClearBits (
 }
 
 
+/*
+ * @implemented
+ */
 ULONG
 STDCALL
 RtlNumberOfSetBits (
@@ -599,6 +699,9 @@ RtlNumberOfSetBits (
 }
 
 
+/*
+ * @implemented
+ */
 VOID
 STDCALL
 RtlSetAllBits (
@@ -607,10 +710,25 @@ RtlSetAllBits (
 {
        memset (BitMapHeader->Buffer,
                0xFF,
-               ALIGN(BitMapHeader->SizeOfBitMap, 32));
+               ALIGN(BitMapHeader->SizeOfBitMap, 8));
 }
 
+/*
+* @unimplemented
+*/
+VOID
+STDCALL
+RtlSetBit (
+       PRTL_BITMAP BitMapHeader,
+       ULONG BitNumber
+       )
+{
+       UNIMPLEMENTED;
+}
 
+/*
+ * @implemented
+ */
 VOID
 STDCALL
 RtlSetBits (
@@ -640,10 +758,23 @@ RtlSetBits (
                Count = (NumberToSet > 32 - Shift) ? 32 - Shift : NumberToSet;
 
                /* adjust dword */
-               *Ptr++ |= ~(0xFFFFFFFF << Count) << Shift;
+               *Ptr++ |= MASK(Count, Shift);
                NumberToSet -= Count;
                StartingIndex += Count;
        }
 }
 
+/*
+* @unimplemented
+*/
+BOOLEAN
+STDCALL
+RtlTestBit (
+       PRTL_BITMAP BitMapHeader,
+       ULONG BitNumber
+       )
+{
+       UNIMPLEMENTED;
+       return FALSE;
+}
 /* EOF */