Git conversion: Make reactos the root directory, move rosapps, rostests, wallpapers...
[reactos.git] / reactos / ntoskrnl / cc / fs.c
diff --git a/reactos/ntoskrnl/cc/fs.c b/reactos/ntoskrnl/cc/fs.c
deleted file mode 100644 (file)
index 4ecd553..0000000
+++ /dev/null
@@ -1,338 +0,0 @@
-/*
- * COPYRIGHT:       See COPYING in the top level directory
- * PROJECT:         ReactOS kernel
- * FILE:            ntoskrnl/cc/fs.c
- * PURPOSE:         Implements cache managers functions useful for File Systems
- *
- * PROGRAMMERS:     Alex Ionescu
- */
-
-/* INCLUDES ******************************************************************/
-
-#include <ntoskrnl.h>
-#define NDEBUG
-#include <debug.h>
-
-#ifndef VACB_MAPPING_GRANULARITY
-#define VACB_MAPPING_GRANULARITY (256 * 1024)
-#endif
-
-/* GLOBALS   *****************************************************************/
-
-extern KGUARDED_MUTEX ViewLock;
-extern ULONG DirtyPageCount;
-
-NTSTATUS CcRosInternalFreeVacb(PROS_VACB Vacb);
-
-/* FUNCTIONS *****************************************************************/
-
-/*
- * @unimplemented
- */
-LARGE_INTEGER
-NTAPI
-CcGetDirtyPages (
-    IN PVOID LogHandle,
-    IN PDIRTY_PAGE_ROUTINE DirtyPageRoutine,
-    IN PVOID Context1,
-    IN PVOID Context2)
-{
-    LARGE_INTEGER i;
-
-    CCTRACE(CC_API_DEBUG, "LogHandle=%p DirtyPageRoutine=%p Context1=%p Context2=%p\n",
-        LogHandle, DirtyPageRoutine, Context1, Context2);
-
-    UNIMPLEMENTED;
-    i.QuadPart = 0;
-    return i;
-}
-
-/*
- * @implemented
- */
-PFILE_OBJECT
-NTAPI
-CcGetFileObjectFromBcb (
-    IN PVOID Bcb)
-{
-    PINTERNAL_BCB iBcb = (PINTERNAL_BCB)Bcb;
-
-    CCTRACE(CC_API_DEBUG, "Bcb=%p\n", Bcb);
-
-    return iBcb->Vacb->SharedCacheMap->FileObject;
-}
-
-/*
- * @unimplemented
- */
-LARGE_INTEGER
-NTAPI
-CcGetLsnForFileObject (
-    IN PFILE_OBJECT FileObject,
-    OUT PLARGE_INTEGER OldestLsn OPTIONAL)
-{
-    LARGE_INTEGER i;
-
-    CCTRACE(CC_API_DEBUG, "FileObject=%p\n", FileObject);
-
-    UNIMPLEMENTED;
-    i.QuadPart = 0;
-    return i;
-}
-
-/*
- * @unimplemented
- */
-VOID
-NTAPI
-CcInitializeCacheMap (
-    IN PFILE_OBJECT FileObject,
-    IN PCC_FILE_SIZES FileSizes,
-    IN BOOLEAN PinAccess,
-    IN PCACHE_MANAGER_CALLBACKS CallBacks,
-    IN PVOID LazyWriterContext)
-{
-    NTSTATUS Status;
-
-    ASSERT(FileObject);
-    ASSERT(FileSizes);
-
-    CCTRACE(CC_API_DEBUG, "FileObject=%p FileSizes=%p PinAccess=%d CallBacks=%p LazyWriterContext=%p\n",
-        FileObject, FileSizes, PinAccess, CallBacks, LazyWriterContext);
-
-    /* Call old ROS cache init function */
-    Status = CcRosInitializeFileCache(FileObject,
-                                      FileSizes,
-                                      PinAccess,
-                                      CallBacks,
-                                      LazyWriterContext);
-    if (!NT_SUCCESS(Status))
-        ExRaiseStatus(Status);
-}
-
-/*
- * @unimplemented
- */
-BOOLEAN
-NTAPI
-CcIsThereDirtyData (
-    IN PVPB Vpb)
-{
-    CCTRACE(CC_API_DEBUG, "Vpb=%p\n", Vpb);
-
-    UNIMPLEMENTED;
-    return FALSE;
-}
-
-/*
- * @unimplemented
- */
-BOOLEAN
-NTAPI
-CcPurgeCacheSection (
-    IN PSECTION_OBJECT_POINTERS SectionObjectPointer,
-    IN PLARGE_INTEGER FileOffset OPTIONAL,
-    IN ULONG Length,
-    IN BOOLEAN UninitializeCacheMaps)
-{
-    PROS_SHARED_CACHE_MAP SharedCacheMap;
-    LONGLONG StartOffset;
-    LONGLONG EndOffset;
-    LIST_ENTRY FreeList;
-    KIRQL OldIrql;
-    PLIST_ENTRY ListEntry;
-    PROS_VACB Vacb;
-    LONGLONG ViewEnd;
-
-    CCTRACE(CC_API_DEBUG, "SectionObjectPointer=%p\n FileOffset=%p Length=%lu UninitializeCacheMaps=%d",
-        SectionObjectPointer, FileOffset, Length, UninitializeCacheMaps);
-
-    if (UninitializeCacheMaps)
-    {
-        DPRINT1("FIXME: CcPurgeCacheSection not uninitializing private cache maps\n");
-    }
-
-    SharedCacheMap = SectionObjectPointer->SharedCacheMap;
-    if (!SharedCacheMap)
-        return FALSE;
-
-    StartOffset = FileOffset != NULL ? FileOffset->QuadPart : 0;
-    if (Length == 0 || FileOffset == NULL)
-    {
-        EndOffset = MAXLONGLONG;
-    }
-    else
-    {
-        EndOffset = StartOffset + Length;
-        ASSERT(EndOffset > StartOffset);
-    }
-
-    InitializeListHead(&FreeList);
-
-    KeAcquireGuardedMutex(&ViewLock);
-    KeAcquireSpinLock(&SharedCacheMap->CacheMapLock, &OldIrql);
-    ListEntry = SharedCacheMap->CacheMapVacbListHead.Flink;
-    while (ListEntry != &SharedCacheMap->CacheMapVacbListHead)
-    {
-        Vacb = CONTAINING_RECORD(ListEntry, ROS_VACB, CacheMapVacbListEntry);
-        ListEntry = ListEntry->Flink;
-
-        /* Skip VACBs outside the range, or only partially in range */
-        if (Vacb->FileOffset.QuadPart < StartOffset)
-        {
-            continue;
-        }
-        ViewEnd = min(Vacb->FileOffset.QuadPart + VACB_MAPPING_GRANULARITY,
-                      SharedCacheMap->SectionSize.QuadPart);
-        if (ViewEnd >= EndOffset)
-        {
-            break;
-        }
-
-        ASSERT((Vacb->ReferenceCount == 0) ||
-               (Vacb->ReferenceCount == 1 && Vacb->Dirty));
-
-        /* This VACB is in range, so unlink it and mark for free */
-        RemoveEntryList(&Vacb->VacbLruListEntry);
-        if (Vacb->Dirty)
-        {
-            RemoveEntryList(&Vacb->DirtyVacbListEntry);
-            DirtyPageCount -= VACB_MAPPING_GRANULARITY / PAGE_SIZE;
-        }
-        RemoveEntryList(&Vacb->CacheMapVacbListEntry);
-        InsertHeadList(&FreeList, &Vacb->CacheMapVacbListEntry);
-    }
-    KeReleaseSpinLock(&SharedCacheMap->CacheMapLock, OldIrql);
-    KeReleaseGuardedMutex(&ViewLock);
-
-    while (!IsListEmpty(&FreeList))
-    {
-        Vacb = CONTAINING_RECORD(RemoveHeadList(&FreeList),
-                                 ROS_VACB,
-                                 CacheMapVacbListEntry);
-        CcRosInternalFreeVacb(Vacb);
-    }
-
-    return FALSE;
-}
-
-
-/*
- * @implemented
- */
-VOID NTAPI
-CcSetFileSizes (
-    IN PFILE_OBJECT FileObject,
-    IN PCC_FILE_SIZES FileSizes)
-{
-    KIRQL oldirql;
-    PROS_SHARED_CACHE_MAP SharedCacheMap;
-
-    CCTRACE(CC_API_DEBUG, "FileObject=%p FileSizes=%p\n",
-        FileObject, FileSizes);
-
-    DPRINT("CcSetFileSizes(FileObject 0x%p, FileSizes 0x%p)\n",
-           FileObject, FileSizes);
-    DPRINT("AllocationSize %I64d, FileSize %I64d, ValidDataLength %I64d\n",
-           FileSizes->AllocationSize.QuadPart,
-           FileSizes->FileSize.QuadPart,
-           FileSizes->ValidDataLength.QuadPart);
-
-    SharedCacheMap = FileObject->SectionObjectPointer->SharedCacheMap;
-
-    /*
-     * It is valid to call this function on file objects that weren't
-     * initialized for caching. In this case it's simple no-op.
-     */
-    if (SharedCacheMap == NULL)
-        return;
-
-    if (FileSizes->AllocationSize.QuadPart < SharedCacheMap->SectionSize.QuadPart)
-    {
-        CcPurgeCacheSection(FileObject->SectionObjectPointer,
-                            &FileSizes->AllocationSize,
-                            0,
-                            FALSE);
-    }
-
-    KeAcquireSpinLock(&SharedCacheMap->CacheMapLock, &oldirql);
-    SharedCacheMap->SectionSize = FileSizes->AllocationSize;
-    SharedCacheMap->FileSize = FileSizes->FileSize;
-    KeReleaseSpinLock(&SharedCacheMap->CacheMapLock, oldirql);
-}
-
-/*
- * @unimplemented
- */
-VOID
-NTAPI
-CcSetLogHandleForFile (
-    IN PFILE_OBJECT FileObject,
-    IN PVOID LogHandle,
-    IN PFLUSH_TO_LSN FlushToLsnRoutine)
-{
-    CCTRACE(CC_API_DEBUG, "FileObject=%p LogHandle=%p FlushToLsnRoutine=%p\n",
-        FileObject, LogHandle, FlushToLsnRoutine);
-
-    UNIMPLEMENTED;
-}
-
-/*
- * @unimplemented
- */
-BOOLEAN
-NTAPI
-CcUninitializeCacheMap (
-    IN PFILE_OBJECT FileObject,
-    IN PLARGE_INTEGER TruncateSize OPTIONAL,
-    IN PCACHE_UNINITIALIZE_EVENT UninitializeCompleteEvent OPTIONAL)
-{
-    NTSTATUS Status;
-    PROS_SHARED_CACHE_MAP SharedCacheMap;
-    KIRQL OldIrql;
-
-    CCTRACE(CC_API_DEBUG, "FileObject=%p TruncateSize=%p UninitializeCompleteEvent=%p\n",
-        FileObject, TruncateSize, UninitializeCompleteEvent);
-
-    if (TruncateSize != NULL &&
-        FileObject->SectionObjectPointer != NULL &&
-        FileObject->SectionObjectPointer->SharedCacheMap != NULL)
-    {
-        SharedCacheMap = FileObject->SectionObjectPointer->SharedCacheMap;
-        KeAcquireSpinLock(&SharedCacheMap->CacheMapLock, &OldIrql);
-        if (SharedCacheMap->FileSize.QuadPart > TruncateSize->QuadPart)
-        {
-            SharedCacheMap->FileSize = *TruncateSize;
-        }
-        KeReleaseSpinLock(&SharedCacheMap->CacheMapLock, OldIrql);
-        CcPurgeCacheSection(FileObject->SectionObjectPointer,
-                            TruncateSize,
-                            0,
-                            FALSE);
-    }
-
-    Status = CcRosReleaseFileCache(FileObject);
-    if (UninitializeCompleteEvent)
-    {
-        KeSetEvent(&UninitializeCompleteEvent->Event, IO_NO_INCREMENT, FALSE);
-    }
-    return NT_SUCCESS(Status);
-}
-
-BOOLEAN
-NTAPI
-CcGetFileSizes (
-    IN PFILE_OBJECT FileObject,
-    IN PCC_FILE_SIZES FileSizes)
-{
-    PROS_SHARED_CACHE_MAP SharedCacheMap;
-
-    SharedCacheMap = FileObject->SectionObjectPointer->SharedCacheMap;
-
-    if (!SharedCacheMap)
-        return FALSE;
-
-    FileSizes->AllocationSize = SharedCacheMap->SectionSize;
-    FileSizes->FileSize = FileSizes->ValidDataLength = SharedCacheMap->FileSize;
-    return TRUE;
-}