2 * COPYRIGHT: See COPYING in the top level directory
3 * PROJECT: ReactOS kernel
4 * FILE: ntoskrnl/cc/cacheman.c
5 * PURPOSE: Cache manager
7 * PROGRAMMERS: David Welch (welch@cwcom.net)
10 /* INCLUDES *****************************************************************/
16 BOOLEAN CcPfEnablePrefetcher
;
17 PFSN_PREFETCHER_GLOBALS CcPfGlobals
;
19 /* FUNCTIONS *****************************************************************/
24 CcPfInitializePrefetcher(VOID
)
27 DbgPrintEx(DPFLTR_PREFETCHER_ID
,
29 "CCPF: InitializePrefetecher()\n");
31 /* Setup the Prefetcher Data */
32 InitializeListHead(&CcPfGlobals
.ActiveTraces
);
33 InitializeListHead(&CcPfGlobals
.CompletedTraces
);
34 ExInitializeFastMutex(&CcPfGlobals
.CompletedTracesLock
);
36 /* FIXME: Setup the rest of the prefetecher */
42 CcInitializeCacheManager(VOID
)
53 CcGetFlushedValidData (
54 IN PSECTION_OBJECT_POINTERS SectionObjectPointer
,
55 IN BOOLEAN BcbListHeld
86 IN PFILE_OBJECT FileObject
,
87 IN PLARGE_INTEGER FileOffset
,
99 CcSetAdditionalCacheAttributes (
100 IN PFILE_OBJECT FileObject
,
101 IN BOOLEAN DisableReadAhead
,
102 IN BOOLEAN DisableWriteBehind
105 CCTRACE(CC_API_DEBUG
, "FileObject=%p DisableReadAhead=%d DisableWriteBehind=%d\n",
106 FileObject
, DisableReadAhead
, DisableWriteBehind
);
116 CcSetBcbOwnerPointer (
121 PINTERNAL_BCB iBcb
= Bcb
;
123 CCTRACE(CC_API_DEBUG
, "Bcb=%p Owner=%p\n",
126 if (!ExIsResourceAcquiredExclusiveLite(&iBcb
->Lock
) && !ExIsResourceAcquiredSharedLite(&iBcb
->Lock
))
128 DPRINT1("Current thread doesn't own resource!\n");
132 ExSetResourceOwnerPointer(&iBcb
->Lock
, Owner
);
140 CcSetDirtyPageThreshold (
141 IN PFILE_OBJECT FileObject
,
142 IN ULONG DirtyPageThreshold
145 CCTRACE(CC_API_DEBUG
, "FileObject=%p DirtyPageThreshold=%lu\n",
146 FileObject
, DirtyPageThreshold
);
156 CcSetReadAheadGranularity (
157 IN PFILE_OBJECT FileObject
,
161 CCTRACE(CC_API_DEBUG
, "FileObject=%p Granularity=%lu\n",
162 FileObject
, Granularity
);