[PRINTING]
[reactos.git] / reactos / sdk / include / ndk / cctypes.h
1 /*++ NDK Version: 0098
2
3 Copyright (c) Alex Ionescu. All rights reserved.
4
5 Header Name:
6
7 cctypes.h
8
9 Abstract:
10
11 Type definitions for the Cache Controller.
12
13 Author:
14
15 Alex Ionescu (alexi@tinykrnl.org) - Updated - 27-Feb-2006
16
17 --*/
18
19 #ifndef _CCTYPES_H
20 #define _CCTYPES_H
21
22 //
23 // Dependencies
24 //
25 #include <umtypes.h>
26
27 #ifndef NTOS_MODE_USER
28
29 //
30 // Kernel Exported CcData
31 //
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;
37
38 //
39 // Virtual Address Control BLock
40 //
41 typedef struct _VACB
42 {
43 PVOID BaseAddress;
44 struct _SHARED_CACHE_MAP *SharedCacheMap;
45 union
46 {
47 LARGE_INTEGER FileOffset;
48 USHORT ActiveCount;
49 } Overlay;
50 LIST_ENTRY LruList;
51 } VACB, *PVACB;
52
53 //
54 // Private Cache Map Structure and Flags
55 //
56 typedef struct _PRIVATE_CACHE_MAP_FLAGS
57 {
58 ULONG DontUse:16;
59 ULONG ReadAheadActive:1;
60 ULONG ReadAheadEnabled:1;
61 ULONG Available:14;
62 } PRIVATE_CACHE_MAP_FLAGS;
63
64 typedef struct _PRIVATE_CACHE_MAP
65 {
66 union
67 {
68 CSHORT NodeTypeCode;
69 PRIVATE_CACHE_MAP_FLAGS Flags;
70 ULONG UlongFlags;
71 };
72 ULONG ReadAheadMask;
73 PFILE_OBJECT FileObject;
74 LARGE_INTEGER FileOffset1;
75 LARGE_INTEGER BeyondLastByte1;
76 LARGE_INTEGER FileOffset2;
77 LARGE_INTEGER BeyondLastByte2;
78 LARGE_INTEGER ReadAheadOffset[2];
79 ULONG ReadAheadLength[2];
80 KSPIN_LOCK ReadAheadSpinLock;
81 LIST_ENTRY PrivateLinks;
82 } PRIVATE_CACHE_MAP, *PPRIVATE_CACHE_MAP;
83
84 typedef struct _BITMAP_RANGE
85 {
86 LIST_ENTRY Links;
87 LONGLONG BasePage;
88 ULONG FirstDirtyPage;
89 ULONG LastDirtyPage;
90 ULONG DirtyPages;
91 PULONG Bitmap;
92 } BITMAP_RANGE, *PBITMAP_RANGE;
93
94 typedef struct _MBCB
95 {
96 CSHORT NodeTypeCode;
97 CSHORT NodeIsInZone;
98 ULONG PagesToWrite;
99 ULONG DirtyPages;
100 ULONG Reserved;
101 LIST_ENTRY BitmapRanges;
102 LONGLONG ResumeWritePage;
103 BITMAP_RANGE BitmapRange1;
104 BITMAP_RANGE BitmapRange2;
105 BITMAP_RANGE BitmapRange3;
106 } MBCB, *PMBCB;
107
108 #ifdef _NTIFS_INCLUDED_
109
110 //
111 // Shared Cache Map
112 //
113 typedef struct _SHARED_CACHE_MAP
114 {
115 SHORT NodeTypeCode;
116 SHORT NodeByteSize;
117 ULONG OpenCount;
118 LARGE_INTEGER FileSize;
119 LIST_ENTRY BcbList;
120 LARGE_INTEGER SectionSize;
121 LARGE_INTEGER ValidDataLength;
122 LARGE_INTEGER ValidDataGoal;
123 PVACB InitialVacbs[4];
124 PVACB *Vacbs;
125 PFILE_OBJECT FileObject;
126 PVACB ActiveVacb;
127 PVOID NeedToZero;
128 ULONG ActivePage;
129 ULONG NeedToZeroPage;
130 KSPIN_LOCK ActiveVacbSpinLock;
131 ULONG VacbActiveCount;
132 ULONG DirtyPages;
133 LIST_ENTRY SharedCacheMapLinks;
134 ULONG Flags;
135 LONG Status;
136 PMBCB Mbcb;
137 PVOID Section;
138 PKEVENT CreateEvent;
139 PKEVENT WaitOnActiveCount;
140 ULONG PagesToWrite;
141 LONGLONG BeyondLastFlush;
142 PCACHE_MANAGER_CALLBACKS Callbacks;
143 PVOID LazyWriteContext;
144 LIST_ENTRY PrivateList;
145 PVOID LogHandle;
146 PFLUSH_TO_LSN FlushToLsnRoutine;
147 ULONG DirtyPageThreshold;
148 ULONG LazyWritePassCount;
149 PCACHE_UNINITIALIZE_EVENT UninitializeEvent;
150 PVACB NeedToZeroVacb;
151 KSPIN_LOCK BcbSpinLock;
152 PVOID Reserved;
153 KEVENT Event;
154 EX_PUSH_LOCK VacbPushLock;
155 PRIVATE_CACHE_MAP PrivateCacheMap;
156 } SHARED_CACHE_MAP, *PSHARED_CACHE_MAP;
157
158 #endif /* _NTIFS_INCLUDED_ */
159 #endif /* NTOS_MODE_USER */
160 #endif /* _CCTYPES_H */
161