- Silence TCPIP.
[reactos.git] / reactos / ntoskrnl / cc / pin.c
index de20a1a..b845c6c 100644 (file)
@@ -4,9 +4,8 @@
  * PROJECT:         ReactOS kernel
  * FILE:            ntoskrnl/cc/pin.c
  * PURPOSE:         Implements cache managers pinning interface
- * PROGRAMMER:      Hartmut Birr
- * UPDATE HISTORY:
- *                  Created 05.10.2001
+ *
+ * PROGRAMMERS:     Hartmut Birr
  */
 
 /* INCLUDES ******************************************************************/
@@ -17,8 +16,6 @@
 
 /* GLOBALS *******************************************************************/
 
-#define ROUND_DOWN(N, S) ((N) - ((N) % (S)))
-
 extern NPAGED_LOOKASIDE_LIST iBcbLookasideList;
 
 /* FUNCTIONS *****************************************************************/
@@ -41,19 +38,19 @@ CcMapData (IN PFILE_OBJECT FileObject,
   NTSTATUS Status;
   PINTERNAL_BCB iBcb;
   ULONG ROffset;
-  
-  DPRINT("CcMapData(FileObject %x, FileOffset %d, Length %d, Wait %d,"
-        " pBcb %x, pBuffer %x)\n", FileObject, (ULONG)FileOffset->QuadPart,
+
+  DPRINT("CcMapData(FileObject 0x%p, FileOffset %I64x, Length %d, Wait %d,"
+        " pBcb 0x%p, pBuffer 0x%p)\n", FileObject, FileOffset->QuadPart,
         Length, Wait, pBcb, pBuffer);
-  
+
   ReadOffset = (ULONG)FileOffset->QuadPart;
   Bcb = FileObject->SectionObjectPointer->SharedCacheMap;
   ASSERT(Bcb);
 
-  DPRINT("AllocationSize %d, FileSize %d\n",
-         (ULONG)Bcb->AllocationSize.QuadPart,
-         (ULONG)Bcb->FileSize.QuadPart);
-  
+  DPRINT("AllocationSize %I64x, FileSize %I64x\n",
+         Bcb->AllocationSize.QuadPart,
+         Bcb->FileSize.QuadPart);
+
   if (ReadOffset % Bcb->CacheSegmentSize + Length > Bcb->CacheSegmentSize)
     {
       return(FALSE);
@@ -81,15 +78,8 @@ CcMapData (IN PFILE_OBJECT FileObject,
          return(FALSE);
        }
     }
-#if defined(__GNUC__)
-  *pBuffer += ReadOffset % Bcb->CacheSegmentSize;
-#else
-  {
-    char* pTemp = *pBuffer;
-    pTemp += ReadOffset % Bcb->CacheSegmentSize;
-    *pBuffer = pTemp;
-  }
-#endif
+
+  *pBuffer = (PVOID)((ULONG_PTR)(*pBuffer) + (ReadOffset % Bcb->CacheSegmentSize));
   iBcb = ExAllocateFromNPagedLookasideList(&iBcbLookasideList);
   if (iBcb == NULL)
     {
@@ -194,7 +184,7 @@ VOID STDCALL
 CcUnpinData (IN PVOID Bcb)
 {
   PINTERNAL_BCB iBcb = Bcb;
-  CcRosReleaseCacheSegment(iBcb->CacheSegment->Bcb, iBcb->CacheSegment, TRUE, 
+  CcRosReleaseCacheSegment(iBcb->CacheSegment->Bcb, iBcb->CacheSegment, TRUE,
                            iBcb->Dirty, FALSE);
   if (--iBcb->RefCount == 0)
   {
@@ -246,7 +236,7 @@ CcUnpinRepinnedBcb (
       IoStatus->Information = 0;
       if (WriteThrough)
         {
-          ExAcquireFastMutex(&iBcb->CacheSegment->Lock);
+          ExEnterCriticalRegionAndAcquireFastMutexUnsafe(&iBcb->CacheSegment->Lock);
           if (iBcb->CacheSegment->Dirty)
             {
               IoStatus->Status = CcRosFlushCacheSegment(iBcb->CacheSegment);
@@ -255,7 +245,7 @@ CcUnpinRepinnedBcb (
             {
               IoStatus->Status = STATUS_SUCCESS;
             }
-          ExReleaseFastMutex(&iBcb->CacheSegment->Lock);
+          ExReleaseFastMutexUnsafeAndLeaveCriticalRegion(&iBcb->CacheSegment->Lock);
         }
       else
         {