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)
8 * Pierre Schweitzer (pierre@reactos.org)
11 /* INCLUDES *****************************************************************/
17 BOOLEAN CcPfEnablePrefetcher
;
18 PFSN_PREFETCHER_GLOBALS CcPfGlobals
;
20 /* FUNCTIONS *****************************************************************/
25 CcPfInitializePrefetcher(VOID
)
28 DbgPrintEx(DPFLTR_PREFETCHER_ID
,
30 "CCPF: InitializePrefetecher()\n");
32 /* Setup the Prefetcher Data */
33 InitializeListHead(&CcPfGlobals
.ActiveTraces
);
34 InitializeListHead(&CcPfGlobals
.CompletedTraces
);
35 ExInitializeFastMutex(&CcPfGlobals
.CompletedTracesLock
);
37 /* FIXME: Setup the rest of the prefetecher */
43 CcInitializeCacheManager(VOID
)
50 CcShutdownSystem(VOID
)
52 /* Inform the lazy writer it has to stop activity */
53 CcShutdownLazyWriter();
61 CcGetFlushedValidData (
62 IN PSECTION_OBJECT_POINTERS SectionObjectPointer
,
63 IN BOOLEAN BcbListHeld
94 IN PFILE_OBJECT FileObject
,
95 IN PLARGE_INTEGER FileOffset
,
107 CcSetAdditionalCacheAttributes (
108 IN PFILE_OBJECT FileObject
,
109 IN BOOLEAN DisableReadAhead
,
110 IN BOOLEAN DisableWriteBehind
113 CCTRACE(CC_API_DEBUG
, "FileObject=%p DisableReadAhead=%d DisableWriteBehind=%d\n",
114 FileObject
, DisableReadAhead
, DisableWriteBehind
);
124 CcSetBcbOwnerPointer (
129 PINTERNAL_BCB iBcb
= Bcb
;
131 CCTRACE(CC_API_DEBUG
, "Bcb=%p Owner=%p\n",
134 if (!ExIsResourceAcquiredExclusiveLite(&iBcb
->Lock
) && !ExIsResourceAcquiredSharedLite(&iBcb
->Lock
))
136 DPRINT1("Current thread doesn't own resource!\n");
140 ExSetResourceOwnerPointer(&iBcb
->Lock
, Owner
);
148 CcSetDirtyPageThreshold (
149 IN PFILE_OBJECT FileObject
,
150 IN ULONG DirtyPageThreshold
153 PFSRTL_COMMON_FCB_HEADER Fcb
;
154 PROS_SHARED_CACHE_MAP SharedCacheMap
;
156 CCTRACE(CC_API_DEBUG
, "FileObject=%p DirtyPageThreshold=%lu\n",
157 FileObject
, DirtyPageThreshold
);
159 SharedCacheMap
= FileObject
->SectionObjectPointer
->SharedCacheMap
;
160 if (SharedCacheMap
!= NULL
)
162 SharedCacheMap
->DirtyPageThreshold
= DirtyPageThreshold
;
165 Fcb
= FileObject
->FsContext
;
166 if (!BooleanFlagOn(Fcb
->Flags
, FSRTL_FLAG_LIMIT_MODIFIED_PAGES
))
168 SetFlag(Fcb
->Flags
, FSRTL_FLAG_LIMIT_MODIFIED_PAGES
);
177 CcSetReadAheadGranularity (
178 IN PFILE_OBJECT FileObject
,
184 CCTRACE(CC_API_DEBUG
, "FileObject=%p Granularity=%lu\n",
185 FileObject
, Granularity
);
187 if (!Warn
++) UNIMPLEMENTED
;