ReactOS Fundraising Campaign 2012
 
€ 4,410 / € 30,000

Information | Donate

Home | Info | Community | Development | myReactOS | Contact Us

  1. Home
  2. Community
  3. Development
  4. myReactOS
  5. Fundraiser 2012

  1. Main Page
  2. Alphabetical List
  3. Data Structures
  4. Directories
  5. File List
  6. Data Fields
  7. Globals
  8. Related Pages

ReactOS Development > Doxygen

newcc.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 doxygen 1.7.6.1

ReactOS is a registered trademark or a trademark of ReactOS Foundation in the United States and other countries.