[NTOS:CC]
authorThomas Faber <thomas.faber@reactos.org>
Mon, 30 Sep 2013 20:06:18 +0000 (20:06 +0000)
committerThomas Faber <thomas.faber@reactos.org>
Mon, 30 Sep 2013 20:06:18 +0000 (20:06 +0000)
- Remove CacheSegmentSize
- Misc simplifications and style improvements
CORE-7491

svn path=/trunk/; revision=60484

reactos/ntoskrnl/cc/copy.c
reactos/ntoskrnl/cc/fs.c
reactos/ntoskrnl/cc/pin.c
reactos/ntoskrnl/cc/view.c
reactos/ntoskrnl/include/internal/cc.h
reactos/ntoskrnl/include/internal/tag.h

index b23159a..697272a 100644 (file)
@@ -19,6 +19,7 @@ static PFN_NUMBER CcZeroPage = 0;
 
 #define MAX_ZERO_LENGTH    (256 * 1024)
 #define MAX_RW_LENGTH    (256 * 1024)
+C_ASSERT(MAX_RW_LENGTH <= VACB_MAPPING_GRANULARITY);
 
 ULONG CcFastMdlReadWait;
 ULONG CcFastMdlReadNotPossible;
@@ -88,7 +89,7 @@ ReadCacheSegmentChain (
         if (current->Valid)
         {
             TempLength = min(VACB_MAPPING_GRANULARITY, Length);
-            memcpy(Buffer, current->BaseAddress, TempLength);
+            RtlCopyMemory(Buffer, current->BaseAddress, TempLength);
 
             Buffer = (PVOID)((ULONG_PTR)Buffer + TempLength);
 
@@ -130,7 +131,7 @@ ReadCacheSegmentChain (
             while ((current2 != NULL) && !current2->Valid && (current_size < MAX_RW_LENGTH))
             {
                 PVOID address = current2->BaseAddress;
-                for (i = 0; i < (VACB_MAPPING_GRANULARITY / PAGE_SIZE); i++, address = RVA(address, PAGE_SIZE))
+                for (i = 0; i < VACB_MAPPING_GRANULARITY / PAGE_SIZE; i++, address = RVA(address, PAGE_SIZE))
                 {
                     *MdlPages++ = MmGetPfnForProcess(NULL, address);
                 }
@@ -173,7 +174,7 @@ ReadCacheSegmentChain (
                 previous = current;
                 current = current->NextInChain;
                 TempLength = min(VACB_MAPPING_GRANULARITY, Length);
-                memcpy(Buffer, previous->BaseAddress, TempLength);
+                RtlCopyMemory(Buffer, previous->BaseAddress, TempLength);
 
                 Buffer = (PVOID)((ULONG_PTR)Buffer + TempLength);
 
@@ -229,7 +230,7 @@ ReadCacheSegment (
         return Status;
     }
 
-    if (VACB_MAPPING_GRANULARITY > Size)
+    if (Size < VACB_MAPPING_GRANULARITY)
     {
         RtlZeroMemory((char*)CacheSeg->BaseAddress + Size,
                       VACB_MAPPING_GRANULARITY - Size);
@@ -381,10 +382,10 @@ CcCopyRead (
     TempLength = ReadOffset % VACB_MAPPING_GRANULARITY;
     if (TempLength != 0)
     {
-        TempLength = min (Length, VACB_MAPPING_GRANULARITY - TempLength);
+        TempLength = min(Length, VACB_MAPPING_GRANULARITY - TempLength);
         Status = CcRosRequestCacheSegment(Bcb,
                                           ROUND_DOWN(ReadOffset,
-                                                  VACB_MAPPING_GRANULARITY),
+                                                     VACB_MAPPING_GRANULARITY),
                                           &BaseAddress, &Valid, &CacheSeg);
         if (!NT_SUCCESS(Status))
         {
@@ -404,8 +405,9 @@ CcCopyRead (
                 return FALSE;
             }
         }
-        memcpy (Buffer, (char*)BaseAddress + ReadOffset % VACB_MAPPING_GRANULARITY,
-                TempLength);
+        RtlCopyMemory(Buffer,
+                      (char*)BaseAddress + ReadOffset % VACB_MAPPING_GRANULARITY,
+                      TempLength);
         CcRosReleaseCacheSegment(Bcb, CacheSeg, TRUE, FALSE, FALSE);
         ReadLength += TempLength;
         Length -= TempLength;
@@ -415,7 +417,7 @@ CcCopyRead (
 
     while (Length > 0)
     {
-        TempLength = min(max(VACB_MAPPING_GRANULARITY, MAX_RW_LENGTH), Length);
+        TempLength = min(VACB_MAPPING_GRANULARITY, Length);
         Status = ReadCacheSegmentChain(Bcb, ReadOffset, TempLength, Buffer);
         if (!NT_SUCCESS(Status))
         {
@@ -498,7 +500,7 @@ CcCopyWrite (
     {
         ULONG ROffset;
         ROffset = ROUND_DOWN(WriteOffset, VACB_MAPPING_GRANULARITY);
-        TempLength = min (Length, VACB_MAPPING_GRANULARITY - TempLength);
+        TempLength = min(Length, VACB_MAPPING_GRANULARITY - TempLength);
         Status = CcRosRequestCacheSegment(Bcb, ROffset,
                                           &BaseAddress, &Valid, &CacheSeg);
         if (!NT_SUCCESS(Status))
@@ -512,8 +514,9 @@ CcCopyWrite (
                 return FALSE;
             }
         }
-        memcpy ((char*)BaseAddress + WriteOffset % VACB_MAPPING_GRANULARITY,
-                Buffer, TempLength);
+        RtlCopyMemory((char*)BaseAddress + WriteOffset % VACB_MAPPING_GRANULARITY,
+                      Buffer,
+                      TempLength);
         CcRosReleaseCacheSegment(Bcb, CacheSeg, TRUE, TRUE, FALSE);
 
         Length -= TempLength;
@@ -524,7 +527,7 @@ CcCopyWrite (
 
     while (Length > 0)
     {
-        TempLength = min (VACB_MAPPING_GRANULARITY, Length);
+        TempLength = min(VACB_MAPPING_GRANULARITY, Length);
         Status = CcRosRequestCacheSegment(Bcb,
                                           WriteOffset,
                                           &BaseAddress,
@@ -542,7 +545,7 @@ CcCopyWrite (
                 return FALSE;
             }
         }
-        memcpy (BaseAddress, Buffer, TempLength);
+        RtlCopyMemory(BaseAddress, Buffer, TempLength);
         CcRosReleaseCacheSegment(Bcb, CacheSeg, TRUE, TRUE, FALSE);
         Length -= TempLength;
         WriteOffset += TempLength;
@@ -749,13 +752,14 @@ CcZeroData (
                                     Status);
                         }
                     }
-                    TempLength = min (CurrentLength, VACB_MAPPING_GRANULARITY - Offset);
+                    TempLength = min(CurrentLength, VACB_MAPPING_GRANULARITY - Offset);
                 }
                 else
                 {
                     TempLength = VACB_MAPPING_GRANULARITY;
                 }
-                memset ((PUCHAR)current->BaseAddress + Offset, 0, TempLength);
+                RtlZeroMemory((PUCHAR)current->BaseAddress + Offset,
+                              TempLength);
 
                 WriteOffset.QuadPart += TempLength;
                 CurrentLength -= TempLength;
index 9214a52..fdb9e62 100644 (file)
@@ -87,7 +87,7 @@ CcInitializeCacheMap (
 
     /* Call old ROS cache init function */
     CcRosInitializeFileCache(FileObject,
-                             /*PAGE_SIZE*/ VACB_MAPPING_GRANULARITY, CallBacks,
+                             CallBacks,
                              LazyWriterContext);
 }
 
index b5d4f9b..26d375e 100644 (file)
@@ -88,7 +88,7 @@ CcMapData (
         }
     }
 
-    *pBuffer = (PVOID)((ULONG_PTR)(*pBuffer) + (ReadOffset % VACB_MAPPING_GRANULARITY));
+    *pBuffer = (PVOID)((ULONG_PTR)(*pBuffer) + ReadOffset % VACB_MAPPING_GRANULARITY);
     iBcb = ExAllocateFromNPagedLookasideList(&iBcbLookasideList);
     if (iBcb == NULL)
     {
@@ -96,7 +96,7 @@ CcMapData (
         return FALSE;
     }
 
-    memset(iBcb, 0, sizeof(INTERNAL_BCB));
+    RtlZeroMemory(iBcb, sizeof(*iBcb));
     iBcb->PFCB.NodeTypeCode = 0xDE45; /* Undocumented (CAPTIVE_PUBLIC_BCB_NODETYPECODE) */
     iBcb->PFCB.NodeByteSize = sizeof(PUBLIC_BCB);
     iBcb->PFCB.MappedLength = Length;
index 5264d91..40e8f44 100644 (file)
@@ -53,7 +53,7 @@ static LIST_ENTRY DirtySegmentListHead;
 static LIST_ENTRY CacheSegmentListHead;
 static LIST_ENTRY CacheSegmentLRUListHead;
 static LIST_ENTRY ClosedListHead;
-ULONG DirtyPageCount=0;
+ULONG DirtyPageCount = 0;
 
 KGUARDED_MUTEX ViewLock;
 
@@ -171,7 +171,7 @@ CcRosFlushCacheSegment (
         KeReleaseGuardedMutex(&ViewLock);
     }
 
-    return(Status);
+    return Status;
 }
 
 NTSTATUS
@@ -273,7 +273,7 @@ CcRosFlushDirtyPages (
     KeLeaveCriticalRegion();
 
     DPRINT("CcRosFlushDirtyPages() finished\n");
-    return(STATUS_SUCCESS);
+    return STATUS_SUCCESS;
 }
 
 NTSTATUS
@@ -396,7 +396,7 @@ retry:
 
     DPRINT("Evicted %lu cache pages\n", (*NrFreed));
 
-    return(STATUS_SUCCESS);
+    return STATUS_SUCCESS;
 }
 
 NTSTATUS
@@ -448,7 +448,7 @@ CcRosReleaseCacheSegment (
     KeReleaseGuardedMutex(&ViewLock);
     KeReleaseMutex(&CacheSeg->Mutex, FALSE);
 
-    return(STATUS_SUCCESS);
+    return STATUS_SUCCESS;
 }
 
 /* Returns with Cache Segment Lock Held! */
@@ -540,7 +540,7 @@ CcRosMarkDirtyCacheSegment (
     KeReleaseGuardedMutex(&ViewLock);
     KeReleaseMutex(&CacheSeg->Mutex, FALSE);
 
-    return(STATUS_SUCCESS);
+    return STATUS_SUCCESS;
 }
 
 NTSTATUS
@@ -562,7 +562,7 @@ CcRosUnmapCacheSegment (
     CacheSeg = CcRosLookupCacheSegment(Bcb, FileOffset);
     if (CacheSeg == NULL)
     {
-        return(STATUS_UNSUCCESSFUL);
+        return STATUS_UNSUCCESSFUL;
     }
 
     KeAcquireGuardedMutex(&ViewLock);
@@ -593,7 +593,7 @@ CcRosUnmapCacheSegment (
     KeReleaseGuardedMutex(&ViewLock);
     KeReleaseMutex(&CacheSeg->Mutex, FALSE);
 
-    return(STATUS_SUCCESS);
+    return STATUS_SUCCESS;
 }
 
 static
@@ -713,7 +713,9 @@ CcRosCreateCacheSegment (
 #ifdef CACHE_BITMAP
     KeAcquireSpinLock(&CiCacheSegMappingRegionLock, &oldIrql);
 
-    StartingOffset = RtlFindClearBitsAndSet(&CiCacheSegMappingRegionAllocMap, VACB_MAPPING_GRANULARITY / PAGE_SIZE, CiCacheSegMappingRegionHint);
+    StartingOffset = RtlFindClearBitsAndSet(&CiCacheSegMappingRegionAllocMap,
+                                            VACB_MAPPING_GRANULARITY / PAGE_SIZE,
+                                            CiCacheSegMappingRegionHint);
 
     if (StartingOffset == 0xffffffff)
     {
@@ -764,7 +766,7 @@ CcRosCreateCacheSegment (
     MmMapMemoryArea(current->BaseAddress, VACB_MAPPING_GRANULARITY,
                     MC_CACHE, PAGE_READWRITE);
 
-    return(STATUS_SUCCESS);
+    return STATUS_SUCCESS;
 }
 
 NTSTATUS
@@ -815,7 +817,7 @@ CcRosGetCacheSegmentChain (
         }
     }
 
-    for (i = 0; i < (Length / VACB_MAPPING_GRANULARITY); i++)
+    for (i = 0; i < Length / VACB_MAPPING_GRANULARITY; i++)
     {
         if (i == 0)
         {
@@ -831,7 +833,7 @@ CcRosGetCacheSegmentChain (
     ASSERT(Previous);
     Previous->NextInChain = NULL;
 
-    return(STATUS_SUCCESS);
+    return STATUS_SUCCESS;
 }
 
 NTSTATUS
@@ -883,7 +885,7 @@ CcRosGetCacheSegment (
     DPRINT("*BaseAddress %p\n", *BaseAddress);
     *CacheSeg = current;
     *BaseOffset = current->FileOffset;
-    return(STATUS_SUCCESS);
+    return STATUS_SUCCESS;
 }
 
 NTSTATUS
@@ -902,19 +904,19 @@ CcRosRequestCacheSegment (
 
     ASSERT(Bcb);
 
-    if ((FileOffset % VACB_MAPPING_GRANULARITY) != 0)
+    if (FileOffset % VACB_MAPPING_GRANULARITY != 0)
     {
         DPRINT1("Bad fileoffset %x should be multiple of %x",
                 FileOffset, VACB_MAPPING_GRANULARITY);
         KeBugCheck(CACHE_MANAGER);
     }
 
-    return(CcRosGetCacheSegment(Bcb,
+    return CcRosGetCacheSegment(Bcb,
                                 FileOffset,
                                 &BaseOffset,
                                 BaseAddress,
                                 UptoDate,
-                                CacheSeg));
+                                CacheSeg);
 }
 #ifdef CACHE_BITMAP
 #else
@@ -977,7 +979,7 @@ CcRosInternalFreeCacheSegment (
 
     RtlClearBits(&CiCacheSegMappingRegionAllocMap, Base, RegionSize);
 
-    CiCacheSegMappingRegionHint = min (CiCacheSegMappingRegionHint, Base);
+    CiCacheSegMappingRegionHint = min(CiCacheSegMappingRegionHint, Base);
 
     KeReleaseSpinLock(&CiCacheSegMappingRegionLock, oldIrql);
 #else
@@ -989,7 +991,7 @@ CcRosInternalFreeCacheSegment (
     MmUnlockAddressSpace(MmGetKernelAddressSpace());
 #endif
     ExFreeToNPagedLookasideList(&CacheSegLookasideList, CacheSeg);
-    return(STATUS_SUCCESS);
+    return STATUS_SUCCESS;
 }
 
 /*
@@ -1143,7 +1145,7 @@ CcRosDeleteFileCache (
         ExFreeToNPagedLookasideList(&BcbLookasideList, Bcb);
         KeAcquireGuardedMutex(&ViewLock);
     }
-    return(STATUS_SUCCESS);
+    return STATUS_SUCCESS;
 }
 
 VOID
@@ -1243,7 +1245,7 @@ CcRosReleaseFileCache (
         }
     }
     KeReleaseGuardedMutex(&ViewLock);
-    return(STATUS_SUCCESS);
+    return STATUS_SUCCESS;
 }
 
 NTSTATUS
@@ -1286,7 +1288,6 @@ NTSTATUS
 NTAPI
 CcRosInitializeFileCache (
     PFILE_OBJECT FileObject,
-    ULONG CacheSegmentSize,
     PCACHE_MANAGER_CALLBACKS CallBacks,
     PVOID LazyWriterContext)
 /*
@@ -1296,8 +1297,8 @@ CcRosInitializeFileCache (
     PBCB Bcb;
 
     Bcb = FileObject->SectionObjectPointer->SharedCacheMap;
-    DPRINT("CcRosInitializeFileCache(FileObject 0x%p, Bcb 0x%p, CacheSegmentSize %lu)\n",
-           FileObject, Bcb, CacheSegmentSize);
+    DPRINT("CcRosInitializeFileCache(FileObject 0x%p, Bcb 0x%p)\n",
+           FileObject, Bcb);
 
     KeAcquireGuardedMutex(&ViewLock);
     if (Bcb == NULL)
@@ -1306,15 +1307,14 @@ CcRosInitializeFileCache (
         if (Bcb == NULL)
         {
             KeReleaseGuardedMutex(&ViewLock);
-            return(STATUS_UNSUCCESSFUL);
+            return STATUS_UNSUCCESSFUL;
         }
-        memset(Bcb, 0, sizeof(BCB));
+        RtlZeroMemory(Bcb, sizeof(*Bcb));
         ObReferenceObjectByPointer(FileObject,
                                    FILE_ALL_ACCESS,
                                    NULL,
                                    KernelMode);
         Bcb->FileObject = FileObject;
-        Bcb->CacheSegmentSize = CacheSegmentSize;
         Bcb->Callbacks = CallBacks;
         Bcb->LazyWriteContext = LazyWriterContext;
         if (FileObject->FsContext)
@@ -1340,7 +1340,7 @@ CcRosInitializeFileCache (
     }
     KeReleaseGuardedMutex(&ViewLock);
 
-    return(STATUS_SUCCESS);
+    return STATUS_SUCCESS;
 }
 
 /*
@@ -1396,13 +1396,17 @@ CcInitView (
         KeBugCheck(CACHE_MANAGER);
     }
 
-    Buffer = ExAllocatePool(NonPagedPool, CI_CACHESEG_MAPPING_REGION_SIZE / (PAGE_SIZE * 8));
+    Buffer = ExAllocatePoolWithTag(NonPagedPool,
+                                   CI_CACHESEG_MAPPING_REGION_SIZE / (PAGE_SIZE * 8),
+                                   TAG_CC);
     if (!Buffer)
     {
         KeBugCheck(CACHE_MANAGER);
     }
 
-    RtlInitializeBitMap(&CiCacheSegMappingRegionAllocMap, Buffer, CI_CACHESEG_MAPPING_REGION_SIZE / PAGE_SIZE);
+    RtlInitializeBitMap(&CiCacheSegMappingRegionAllocMap,
+                        Buffer,
+                        CI_CACHESEG_MAPPING_REGION_SIZE / PAGE_SIZE);
     RtlClearAllBits(&CiCacheSegMappingRegionAllocMap);
 
     KeInitializeSpinLock(&CiCacheSegMappingRegionLock);
@@ -1441,11 +1445,3 @@ CcInitView (
 }
 
 /* EOF */
-
-
-
-
-
-
-
-
index 60d86c6..439ffa3 100644 (file)
@@ -108,7 +108,6 @@ typedef struct _BCB
     BOOLEAN RemoveOnClose;
     ULONG TimeStamp;
     PFILE_OBJECT FileObject;
-    ULONG CacheSegmentSize;
     LARGE_INTEGER AllocationSize;
     LARGE_INTEGER FileSize;
     PCACHE_MANAGER_CALLBACKS Callbacks;
@@ -294,7 +293,6 @@ NTSTATUS
 NTAPI
 CcRosInitializeFileCache(
     PFILE_OBJECT FileObject,
-    ULONG CacheSegmentSize,
     PCACHE_MANAGER_CALLBACKS CallBacks,
     PVOID LazyWriterContext
 );
index 2ab910d..09044c2 100644 (file)
@@ -1,6 +1,7 @@
 #pragma once
 
 /* formerly located in cc/view.c */
+#define TAG_CC    '  cC'
 #define TAG_CSEG  'GESC'
 #define TAG_BCB   ' BCB'
 #define TAG_IBCB  'BCBi'