[CMAKE]
[reactos.git] / ntoskrnl / cc / view.c
index 35b8ef4..a17e2c9 100644 (file)
@@ -189,6 +189,7 @@ CcRosFlushDirtyPages(ULONG Target, PULONG Count)
     
     (*Count) = 0;
     
+    KeEnterCriticalRegion();
     KeAcquireGuardedMutex(&ViewLock);
     
     WriteCount[0] = WriteCount[1];
@@ -278,6 +279,7 @@ CcRosFlushDirtyPages(ULONG Target, PULONG Count)
     }
     
     KeReleaseGuardedMutex(&ViewLock);
+    KeLeaveCriticalRegion();
     
     DPRINT("CcRosFlushDirtyPages() finished\n");
     return(STATUS_SUCCESS);
@@ -311,9 +313,6 @@ CcRosTrimCache(ULONG Target, ULONG Priority, PULONG NrFreed)
     current_entry = CacheSegmentLRUListHead.Flink;
     while (current_entry != &CacheSegmentLRUListHead && Target > 0)
     {
-        NTSTATUS Status;
-        
-        Status = STATUS_SUCCESS;
         current = CONTAINING_RECORD(current_entry, CACHE_SEGMENT,
                                     CacheSegmentLRUListEntry);
         current_entry = current_entry->Flink;
@@ -332,7 +331,7 @@ CcRosTrimCache(ULONG Target, ULONG Priority, PULONG NrFreed)
             {
                 PFN_NUMBER Page;
                 Page = (PFN_NUMBER)(MmGetPhysicalAddress((char*)current->BaseAddress + i * PAGE_SIZE).QuadPart >> PAGE_SHIFT);
-                Status = MmPageOutPhysicalAddress(Page);
+                MmPageOutPhysicalAddress(Page);
             }
             KeAcquireGuardedMutex(&ViewLock);
             KeAcquireSpinLock(&current->Bcb->BcbLock, &oldIrql);
@@ -688,7 +687,7 @@ CcRosCreateCacheSegment(PBCB Bcb,
   MmLockAddressSpace(MmGetKernelAddressSpace());
   current->BaseAddress = NULL;
   Status = MmCreateMemoryArea(MmGetKernelAddressSpace(),
-                             MEMORY_AREA_CACHE_SEGMENT,
+                             0, // nothing checks for cache_segment mareas, so set to 0
                              &current->BaseAddress,
                              Bcb->CacheSegmentSize,
                              PAGE_READWRITE,
@@ -704,6 +703,18 @@ CcRosCreateCacheSegment(PBCB Bcb,
 #endif
 
   /* Create a virtual mapping for this memory area */
+  MI_SET_USAGE(MI_USAGE_CACHE);
+#if MI_TRACE_PFNS
+  PWCHAR pos = NULL;
+  ULONG len = 0;
+  if ((Bcb->FileObject) && (Bcb->FileObject->FileName.Buffer))
+  {
+    pos = wcsrchr(Bcb->FileObject->FileName.Buffer, '\\');
+    len = wcslen(pos) * sizeof(WCHAR);
+    if (pos) snprintf(MI_PFN_CURRENT_PROCESS_NAME, min(16, len), "%S", pos);
+  }   
+#endif
+
   MmMapMemoryArea(current->BaseAddress, Bcb->CacheSegmentSize,
       MC_CACHE, PAGE_READWRITE);
 
@@ -1022,7 +1033,6 @@ CcRosDeleteFileCache(PFILE_OBJECT FileObject, PBCB Bcb)
 {
    PLIST_ENTRY current_entry;
    PCACHE_SEGMENT current;
-   NTSTATUS Status;
    LIST_ENTRY FreeList;
    KIRQL oldIrql;
 
@@ -1077,7 +1087,7 @@ CcRosDeleteFileCache(PFILE_OBJECT FileObject, PBCB Bcb)
       {
          current_entry = RemoveTailList(&FreeList);
          current = CONTAINING_RECORD(current_entry, CACHE_SEGMENT, BcbSegmentListEntry);
-         Status = CcRosInternalFreeCacheSegment(current);
+         CcRosInternalFreeCacheSegment(current);
       }
       ExFreeToNPagedLookasideList(&BcbLookasideList, Bcb);
       KeAcquireGuardedMutex(&ViewLock);