mirror of
https://github.com/reactos/reactos.git
synced 2025-04-15 01:47:30 +00:00
Added Stubs for Cache Manager functions in their appropriate file.
svn path=/trunk/; revision=9789
This commit is contained in:
parent
1fe3a2d6c3
commit
821f740fc7
6 changed files with 634 additions and 591 deletions
|
@ -40,3 +40,125 @@ CcInit(VOID)
|
|||
{
|
||||
CcInitView();
|
||||
}
|
||||
|
||||
/*
|
||||
* @unimplemented
|
||||
*/
|
||||
LARGE_INTEGER
|
||||
STDCALL
|
||||
CcGetFlushedValidData (
|
||||
IN PSECTION_OBJECT_POINTERS SectionObjectPointer,
|
||||
IN BOOLEAN BcbListHeld
|
||||
)
|
||||
{
|
||||
UNIMPLEMENTED;
|
||||
|
||||
LARGE_INTEGER i;
|
||||
i.QuadPart = 0;
|
||||
return i;
|
||||
}
|
||||
|
||||
/*
|
||||
* @unimplemented
|
||||
*/
|
||||
VOID
|
||||
STDCALL
|
||||
CcRepinBcb (
|
||||
IN PVOID Bcb
|
||||
)
|
||||
{
|
||||
UNIMPLEMENTED;
|
||||
}
|
||||
|
||||
/*
|
||||
* @unimplemented
|
||||
*/
|
||||
VOID
|
||||
STDCALL
|
||||
CcRemapBcb (
|
||||
IN PVOID Bcb
|
||||
)
|
||||
{
|
||||
UNIMPLEMENTED;
|
||||
}
|
||||
|
||||
/*
|
||||
* @unimplemented
|
||||
*/
|
||||
VOID
|
||||
STDCALL
|
||||
CcScheduleReadAhead (
|
||||
IN PFILE_OBJECT FileObject,
|
||||
IN PLARGE_INTEGER FileOffset,
|
||||
IN ULONG Length
|
||||
)
|
||||
{
|
||||
UNIMPLEMENTED;
|
||||
}
|
||||
|
||||
/*
|
||||
* @unimplemented
|
||||
*/
|
||||
VOID
|
||||
STDCALL
|
||||
CcSetAdditionalCacheAttributes (
|
||||
IN PFILE_OBJECT FileObject,
|
||||
IN BOOLEAN DisableReadAhead,
|
||||
IN BOOLEAN DisableWriteBehind
|
||||
)
|
||||
{
|
||||
UNIMPLEMENTED;
|
||||
}
|
||||
|
||||
/*
|
||||
* @unimplemented
|
||||
*/
|
||||
VOID
|
||||
STDCALL
|
||||
CcSetBcbOwnerPointer (
|
||||
IN PVOID Bcb,
|
||||
IN PVOID Owner
|
||||
)
|
||||
{
|
||||
UNIMPLEMENTED;
|
||||
}
|
||||
|
||||
/*
|
||||
* @unimplemented
|
||||
*/
|
||||
VOID
|
||||
STDCALL
|
||||
CcSetDirtyPageThreshold (
|
||||
IN PFILE_OBJECT FileObject,
|
||||
IN ULONG DirtyPageThreshold
|
||||
)
|
||||
{
|
||||
UNIMPLEMENTED;
|
||||
}
|
||||
|
||||
/*
|
||||
* @unimplemented
|
||||
*/
|
||||
VOID
|
||||
STDCALL
|
||||
CcSetReadAheadGranularity (
|
||||
IN PFILE_OBJECT FileObject,
|
||||
IN ULONG Granularity
|
||||
)
|
||||
{
|
||||
UNIMPLEMENTED;
|
||||
}
|
||||
|
||||
/*
|
||||
* @unimplemented
|
||||
*/
|
||||
VOID
|
||||
STDCALL
|
||||
CcUnpinRepinnedBcb (
|
||||
IN PVOID Bcb,
|
||||
IN BOOLEAN WriteThrough,
|
||||
IN PIO_STATUS_BLOCK IoStatus
|
||||
)
|
||||
{
|
||||
UNIMPLEMENTED;
|
||||
}
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $Id: copy.c,v 1.26 2004/06/20 02:10:07 vizzini Exp $
|
||||
/* $Id: copy.c,v 1.27 2004/06/21 04:11:44 ion Exp $
|
||||
*
|
||||
* COPYRIGHT: See COPYING in the top level directory
|
||||
* PROJECT: ReactOS kernel
|
||||
|
@ -284,7 +284,6 @@ WriteCacheSegment(PCACHE_SEGMENT CacheSeg)
|
|||
return(STATUS_SUCCESS);
|
||||
}
|
||||
|
||||
/* STUBS */
|
||||
|
||||
/*
|
||||
* @unimplemented
|
||||
|
@ -300,442 +299,6 @@ CcCanIWrite (
|
|||
return FALSE;
|
||||
}
|
||||
|
||||
/*
|
||||
* @unimplemented
|
||||
*/
|
||||
VOID
|
||||
STDCALL
|
||||
CcDeferWrite (
|
||||
IN PFILE_OBJECT FileObject,
|
||||
IN PCC_POST_DEFERRED_WRITE PostRoutine,
|
||||
IN PVOID Context1,
|
||||
IN PVOID Context2,
|
||||
IN ULONG BytesToWrite,
|
||||
IN BOOLEAN Retrying
|
||||
)
|
||||
{
|
||||
UNIMPLEMENTED;
|
||||
}
|
||||
|
||||
/*
|
||||
* @unimplemented
|
||||
*/
|
||||
BOOLEAN
|
||||
STDCALL
|
||||
CcFastCopyRead (
|
||||
IN PFILE_OBJECT FileObject,
|
||||
IN ULONG FileOffset,
|
||||
IN ULONG Length,
|
||||
IN ULONG PageCount,
|
||||
OUT PVOID Buffer,
|
||||
OUT PIO_STATUS_BLOCK IoStatus
|
||||
)
|
||||
{
|
||||
UNIMPLEMENTED;
|
||||
return FALSE;
|
||||
}
|
||||
/*
|
||||
* @unimplemented
|
||||
*/
|
||||
BOOLEAN
|
||||
STDCALL
|
||||
CcFastCopyWrite (
|
||||
IN PFILE_OBJECT FileObject,
|
||||
IN PLARGE_INTEGER FileOffset,
|
||||
IN ULONG Length,
|
||||
IN PVOID Buffer
|
||||
)
|
||||
{
|
||||
UNIMPLEMENTED;
|
||||
return FALSE;
|
||||
}
|
||||
/*
|
||||
* @unimplemented
|
||||
*/
|
||||
LARGE_INTEGER
|
||||
STDCALL
|
||||
CcGetDirtyPages (
|
||||
IN PVOID LogHandle,
|
||||
IN PDIRTY_PAGE_ROUTINE DirtyPageRoutine,
|
||||
IN PVOID Context1,
|
||||
IN PVOID Context2
|
||||
)
|
||||
{
|
||||
UNIMPLEMENTED;
|
||||
|
||||
LARGE_INTEGER i;
|
||||
i.QuadPart = 0;
|
||||
return i;
|
||||
}
|
||||
/*
|
||||
* @unimplemented
|
||||
*/
|
||||
PFILE_OBJECT
|
||||
STDCALL
|
||||
CcGetFileObjectFromBcb (
|
||||
IN PVOID Bcb
|
||||
)
|
||||
{
|
||||
UNIMPLEMENTED;
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* @unimplemented
|
||||
*/
|
||||
VOID
|
||||
STDCALL
|
||||
CcInitializeCacheMap (
|
||||
IN PFILE_OBJECT FileObject,
|
||||
IN PCC_FILE_SIZES FileSizes,
|
||||
IN BOOLEAN PinAccess,
|
||||
IN PCACHE_MANAGER_CALLBACKS CallBacks,
|
||||
IN PVOID LazyWriterContext
|
||||
)
|
||||
{
|
||||
UNIMPLEMENTED;
|
||||
}
|
||||
|
||||
/*
|
||||
* @unimplemented
|
||||
*/
|
||||
BOOLEAN
|
||||
STDCALL
|
||||
CcIsThereDirtyData (
|
||||
IN PVPB Vpb
|
||||
)
|
||||
{
|
||||
UNIMPLEMENTED;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* @unimplemented
|
||||
*/
|
||||
LARGE_INTEGER
|
||||
STDCALL
|
||||
CcGetLsnForFileObject (
|
||||
IN PFILE_OBJECT FileObject,
|
||||
OUT PLARGE_INTEGER OldestLsn OPTIONAL
|
||||
)
|
||||
{
|
||||
UNIMPLEMENTED;
|
||||
|
||||
LARGE_INTEGER i;
|
||||
i.QuadPart = 0;
|
||||
return i;
|
||||
}
|
||||
|
||||
/*
|
||||
* @unimplemented
|
||||
*/
|
||||
LARGE_INTEGER
|
||||
STDCALL
|
||||
CcGetFlushedValidData (
|
||||
IN PSECTION_OBJECT_POINTERS SectionObjectPointer,
|
||||
IN BOOLEAN BcbListHeld
|
||||
)
|
||||
{
|
||||
UNIMPLEMENTED;
|
||||
|
||||
LARGE_INTEGER i;
|
||||
i.QuadPart = 0;
|
||||
return i;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* @unimplemented
|
||||
*/
|
||||
VOID
|
||||
STDCALL
|
||||
CcMdlRead (
|
||||
IN PFILE_OBJECT FileObject,
|
||||
IN PLARGE_INTEGER FileOffset,
|
||||
IN ULONG Length,
|
||||
OUT PMDL * MdlChain,
|
||||
OUT PIO_STATUS_BLOCK IoStatus
|
||||
)
|
||||
{
|
||||
UNIMPLEMENTED;
|
||||
}
|
||||
|
||||
/*
|
||||
* @unimplemented
|
||||
*/
|
||||
VOID
|
||||
STDCALL
|
||||
CcMdlWriteComplete (
|
||||
IN PFILE_OBJECT FileObject,
|
||||
IN PLARGE_INTEGER FileOffset,
|
||||
IN PMDL MdlChain
|
||||
)
|
||||
{
|
||||
UNIMPLEMENTED;
|
||||
}
|
||||
|
||||
/*
|
||||
* @unimplemented
|
||||
*/
|
||||
VOID
|
||||
STDCALL
|
||||
CcMdlWriteAbort (
|
||||
IN PFILE_OBJECT FileObject,
|
||||
IN PMDL MdlChain
|
||||
)
|
||||
{
|
||||
UNIMPLEMENTED;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* @unimplemented
|
||||
*/
|
||||
BOOLEAN
|
||||
STDCALL
|
||||
CcPinMappedData (
|
||||
IN PFILE_OBJECT FileObject,
|
||||
IN PLARGE_INTEGER FileOffset,
|
||||
IN ULONG Length,
|
||||
IN BOOLEAN Wait,
|
||||
OUT PVOID * Bcb
|
||||
)
|
||||
{
|
||||
UNIMPLEMENTED;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/*
|
||||
* @unimplemented
|
||||
*/
|
||||
BOOLEAN
|
||||
STDCALL
|
||||
CcPinRead (
|
||||
IN PFILE_OBJECT FileObject,
|
||||
IN PLARGE_INTEGER FileOffset,
|
||||
IN ULONG Length,
|
||||
IN BOOLEAN Wait,
|
||||
OUT PVOID * Bcb,
|
||||
OUT PVOID * Buffer
|
||||
)
|
||||
{
|
||||
UNIMPLEMENTED;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/*
|
||||
* @unimplemented
|
||||
*/
|
||||
VOID
|
||||
STDCALL
|
||||
CcPrepareMdlWrite (
|
||||
IN PFILE_OBJECT FileObject,
|
||||
IN PLARGE_INTEGER FileOffset,
|
||||
IN ULONG Length,
|
||||
OUT PMDL * MdlChain,
|
||||
OUT PIO_STATUS_BLOCK IoStatus
|
||||
)
|
||||
{
|
||||
UNIMPLEMENTED;
|
||||
}
|
||||
|
||||
/*
|
||||
* @unimplemented
|
||||
*/
|
||||
BOOLEAN
|
||||
STDCALL
|
||||
CcPreparePinWrite (
|
||||
IN PFILE_OBJECT FileObject,
|
||||
IN PLARGE_INTEGER FileOffset,
|
||||
IN ULONG Length,
|
||||
IN BOOLEAN Zero,
|
||||
IN BOOLEAN Wait,
|
||||
OUT PVOID * Bcb,
|
||||
OUT PVOID * Buffer
|
||||
)
|
||||
{
|
||||
UNIMPLEMENTED;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/*
|
||||
* @unimplemented
|
||||
*/
|
||||
BOOLEAN
|
||||
STDCALL
|
||||
CcPurgeCacheSection (
|
||||
IN PSECTION_OBJECT_POINTERS SectionObjectPointer,
|
||||
IN PLARGE_INTEGER FileOffset OPTIONAL,
|
||||
IN ULONG Length,
|
||||
IN BOOLEAN UninitializeCacheMaps
|
||||
)
|
||||
{
|
||||
UNIMPLEMENTED;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/*
|
||||
* @unimplemented
|
||||
*/
|
||||
VOID
|
||||
STDCALL
|
||||
CcRepinBcb (
|
||||
IN PVOID Bcb
|
||||
)
|
||||
{
|
||||
UNIMPLEMENTED;
|
||||
}
|
||||
|
||||
/*
|
||||
* @unimplemented
|
||||
*/
|
||||
VOID
|
||||
STDCALL
|
||||
CcRemapBcb (
|
||||
IN PVOID Bcb
|
||||
)
|
||||
{
|
||||
UNIMPLEMENTED;
|
||||
}
|
||||
|
||||
/*
|
||||
* @unimplemented
|
||||
*/
|
||||
VOID
|
||||
STDCALL
|
||||
CcScheduleReadAhead (
|
||||
IN PFILE_OBJECT FileObject,
|
||||
IN PLARGE_INTEGER FileOffset,
|
||||
IN ULONG Length
|
||||
)
|
||||
{
|
||||
UNIMPLEMENTED;
|
||||
}
|
||||
|
||||
/*
|
||||
* @unimplemented
|
||||
*/
|
||||
VOID
|
||||
STDCALL
|
||||
CcSetAdditionalCacheAttributes (
|
||||
IN PFILE_OBJECT FileObject,
|
||||
IN BOOLEAN DisableReadAhead,
|
||||
IN BOOLEAN DisableWriteBehind
|
||||
)
|
||||
{
|
||||
UNIMPLEMENTED;
|
||||
}
|
||||
|
||||
/*
|
||||
* @unimplemented
|
||||
*/
|
||||
VOID
|
||||
STDCALL
|
||||
CcSetBcbOwnerPointer (
|
||||
IN PVOID Bcb,
|
||||
IN PVOID Owner
|
||||
)
|
||||
{
|
||||
UNIMPLEMENTED;
|
||||
}
|
||||
|
||||
/*
|
||||
* @unimplemented
|
||||
*/
|
||||
VOID
|
||||
STDCALL
|
||||
CcSetDirtyPageThreshold (
|
||||
IN PFILE_OBJECT FileObject,
|
||||
IN ULONG DirtyPageThreshold
|
||||
)
|
||||
{
|
||||
UNIMPLEMENTED;
|
||||
}
|
||||
|
||||
/*
|
||||
* @unimplemented
|
||||
*/
|
||||
VOID
|
||||
STDCALL
|
||||
CcSetLogHandleForFile (
|
||||
IN PFILE_OBJECT FileObject,
|
||||
IN PVOID LogHandle,
|
||||
IN PFLUSH_TO_LSN FlushToLsnRoutine
|
||||
)
|
||||
{
|
||||
UNIMPLEMENTED;
|
||||
}
|
||||
|
||||
/*
|
||||
* @unimplemented
|
||||
*/
|
||||
VOID
|
||||
STDCALL
|
||||
CcSetReadAheadGranularity (
|
||||
IN PFILE_OBJECT FileObject,
|
||||
IN ULONG Granularity
|
||||
)
|
||||
{
|
||||
UNIMPLEMENTED;
|
||||
}
|
||||
|
||||
/*
|
||||
* @unimplemented
|
||||
*/
|
||||
BOOLEAN
|
||||
STDCALL
|
||||
CcUninitializeCacheMap (
|
||||
IN PFILE_OBJECT FileObject,
|
||||
IN PLARGE_INTEGER TruncateSize OPTIONAL,
|
||||
IN PCACHE_UNINITIALIZE_EVENT UninitializeCompleteEvent OPTIONAL
|
||||
)
|
||||
{
|
||||
UNIMPLEMENTED;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/*
|
||||
* @unimplemented
|
||||
*/
|
||||
VOID
|
||||
STDCALL
|
||||
CcUnpinDataForThread (
|
||||
IN PVOID Bcb,
|
||||
IN ERESOURCE_THREAD ResourceThreadId
|
||||
)
|
||||
{
|
||||
UNIMPLEMENTED;
|
||||
}
|
||||
|
||||
/*
|
||||
* @unimplemented
|
||||
*/
|
||||
VOID
|
||||
STDCALL
|
||||
CcUnpinRepinnedBcb (
|
||||
IN PVOID Bcb,
|
||||
IN BOOLEAN WriteThrough,
|
||||
IN PIO_STATUS_BLOCK IoStatus
|
||||
)
|
||||
{
|
||||
UNIMPLEMENTED;
|
||||
}
|
||||
|
||||
/*
|
||||
* @unimplemented
|
||||
*/
|
||||
NTSTATUS
|
||||
STDCALL
|
||||
CcWaitForCurrentLazyWriterActivity (
|
||||
VOID
|
||||
)
|
||||
{
|
||||
UNIMPLEMENTED;
|
||||
return STATUS_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
/* STUBS END!!! */
|
||||
|
||||
/*
|
||||
* @implemented
|
||||
|
@ -978,6 +541,69 @@ CcCopyWrite (IN PFILE_OBJECT FileObject,
|
|||
return(TRUE);
|
||||
}
|
||||
|
||||
/*
|
||||
* @unimplemented
|
||||
*/
|
||||
VOID
|
||||
STDCALL
|
||||
CcDeferWrite (
|
||||
IN PFILE_OBJECT FileObject,
|
||||
IN PCC_POST_DEFERRED_WRITE PostRoutine,
|
||||
IN PVOID Context1,
|
||||
IN PVOID Context2,
|
||||
IN ULONG BytesToWrite,
|
||||
IN BOOLEAN Retrying
|
||||
)
|
||||
{
|
||||
UNIMPLEMENTED;
|
||||
}
|
||||
|
||||
/*
|
||||
* @unimplemented
|
||||
*/
|
||||
BOOLEAN
|
||||
STDCALL
|
||||
CcFastCopyRead (
|
||||
IN PFILE_OBJECT FileObject,
|
||||
IN ULONG FileOffset,
|
||||
IN ULONG Length,
|
||||
IN ULONG PageCount,
|
||||
OUT PVOID Buffer,
|
||||
OUT PIO_STATUS_BLOCK IoStatus
|
||||
)
|
||||
{
|
||||
UNIMPLEMENTED;
|
||||
return FALSE;
|
||||
}
|
||||
/*
|
||||
* @unimplemented
|
||||
*/
|
||||
BOOLEAN
|
||||
STDCALL
|
||||
CcFastCopyWrite (
|
||||
IN PFILE_OBJECT FileObject,
|
||||
IN PLARGE_INTEGER FileOffset,
|
||||
IN ULONG Length,
|
||||
IN PVOID Buffer
|
||||
)
|
||||
{
|
||||
UNIMPLEMENTED;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/*
|
||||
* @unimplemented
|
||||
*/
|
||||
NTSTATUS
|
||||
STDCALL
|
||||
CcWaitForCurrentLazyWriterActivity (
|
||||
VOID
|
||||
)
|
||||
{
|
||||
UNIMPLEMENTED;
|
||||
return STATUS_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
/*
|
||||
* @implemented
|
||||
*/
|
||||
|
@ -1139,4 +765,3 @@ CcZeroData (IN PFILE_OBJECT FileObject,
|
|||
}
|
||||
return(TRUE);
|
||||
}
|
||||
|
||||
|
|
238
reactos/ntoskrnl/cc/fs.c
Normal file
238
reactos/ntoskrnl/cc/fs.c
Normal file
|
@ -0,0 +1,238 @@
|
|||
/* 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
|
||||
* PROGRAMMER: Alex Ionescu
|
||||
* UPDATE HISTORY:
|
||||
* Created 20/06/04
|
||||
*/
|
||||
|
||||
/* INCLUDES ******************************************************************/
|
||||
|
||||
#include <ddk/ntddk.h>
|
||||
#include <ddk/ntifs.h>
|
||||
#include <internal/mm.h>
|
||||
#include <internal/cc.h>
|
||||
#include <internal/pool.h>
|
||||
#include <internal/io.h>
|
||||
#include <ntos/minmax.h>
|
||||
|
||||
#define NDEBUG
|
||||
#include <internal/debug.h>
|
||||
|
||||
/* GLOBALS *****************************************************************/
|
||||
|
||||
extern FAST_MUTEX ViewLock;
|
||||
extern ULONG DirtyPageCount;
|
||||
|
||||
NTSTATUS CcRosInternalFreeCacheSegment(PCACHE_SEGMENT CacheSeg);
|
||||
|
||||
/* FUNCTIONS *****************************************************************/
|
||||
|
||||
/*
|
||||
* @unimplemented
|
||||
*/
|
||||
LARGE_INTEGER
|
||||
STDCALL
|
||||
CcGetDirtyPages (
|
||||
IN PVOID LogHandle,
|
||||
IN PDIRTY_PAGE_ROUTINE DirtyPageRoutine,
|
||||
IN PVOID Context1,
|
||||
IN PVOID Context2
|
||||
)
|
||||
{
|
||||
UNIMPLEMENTED;
|
||||
|
||||
LARGE_INTEGER i;
|
||||
i.QuadPart = 0;
|
||||
return i;
|
||||
}
|
||||
|
||||
/*
|
||||
* @unimplemented
|
||||
*/
|
||||
PFILE_OBJECT
|
||||
STDCALL
|
||||
CcGetFileObjectFromBcb (
|
||||
IN PVOID Bcb
|
||||
)
|
||||
{
|
||||
UNIMPLEMENTED;
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* @unimplemented
|
||||
*/
|
||||
LARGE_INTEGER
|
||||
STDCALL
|
||||
CcGetLsnForFileObject (
|
||||
IN PFILE_OBJECT FileObject,
|
||||
OUT PLARGE_INTEGER OldestLsn OPTIONAL
|
||||
)
|
||||
{
|
||||
UNIMPLEMENTED;
|
||||
|
||||
LARGE_INTEGER i;
|
||||
i.QuadPart = 0;
|
||||
return i;
|
||||
}
|
||||
|
||||
/*
|
||||
* @unimplemented
|
||||
*/
|
||||
VOID
|
||||
STDCALL
|
||||
CcInitializeCacheMap (
|
||||
IN PFILE_OBJECT FileObject,
|
||||
IN PCC_FILE_SIZES FileSizes,
|
||||
IN BOOLEAN PinAccess,
|
||||
IN PCACHE_MANAGER_CALLBACKS CallBacks,
|
||||
IN PVOID LazyWriterContext
|
||||
)
|
||||
{
|
||||
UNIMPLEMENTED;
|
||||
}
|
||||
|
||||
/*
|
||||
* @unimplemented
|
||||
*/
|
||||
BOOLEAN
|
||||
STDCALL
|
||||
CcIsThereDirtyData (
|
||||
IN PVPB Vpb
|
||||
)
|
||||
{
|
||||
UNIMPLEMENTED;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/*
|
||||
* @unimplemented
|
||||
*/
|
||||
BOOLEAN
|
||||
STDCALL
|
||||
CcPurgeCacheSection (
|
||||
IN PSECTION_OBJECT_POINTERS SectionObjectPointer,
|
||||
IN PLARGE_INTEGER FileOffset OPTIONAL,
|
||||
IN ULONG Length,
|
||||
IN BOOLEAN UninitializeCacheMaps
|
||||
)
|
||||
{
|
||||
UNIMPLEMENTED;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* @implemented
|
||||
*/
|
||||
VOID STDCALL
|
||||
CcSetFileSizes (IN PFILE_OBJECT FileObject,
|
||||
IN PCC_FILE_SIZES FileSizes)
|
||||
{
|
||||
KIRQL oldirql;
|
||||
PBCB Bcb;
|
||||
PLIST_ENTRY current_entry;
|
||||
PCACHE_SEGMENT current;
|
||||
LIST_ENTRY FreeListHead;
|
||||
NTSTATUS Status;
|
||||
|
||||
DPRINT("CcSetFileSizes(FileObject %x, FileSizes %x)\n",
|
||||
FileObject, FileSizes);
|
||||
DPRINT("AllocationSize %d, FileSize %d, ValidDataLength %d\n",
|
||||
(ULONG)FileSizes->AllocationSize.QuadPart,
|
||||
(ULONG)FileSizes->FileSize.QuadPart,
|
||||
(ULONG)FileSizes->ValidDataLength.QuadPart);
|
||||
|
||||
Bcb = FileObject->SectionObjectPointer->SharedCacheMap;
|
||||
assert(Bcb);
|
||||
|
||||
if (FileSizes->AllocationSize.QuadPart < Bcb->AllocationSize.QuadPart)
|
||||
{
|
||||
InitializeListHead(&FreeListHead);
|
||||
ExAcquireFastMutex(&ViewLock);
|
||||
KeAcquireSpinLock(&Bcb->BcbLock, &oldirql);
|
||||
|
||||
current_entry = Bcb->BcbSegmentListHead.Flink;
|
||||
while (current_entry != &Bcb->BcbSegmentListHead)
|
||||
{
|
||||
current = CONTAINING_RECORD(current_entry, CACHE_SEGMENT, BcbSegmentListEntry);
|
||||
current_entry = current_entry->Flink;
|
||||
if (current->FileOffset > FileSizes->AllocationSize.QuadPart)
|
||||
{
|
||||
if (current->ReferenceCount == 0 || (current->ReferenceCount == 1 && current->Dirty))
|
||||
{
|
||||
RemoveEntryList(¤t->BcbSegmentListEntry);
|
||||
RemoveEntryList(¤t->CacheSegmentListEntry);
|
||||
RemoveEntryList(¤t->CacheSegmentLRUListEntry);
|
||||
if (current->Dirty)
|
||||
{
|
||||
RemoveEntryList(¤t->DirtySegmentListEntry);
|
||||
DirtyPageCount -= Bcb->CacheSegmentSize / PAGE_SIZE;
|
||||
}
|
||||
InsertHeadList(&FreeListHead, ¤t->BcbSegmentListEntry);
|
||||
}
|
||||
else
|
||||
{
|
||||
DPRINT1("Anyone has referenced a cache segment behind the new size.\n");
|
||||
KEBUGCHECK(0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Bcb->AllocationSize = FileSizes->AllocationSize;
|
||||
Bcb->FileSize = FileSizes->FileSize;
|
||||
KeReleaseSpinLock(&Bcb->BcbLock, oldirql);
|
||||
ExReleaseFastMutex(&ViewLock);
|
||||
|
||||
current_entry = FreeListHead.Flink;
|
||||
while(current_entry != &FreeListHead)
|
||||
{
|
||||
current = CONTAINING_RECORD(current_entry, CACHE_SEGMENT, BcbSegmentListEntry);
|
||||
current_entry = current_entry->Flink;
|
||||
Status = CcRosInternalFreeCacheSegment(current);
|
||||
if (!NT_SUCCESS(Status))
|
||||
{
|
||||
DPRINT1("CcRosInternalFreeCacheSegment failed, status = %x\n");
|
||||
KEBUGCHECK(0);
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
KeAcquireSpinLock(&Bcb->BcbLock, &oldirql);
|
||||
Bcb->AllocationSize = FileSizes->AllocationSize;
|
||||
Bcb->FileSize = FileSizes->FileSize;
|
||||
KeReleaseSpinLock(&Bcb->BcbLock, oldirql);
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* @unimplemented
|
||||
*/
|
||||
VOID
|
||||
STDCALL
|
||||
CcSetLogHandleForFile (
|
||||
IN PFILE_OBJECT FileObject,
|
||||
IN PVOID LogHandle,
|
||||
IN PFLUSH_TO_LSN FlushToLsnRoutine
|
||||
)
|
||||
{
|
||||
UNIMPLEMENTED;
|
||||
}
|
||||
|
||||
/*
|
||||
* @unimplemented
|
||||
*/
|
||||
BOOLEAN
|
||||
STDCALL
|
||||
CcUninitializeCacheMap (
|
||||
IN PFILE_OBJECT FileObject,
|
||||
IN PLARGE_INTEGER TruncateSize OPTIONAL,
|
||||
IN PCACHE_UNINITIALIZE_EVENT UninitializeCompleteEvent OPTIONAL
|
||||
)
|
||||
{
|
||||
UNIMPLEMENTED;
|
||||
return FALSE;
|
||||
}
|
135
reactos/ntoskrnl/cc/mdl.c
Normal file
135
reactos/ntoskrnl/cc/mdl.c
Normal file
|
@ -0,0 +1,135 @@
|
|||
/* COPYRIGHT: See COPYING in the top level directory
|
||||
* PROJECT: ReactOS kernel
|
||||
* FILE: ntoskrnl/cc/fs.c
|
||||
* PURPOSE: Implements MDL Cache Manager Functions
|
||||
* PROGRAMMER: Alex Ionescu
|
||||
* UPDATE HISTORY:
|
||||
* Created 20/06/04
|
||||
*/
|
||||
|
||||
/* INCLUDES ******************************************************************/
|
||||
|
||||
#include <ddk/ntddk.h>
|
||||
#include <ddk/ntifs.h>
|
||||
#include <internal/mm.h>
|
||||
#include <internal/cc.h>
|
||||
#include <internal/pool.h>
|
||||
#include <internal/io.h>
|
||||
#include <ntos/minmax.h>
|
||||
|
||||
#define NDEBUG
|
||||
#include <internal/debug.h>
|
||||
|
||||
/* FUNCTIONS *****************************************************************/
|
||||
|
||||
/*
|
||||
* @unimplemented
|
||||
*/
|
||||
VOID
|
||||
STDCALL
|
||||
CcMdlRead (
|
||||
IN PFILE_OBJECT FileObject,
|
||||
IN PLARGE_INTEGER FileOffset,
|
||||
IN ULONG Length,
|
||||
OUT PMDL * MdlChain,
|
||||
OUT PIO_STATUS_BLOCK IoStatus
|
||||
)
|
||||
{
|
||||
UNIMPLEMENTED;
|
||||
}
|
||||
|
||||
/**********************************************************************
|
||||
* NAME INTERNAL
|
||||
* CcMdlReadCompleteDev@8
|
||||
*
|
||||
* DESCRIPTION
|
||||
*
|
||||
* ARGUMENTS
|
||||
* MdlChain
|
||||
* DeviceObject
|
||||
*
|
||||
* RETURN VALUE
|
||||
* None.
|
||||
*
|
||||
* NOTE
|
||||
* Used by CcMdlReadComplete@8 and FsRtl
|
||||
*
|
||||
*/
|
||||
VOID STDCALL
|
||||
CcMdlReadCompleteDev (IN PMDL MdlChain,
|
||||
IN PDEVICE_OBJECT DeviceObject)
|
||||
{
|
||||
UNIMPLEMENTED;
|
||||
}
|
||||
|
||||
|
||||
/**********************************************************************
|
||||
* NAME EXPORTED
|
||||
* CcMdlReadComplete@8
|
||||
*
|
||||
* DESCRIPTION
|
||||
*
|
||||
* ARGUMENTS
|
||||
*
|
||||
* RETURN VALUE
|
||||
* None.
|
||||
*
|
||||
* NOTE
|
||||
* From Bo Branten's ntifs.h v13.
|
||||
*
|
||||
* @unimplemented
|
||||
*/
|
||||
VOID STDCALL
|
||||
CcMdlReadComplete (IN PFILE_OBJECT FileObject,
|
||||
IN PMDL MdlChain)
|
||||
{
|
||||
PDEVICE_OBJECT DeviceObject = NULL;
|
||||
|
||||
DeviceObject = IoGetRelatedDeviceObject (FileObject);
|
||||
/* FIXME: try fast I/O first */
|
||||
CcMdlReadCompleteDev (MdlChain,
|
||||
DeviceObject);
|
||||
}
|
||||
|
||||
/*
|
||||
* @unimplemented
|
||||
*/
|
||||
VOID
|
||||
STDCALL
|
||||
CcMdlWriteComplete (
|
||||
IN PFILE_OBJECT FileObject,
|
||||
IN PLARGE_INTEGER FileOffset,
|
||||
IN PMDL MdlChain
|
||||
)
|
||||
{
|
||||
UNIMPLEMENTED;
|
||||
}
|
||||
|
||||
/*
|
||||
* @unimplemented
|
||||
*/
|
||||
VOID
|
||||
STDCALL
|
||||
CcMdlWriteAbort (
|
||||
IN PFILE_OBJECT FileObject,
|
||||
IN PMDL MdlChain
|
||||
)
|
||||
{
|
||||
UNIMPLEMENTED;
|
||||
}
|
||||
|
||||
/*
|
||||
* @unimplemented
|
||||
*/
|
||||
VOID
|
||||
STDCALL
|
||||
CcPrepareMdlWrite (
|
||||
IN PFILE_OBJECT FileObject,
|
||||
IN PLARGE_INTEGER FileOffset,
|
||||
IN ULONG Length,
|
||||
OUT PMDL * MdlChain,
|
||||
OUT PIO_STATUS_BLOCK IoStatus
|
||||
)
|
||||
{
|
||||
UNIMPLEMENTED;
|
||||
}
|
|
@ -16,147 +16,3 @@
|
|||
#define ROUND_UP(N, S) ((((N) + (S) - 1) / (S)) * (S))
|
||||
#define ROUND_DOWN(N, S) (((N) % (S)) ? ROUND_UP(N, S) - S : N)
|
||||
|
||||
extern FAST_MUTEX ViewLock;
|
||||
extern ULONG DirtyPageCount;
|
||||
|
||||
NTSTATUS CcRosInternalFreeCacheSegment(PCACHE_SEGMENT CacheSeg);
|
||||
|
||||
/* FUNCTIONS *****************************************************************/
|
||||
|
||||
/**********************************************************************
|
||||
* NAME INTERNAL
|
||||
* CcMdlReadCompleteDev@8
|
||||
*
|
||||
* DESCRIPTION
|
||||
*
|
||||
* ARGUMENTS
|
||||
* MdlChain
|
||||
* DeviceObject
|
||||
*
|
||||
* RETURN VALUE
|
||||
* None.
|
||||
*
|
||||
* NOTE
|
||||
* Used by CcMdlReadComplete@8 and FsRtl
|
||||
*
|
||||
*/
|
||||
VOID STDCALL
|
||||
CcMdlReadCompleteDev (IN PMDL MdlChain,
|
||||
IN PDEVICE_OBJECT DeviceObject)
|
||||
{
|
||||
UNIMPLEMENTED;
|
||||
}
|
||||
|
||||
|
||||
/**********************************************************************
|
||||
* NAME EXPORTED
|
||||
* CcMdlReadComplete@8
|
||||
*
|
||||
* DESCRIPTION
|
||||
*
|
||||
* ARGUMENTS
|
||||
*
|
||||
* RETURN VALUE
|
||||
* None.
|
||||
*
|
||||
* NOTE
|
||||
* From Bo Branten's ntifs.h v13.
|
||||
*
|
||||
* @unimplemented
|
||||
*/
|
||||
VOID STDCALL
|
||||
CcMdlReadComplete (IN PFILE_OBJECT FileObject,
|
||||
IN PMDL MdlChain)
|
||||
{
|
||||
PDEVICE_OBJECT DeviceObject = NULL;
|
||||
|
||||
DeviceObject = IoGetRelatedDeviceObject (FileObject);
|
||||
/* FIXME: try fast I/O first */
|
||||
CcMdlReadCompleteDev (MdlChain,
|
||||
DeviceObject);
|
||||
}
|
||||
|
||||
/*
|
||||
* @implemented
|
||||
*/
|
||||
VOID STDCALL
|
||||
CcSetFileSizes (IN PFILE_OBJECT FileObject,
|
||||
IN PCC_FILE_SIZES FileSizes)
|
||||
{
|
||||
KIRQL oldirql;
|
||||
PBCB Bcb;
|
||||
PLIST_ENTRY current_entry;
|
||||
PCACHE_SEGMENT current;
|
||||
LIST_ENTRY FreeListHead;
|
||||
NTSTATUS Status;
|
||||
|
||||
DPRINT("CcSetFileSizes(FileObject %x, FileSizes %x)\n",
|
||||
FileObject, FileSizes);
|
||||
DPRINT("AllocationSize %d, FileSize %d, ValidDataLength %d\n",
|
||||
(ULONG)FileSizes->AllocationSize.QuadPart,
|
||||
(ULONG)FileSizes->FileSize.QuadPart,
|
||||
(ULONG)FileSizes->ValidDataLength.QuadPart);
|
||||
|
||||
Bcb = FileObject->SectionObjectPointer->SharedCacheMap;
|
||||
assert(Bcb);
|
||||
|
||||
if (FileSizes->AllocationSize.QuadPart < Bcb->AllocationSize.QuadPart)
|
||||
{
|
||||
InitializeListHead(&FreeListHead);
|
||||
ExAcquireFastMutex(&ViewLock);
|
||||
KeAcquireSpinLock(&Bcb->BcbLock, &oldirql);
|
||||
|
||||
current_entry = Bcb->BcbSegmentListHead.Flink;
|
||||
while (current_entry != &Bcb->BcbSegmentListHead)
|
||||
{
|
||||
current = CONTAINING_RECORD(current_entry, CACHE_SEGMENT, BcbSegmentListEntry);
|
||||
current_entry = current_entry->Flink;
|
||||
if (current->FileOffset > FileSizes->AllocationSize.QuadPart)
|
||||
{
|
||||
if (current->ReferenceCount == 0 || (current->ReferenceCount == 1 && current->Dirty))
|
||||
{
|
||||
RemoveEntryList(¤t->BcbSegmentListEntry);
|
||||
RemoveEntryList(¤t->CacheSegmentListEntry);
|
||||
RemoveEntryList(¤t->CacheSegmentLRUListEntry);
|
||||
if (current->Dirty)
|
||||
{
|
||||
RemoveEntryList(¤t->DirtySegmentListEntry);
|
||||
DirtyPageCount -= Bcb->CacheSegmentSize / PAGE_SIZE;
|
||||
}
|
||||
InsertHeadList(&FreeListHead, ¤t->BcbSegmentListEntry);
|
||||
}
|
||||
else
|
||||
{
|
||||
DPRINT1("Anyone has referenced a cache segment behind the new size.\n");
|
||||
KEBUGCHECK(0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Bcb->AllocationSize = FileSizes->AllocationSize;
|
||||
Bcb->FileSize = FileSizes->FileSize;
|
||||
KeReleaseSpinLock(&Bcb->BcbLock, oldirql);
|
||||
ExReleaseFastMutex(&ViewLock);
|
||||
|
||||
current_entry = FreeListHead.Flink;
|
||||
while(current_entry != &FreeListHead)
|
||||
{
|
||||
current = CONTAINING_RECORD(current_entry, CACHE_SEGMENT, BcbSegmentListEntry);
|
||||
current_entry = current_entry->Flink;
|
||||
Status = CcRosInternalFreeCacheSegment(current);
|
||||
if (!NT_SUCCESS(Status))
|
||||
{
|
||||
DPRINT1("CcRosInternalFreeCacheSegment failed, status = %x\n");
|
||||
KEBUGCHECK(0);
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
KeAcquireSpinLock(&Bcb->BcbLock, &oldirql);
|
||||
Bcb->AllocationSize = FileSizes->AllocationSize;
|
||||
Bcb->FileSize = FileSizes->FileSize;
|
||||
KeReleaseSpinLock(&Bcb->BcbLock, oldirql);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $Id: pin.c,v 1.14 2003/12/30 18:52:03 fireball Exp $
|
||||
/* $Id: pin.c,v 1.15 2004/06/21 04:11:44 ion Exp $
|
||||
*
|
||||
* COPYRIGHT: See COPYING in the top level directory
|
||||
* PROJECT: ReactOS kernel
|
||||
|
@ -113,15 +113,57 @@ CcMapData (IN PFILE_OBJECT FileObject,
|
|||
}
|
||||
|
||||
/*
|
||||
* @implemented
|
||||
* @unimplemented
|
||||
*/
|
||||
VOID STDCALL
|
||||
CcUnpinData (IN PVOID Bcb)
|
||||
BOOLEAN
|
||||
STDCALL
|
||||
CcPinMappedData (
|
||||
IN PFILE_OBJECT FileObject,
|
||||
IN PLARGE_INTEGER FileOffset,
|
||||
IN ULONG Length,
|
||||
IN BOOLEAN Wait,
|
||||
OUT PVOID * Bcb
|
||||
)
|
||||
{
|
||||
PINTERNAL_BCB iBcb = Bcb;
|
||||
CcRosReleaseCacheSegment(iBcb->CacheSegment->Bcb, iBcb->CacheSegment, TRUE,
|
||||
iBcb->Dirty, FALSE);
|
||||
ExFreeToNPagedLookasideList(&iBcbLookasideList, iBcb);
|
||||
UNIMPLEMENTED;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/*
|
||||
* @unimplemented
|
||||
*/
|
||||
BOOLEAN
|
||||
STDCALL
|
||||
CcPinRead (
|
||||
IN PFILE_OBJECT FileObject,
|
||||
IN PLARGE_INTEGER FileOffset,
|
||||
IN ULONG Length,
|
||||
IN BOOLEAN Wait,
|
||||
OUT PVOID * Bcb,
|
||||
OUT PVOID * Buffer
|
||||
)
|
||||
{
|
||||
UNIMPLEMENTED;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/*
|
||||
* @unimplemented
|
||||
*/
|
||||
BOOLEAN
|
||||
STDCALL
|
||||
CcPreparePinWrite (
|
||||
IN PFILE_OBJECT FileObject,
|
||||
IN PLARGE_INTEGER FileOffset,
|
||||
IN ULONG Length,
|
||||
IN BOOLEAN Zero,
|
||||
IN BOOLEAN Wait,
|
||||
OUT PVOID * Bcb,
|
||||
OUT PVOID * Buffer
|
||||
)
|
||||
{
|
||||
UNIMPLEMENTED;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -135,3 +177,28 @@ CcSetDirtyPinnedData (IN PVOID Bcb,
|
|||
iBcb->Dirty = TRUE;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* @implemented
|
||||
*/
|
||||
VOID STDCALL
|
||||
CcUnpinData (IN PVOID Bcb)
|
||||
{
|
||||
PINTERNAL_BCB iBcb = Bcb;
|
||||
CcRosReleaseCacheSegment(iBcb->CacheSegment->Bcb, iBcb->CacheSegment, TRUE,
|
||||
iBcb->Dirty, FALSE);
|
||||
ExFreeToNPagedLookasideList(&iBcbLookasideList, iBcb);
|
||||
}
|
||||
|
||||
/*
|
||||
* @unimplemented
|
||||
*/
|
||||
VOID
|
||||
STDCALL
|
||||
CcUnpinDataForThread (
|
||||
IN PVOID Bcb,
|
||||
IN ERESOURCE_THREAD ResourceThreadId
|
||||
)
|
||||
{
|
||||
UNIMPLEMENTED;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue