Home | Info | Community | Development | myReactOS | Contact Us
ReactOS Development > Doxygennewcc.h
Go to the documentation of this file.
00001 #pragma once 00002 00003 typedef struct _NOCC_BCB 00004 { 00005 /* Public part */ 00006 PUBLIC_BCB Bcb; 00007 00008 struct _NOCC_CACHE_MAP *Map; 00009 PROS_SECTION_OBJECT SectionObject; 00010 LARGE_INTEGER FileOffset; 00011 ULONG Length; 00012 PVOID BaseAddress; 00013 BOOLEAN Dirty; 00014 PVOID OwnerPointer; 00015 00016 /* Reference counts */ 00017 ULONG RefCount; 00018 00019 LIST_ENTRY ThisFileList; 00020 00021 KEVENT ExclusiveWait; 00022 ULONG ExclusiveWaiter; 00023 BOOLEAN Exclusive; 00024 } NOCC_BCB, *PNOCC_BCB; 00025 00026 typedef struct _NOCC_CACHE_MAP 00027 { 00028 LIST_ENTRY Entry; 00029 LIST_ENTRY AssociatedBcb; 00030 LIST_ENTRY PrivateCacheMaps; 00031 ULONG NumberOfMaps; 00032 ULONG RefCount; 00033 CC_FILE_SIZES FileSizes; 00034 CACHE_MANAGER_CALLBACKS Callbacks; 00035 PVOID LazyContext; 00036 PVOID LogHandle; 00037 PFLUSH_TO_LSN FlushToLsn; 00038 ULONG ReadAheadGranularity; 00039 } NOCC_CACHE_MAP, *PNOCC_CACHE_MAP; 00040 00041 VOID 00042 NTAPI 00043 CcPfInitializePrefetcher(VOID); 00044 00045 VOID 00046 NTAPI 00047 CcMdlReadComplete2(IN PMDL MemoryDescriptorList, 00048 IN PFILE_OBJECT FileObject); 00049 00050 VOID 00051 NTAPI 00052 CcMdlWriteComplete2(IN PFILE_OBJECT FileObject, 00053 IN PLARGE_INTEGER FileOffset, 00054 IN PMDL MdlChain); 00055 00056 VOID 00057 NTAPI 00058 CcInitView(VOID); 00059 00060 BOOLEAN 00061 NTAPI 00062 CcpUnpinData(PNOCC_BCB Bcb, 00063 BOOLEAN ActuallyRelease); 00064 00065 BOOLEAN 00066 NTAPI 00067 CcInitializeCacheManager(VOID); 00068 00069 VOID 00070 NTAPI 00071 CcShutdownSystem(VOID); 00072 00073 VOID 00074 NTAPI 00075 CcInitCacheZeroPage(VOID); 00076 00077 /* Called by section.c */ 00078 BOOLEAN 00079 NTAPI 00080 CcFlushImageSection(PSECTION_OBJECT_POINTERS SectionObjectPointer, 00081 MMFLUSH_TYPE FlushType); 00082 00083 VOID 00084 NTAPI 00085 _CcpFlushCache(IN PNOCC_CACHE_MAP Map, 00086 IN OPTIONAL PLARGE_INTEGER FileOffset, 00087 IN ULONG Length, 00088 OUT OPTIONAL PIO_STATUS_BLOCK IoStatus, 00089 BOOLEAN Delete, 00090 const char *File, 00091 int Line); 00092 00093 #define CcpFlushCache(M,F,L,I,D) _CcpFlushCache(M,F,L,I,D,__FILE__,__LINE__) 00094 00095 BOOLEAN 00096 NTAPI 00097 CcGetFileSizes(PFILE_OBJECT FileObject, 00098 PCC_FILE_SIZES FileSizes); 00099 00100 ULONG 00101 NTAPI 00102 CcpCountCacheSections(PNOCC_CACHE_MAP Map); 00103 00104 BOOLEAN 00105 NTAPI 00106 CcpAcquireFileLock(PNOCC_CACHE_MAP Map); 00107 00108 VOID 00109 NTAPI 00110 CcpReleaseFileLock(PNOCC_CACHE_MAP Map); 00111 00112 /* 00113 * Macro for generic cache manage bugchecking. Note that this macro assumes 00114 * that the file name including extension is always longer than 4 characters. 00115 */ 00116 #define KEBUGCHECKCC \ 00117 KEBUGCHECKEX(CACHE_MANAGER, \ 00118 (*(ULONG*)(__FILE__ + sizeof(__FILE__) - 4) << 16) | \ 00119 (__LINE__ & 0xFFFF), 0, 0, 0) 00120 00121 /* Private data */ 00122 00123 #define CACHE_SINGLE_FILE_MAX (16) 00124 #define CACHE_OVERALL_SIZE (32 * 1024 * 1024) 00125 #define CACHE_STRIPE VACB_MAPPING_GRANULARITY 00126 #define CACHE_SHIFT 18 00127 #define CACHE_NUM_SECTIONS (CACHE_OVERALL_SIZE / CACHE_STRIPE) 00128 #define CACHE_ROUND_UP(x) (((x) + (CACHE_STRIPE-1)) & ~(CACHE_STRIPE-1)) 00129 #define CACHE_ROUND_DOWN(x) ((x) & ~(CACHE_STRIPE-1)) 00130 #define INVALID_CACHE ((ULONG)~0) 00131 00132 extern NOCC_BCB CcCacheSections[CACHE_NUM_SECTIONS]; 00133 extern PRTL_BITMAP CcCacheBitmap; 00134 extern FAST_MUTEX CcMutex; 00135 extern KEVENT CcDeleteEvent; 00136 extern ULONG CcCacheClockHand; 00137 extern LIST_ENTRY CcPendingUnmap; 00138 extern KEVENT CcpLazyWriteEvent; 00139 00140 #define CcpLock() _CcpLock(__FILE__,__LINE__) 00141 #define CcpUnlock() _CcpUnlock(__FILE__,__LINE__) 00142 00143 extern VOID _CcpLock(const char *file, int line); 00144 extern VOID _CcpUnlock(const char *file, int line); 00145 00146 extern VOID CcpReferenceCache(ULONG Sector); 00147 extern VOID CcpDereferenceCache(ULONG Sector, BOOLEAN Immediate); 00148 00149 BOOLEAN 00150 NTAPI 00151 CcpMapData(IN PFILE_OBJECT FileObject, 00152 IN PLARGE_INTEGER FileOffset, 00153 IN ULONG Length, 00154 IN ULONG Flags, 00155 OUT PVOID *BcbResult, 00156 OUT PVOID *Buffer); 00157 00158 BOOLEAN 00159 NTAPI 00160 CcpPinMappedData(IN PNOCC_CACHE_MAP Map, 00161 IN PLARGE_INTEGER FileOffset, 00162 IN ULONG Length, 00163 IN ULONG Flags, 00164 IN OUT PVOID *Bcb); Generated on Mon May 28 2012 04:36:55 for ReactOS by
1.7.6.1
|