3 Copyright (c) Alex Ionescu. All rights reserved.
11 Type definitions for the Cache Controller.
15 Alex Ionescu (alexi@tinykrnl.org) - Updated - 27-Feb-2006
27 #ifndef NTOS_MODE_USER
30 // Kernel Exported CcData
32 extern ULONG NTSYSAPI CcFastReadNotPossible
;
33 extern ULONG NTSYSAPI CcFastReadWait
;
34 extern ULONG NTSYSAPI CcFastReadResourceMiss
;
35 extern ULONG NTSYSAPI CcFastReadNoWait
;
36 extern ULONG NTSYSAPI CcFastMdlReadNotPossible
;
39 // Virtual Address Control BLock
44 struct _SHARED_CACHE_MAP
*SharedCacheMap
;
47 LARGE_INTEGER FileOffset
;
54 // Private Cache Map Structure and Flags
56 typedef struct _PRIVATE_CACHE_MAP_FLAGS
59 ULONG ReadAheadActive
:1;
60 ULONG ReadAheadEnabled
:1;
62 } PRIVATE_CACHE_MAP_FLAGS
;
64 #define PRIVATE_CACHE_MAP_READ_AHEAD_ACTIVE (1 << 16)
65 #define PRIVATE_CACHE_MAP_READ_AHEAD_ENABLED (1 << 17)
67 typedef struct _PRIVATE_CACHE_MAP
72 PRIVATE_CACHE_MAP_FLAGS Flags
;
76 PFILE_OBJECT FileObject
;
77 LARGE_INTEGER FileOffset1
;
78 LARGE_INTEGER BeyondLastByte1
;
79 LARGE_INTEGER FileOffset2
;
80 LARGE_INTEGER BeyondLastByte2
;
81 LARGE_INTEGER ReadAheadOffset
[2];
82 ULONG ReadAheadLength
[2];
83 KSPIN_LOCK ReadAheadSpinLock
;
84 LIST_ENTRY PrivateLinks
;
85 PVOID ReadAheadWorkItem
;
86 } PRIVATE_CACHE_MAP
, *PPRIVATE_CACHE_MAP
;
88 typedef struct _BITMAP_RANGE
96 } BITMAP_RANGE
, *PBITMAP_RANGE
;
105 LIST_ENTRY BitmapRanges
;
106 LONGLONG ResumeWritePage
;
107 BITMAP_RANGE BitmapRange1
;
108 BITMAP_RANGE BitmapRange2
;
109 BITMAP_RANGE BitmapRange3
;
112 #ifdef _NTIFS_INCLUDED_
117 typedef struct _SHARED_CACHE_MAP
122 LARGE_INTEGER FileSize
;
124 LARGE_INTEGER SectionSize
;
125 LARGE_INTEGER ValidDataLength
;
126 LARGE_INTEGER ValidDataGoal
;
127 PVACB InitialVacbs
[4];
129 PFILE_OBJECT FileObject
;
133 ULONG NeedToZeroPage
;
134 KSPIN_LOCK ActiveVacbSpinLock
;
135 ULONG VacbActiveCount
;
137 LIST_ENTRY SharedCacheMapLinks
;
143 PKEVENT WaitOnActiveCount
;
145 LONGLONG BeyondLastFlush
;
146 PCACHE_MANAGER_CALLBACKS Callbacks
;
147 PVOID LazyWriteContext
;
148 LIST_ENTRY PrivateList
;
150 PFLUSH_TO_LSN FlushToLsnRoutine
;
151 ULONG DirtyPageThreshold
;
152 ULONG LazyWritePassCount
;
153 PCACHE_UNINITIALIZE_EVENT UninitializeEvent
;
154 PVACB NeedToZeroVacb
;
155 KSPIN_LOCK BcbSpinLock
;
158 EX_PUSH_LOCK VacbPushLock
;
159 PRIVATE_CACHE_MAP PrivateCacheMap
;
160 } SHARED_CACHE_MAP
, *PSHARED_CACHE_MAP
;
162 #endif /* _NTIFS_INCLUDED_ */
165 // Deferred Write list entry
167 typedef struct _DEFERRED_WRITE
171 PFILE_OBJECT FileObject
;
173 LIST_ENTRY DeferredWriteLinks
;
175 PCC_POST_DEFERRED_WRITE PostRoutine
;
178 BOOLEAN LimitModifiedPages
;
179 } DEFERRED_WRITE
, *PDEFERRED_WRITE
;
181 #endif /* NTOS_MODE_USER */
182 #endif /* _CCTYPES_H */