2006-05-10 17:47:44 +00:00
|
|
|
/*++ NDK Version: 0098
|
2005-11-22 04:57:45 +00:00
|
|
|
|
|
|
|
Copyright (c) Alex Ionescu. All rights reserved.
|
|
|
|
|
|
|
|
Header Name:
|
|
|
|
|
|
|
|
cctypes.h
|
|
|
|
|
|
|
|
Abstract:
|
|
|
|
|
|
|
|
Type definitions for the Cache Controller.
|
|
|
|
|
|
|
|
Author:
|
|
|
|
|
2006-05-10 17:47:44 +00:00
|
|
|
Alex Ionescu (alexi@tinykrnl.org) - Updated - 27-Feb-2006
|
2005-11-22 04:57:45 +00:00
|
|
|
|
|
|
|
--*/
|
2005-06-18 23:33:40 +00:00
|
|
|
|
|
|
|
#ifndef _CCTYPES_H
|
|
|
|
#define _CCTYPES_H
|
|
|
|
|
2005-11-22 04:57:45 +00:00
|
|
|
//
|
|
|
|
// Dependencies
|
|
|
|
//
|
2005-11-25 00:17:40 +00:00
|
|
|
#include <umtypes.h>
|
|
|
|
|
|
|
|
#ifndef NTOS_MODE_USER
|
2005-06-18 23:33:40 +00:00
|
|
|
|
2005-11-22 04:57:45 +00:00
|
|
|
//
|
|
|
|
// Kernel Exported CcData
|
|
|
|
//
|
2005-09-05 04:48:20 +00:00
|
|
|
extern ULONG NTSYSAPI CcFastReadNotPossible;
|
|
|
|
extern ULONG NTSYSAPI CcFastReadWait;
|
2007-01-08 16:51:06 +00:00
|
|
|
extern ULONG NTSYSAPI CcFastReadResourceMiss;
|
|
|
|
extern ULONG NTSYSAPI CcFastReadNoWait;
|
2007-01-21 04:46:38 +00:00
|
|
|
extern ULONG NTSYSAPI CcFastMdlReadNotPossible;
|
2005-06-18 23:33:40 +00:00
|
|
|
|
2007-01-22 22:16:13 +00:00
|
|
|
//
|
|
|
|
// Virtual Address Control BLock
|
|
|
|
//
|
|
|
|
typedef struct _VACB
|
|
|
|
{
|
|
|
|
PVOID BaseAddress;
|
|
|
|
struct _SHARED_CACHE_MAP *SharedCacheMap;
|
|
|
|
union
|
|
|
|
{
|
|
|
|
LARGE_INTEGER FileOffset;
|
|
|
|
USHORT ActiveCount;
|
|
|
|
} Overlay;
|
|
|
|
LIST_ENTRY LruList;
|
|
|
|
} VACB, *PVACB;
|
2007-01-20 17:43:46 +00:00
|
|
|
|
2007-01-22 22:16:13 +00:00
|
|
|
//
|
|
|
|
// Private Cache Map Structure and Flags
|
|
|
|
//
|
|
|
|
typedef struct _PRIVATE_CACHE_MAP_FLAGS
|
|
|
|
{
|
|
|
|
ULONG DontUse:16;
|
|
|
|
ULONG ReadAheadActive:1;
|
|
|
|
ULONG ReadAheadEnabled:1;
|
|
|
|
ULONG Available:14;
|
|
|
|
} PRIVATE_CACHE_MAP_FLAGS;
|
|
|
|
|
2018-02-20 12:18:34 +00:00
|
|
|
#define PRIVATE_CACHE_MAP_READ_AHEAD_ACTIVE (1 << 16)
|
|
|
|
#define PRIVATE_CACHE_MAP_READ_AHEAD_ENABLED (1 << 17)
|
|
|
|
|
2007-01-22 22:16:13 +00:00
|
|
|
typedef struct _PRIVATE_CACHE_MAP
|
|
|
|
{
|
|
|
|
union
|
|
|
|
{
|
|
|
|
CSHORT NodeTypeCode;
|
|
|
|
PRIVATE_CACHE_MAP_FLAGS Flags;
|
|
|
|
ULONG UlongFlags;
|
|
|
|
};
|
|
|
|
ULONG ReadAheadMask;
|
|
|
|
PFILE_OBJECT FileObject;
|
|
|
|
LARGE_INTEGER FileOffset1;
|
|
|
|
LARGE_INTEGER BeyondLastByte1;
|
|
|
|
LARGE_INTEGER FileOffset2;
|
|
|
|
LARGE_INTEGER BeyondLastByte2;
|
2018-02-09 09:06:17 +00:00
|
|
|
LARGE_INTEGER ReadAheadOffset[2];
|
|
|
|
ULONG ReadAheadLength[2];
|
2007-01-22 22:16:13 +00:00
|
|
|
KSPIN_LOCK ReadAheadSpinLock;
|
|
|
|
LIST_ENTRY PrivateLinks;
|
2018-02-08 13:02:42 +00:00
|
|
|
PVOID ReadAheadWorkItem;
|
2007-01-22 22:16:13 +00:00
|
|
|
} PRIVATE_CACHE_MAP, *PPRIVATE_CACHE_MAP;
|
2007-01-20 17:43:46 +00:00
|
|
|
|
2014-04-05 17:17:47 +00:00
|
|
|
typedef struct _BITMAP_RANGE
|
|
|
|
{
|
|
|
|
LIST_ENTRY Links;
|
|
|
|
LONGLONG BasePage;
|
|
|
|
ULONG FirstDirtyPage;
|
|
|
|
ULONG LastDirtyPage;
|
|
|
|
ULONG DirtyPages;
|
|
|
|
PULONG Bitmap;
|
|
|
|
} BITMAP_RANGE, *PBITMAP_RANGE;
|
|
|
|
|
|
|
|
typedef struct _MBCB
|
|
|
|
{
|
2014-01-19 15:05:23 +00:00
|
|
|
CSHORT NodeTypeCode;
|
|
|
|
CSHORT NodeIsInZone;
|
|
|
|
ULONG PagesToWrite;
|
|
|
|
ULONG DirtyPages;
|
|
|
|
ULONG Reserved;
|
|
|
|
LIST_ENTRY BitmapRanges;
|
|
|
|
LONGLONG ResumeWritePage;
|
|
|
|
BITMAP_RANGE BitmapRange1;
|
|
|
|
BITMAP_RANGE BitmapRange2;
|
|
|
|
BITMAP_RANGE BitmapRange3;
|
|
|
|
} MBCB, *PMBCB;
|
|
|
|
|
2007-01-22 22:16:13 +00:00
|
|
|
#ifdef _NTIFS_INCLUDED_
|
2007-01-20 17:43:46 +00:00
|
|
|
|
2007-01-22 22:16:13 +00:00
|
|
|
//
|
|
|
|
// Shared Cache Map
|
|
|
|
//
|
|
|
|
typedef struct _SHARED_CACHE_MAP
|
|
|
|
{
|
2018-01-28 09:34:21 +00:00
|
|
|
CSHORT NodeTypeCode;
|
|
|
|
CSHORT NodeByteSize;
|
2007-01-22 22:16:13 +00:00
|
|
|
ULONG OpenCount;
|
|
|
|
LARGE_INTEGER FileSize;
|
|
|
|
LIST_ENTRY BcbList;
|
|
|
|
LARGE_INTEGER SectionSize;
|
|
|
|
LARGE_INTEGER ValidDataLength;
|
|
|
|
LARGE_INTEGER ValidDataGoal;
|
|
|
|
PVACB InitialVacbs[4];
|
2008-05-21 15:28:43 +00:00
|
|
|
PVACB *Vacbs;
|
2007-01-22 22:16:13 +00:00
|
|
|
PFILE_OBJECT FileObject;
|
|
|
|
PVACB ActiveVacb;
|
|
|
|
PVOID NeedToZero;
|
|
|
|
ULONG ActivePage;
|
|
|
|
ULONG NeedToZeroPage;
|
2014-01-19 15:05:23 +00:00
|
|
|
KSPIN_LOCK ActiveVacbSpinLock;
|
2007-01-22 22:16:13 +00:00
|
|
|
ULONG VacbActiveCount;
|
|
|
|
ULONG DirtyPages;
|
|
|
|
LIST_ENTRY SharedCacheMapLinks;
|
|
|
|
ULONG Flags;
|
2014-01-19 15:05:23 +00:00
|
|
|
LONG Status;
|
2008-10-14 18:27:15 +00:00
|
|
|
PMBCB Mbcb;
|
2007-01-22 22:16:13 +00:00
|
|
|
PVOID Section;
|
|
|
|
PKEVENT CreateEvent;
|
|
|
|
PKEVENT WaitOnActiveCount;
|
|
|
|
ULONG PagesToWrite;
|
|
|
|
LONGLONG BeyondLastFlush;
|
|
|
|
PCACHE_MANAGER_CALLBACKS Callbacks;
|
|
|
|
PVOID LazyWriteContext;
|
2008-05-21 15:28:43 +00:00
|
|
|
LIST_ENTRY PrivateList;
|
2007-01-22 22:16:13 +00:00
|
|
|
PVOID LogHandle;
|
2014-01-19 15:05:23 +00:00
|
|
|
PFLUSH_TO_LSN FlushToLsnRoutine;
|
2007-01-22 22:16:13 +00:00
|
|
|
ULONG DirtyPageThreshold;
|
|
|
|
ULONG LazyWritePassCount;
|
|
|
|
PCACHE_UNINITIALIZE_EVENT UninitializeEvent;
|
|
|
|
PVACB NeedToZeroVacb;
|
2014-01-19 15:05:23 +00:00
|
|
|
KSPIN_LOCK BcbSpinLock;
|
2007-01-22 22:16:13 +00:00
|
|
|
PVOID Reserved;
|
|
|
|
KEVENT Event;
|
2008-09-01 19:32:18 +00:00
|
|
|
EX_PUSH_LOCK VacbPushLock;
|
|
|
|
PRIVATE_CACHE_MAP PrivateCacheMap;
|
2008-12-13 19:31:40 +00:00
|
|
|
} SHARED_CACHE_MAP, *PSHARED_CACHE_MAP;
|
2007-01-20 17:43:46 +00:00
|
|
|
|
|
|
|
#endif /* _NTIFS_INCLUDED_ */
|
2018-01-28 09:34:21 +00:00
|
|
|
|
|
|
|
//
|
|
|
|
// Deferred Write list entry
|
|
|
|
//
|
|
|
|
typedef struct _DEFERRED_WRITE
|
|
|
|
{
|
|
|
|
CSHORT NodeTypeCode;
|
|
|
|
CSHORT NodeByteSize;
|
|
|
|
PFILE_OBJECT FileObject;
|
|
|
|
ULONG BytesToWrite;
|
|
|
|
LIST_ENTRY DeferredWriteLinks;
|
|
|
|
PKEVENT Event;
|
|
|
|
PCC_POST_DEFERRED_WRITE PostRoutine;
|
|
|
|
PVOID Context1;
|
|
|
|
PVOID Context2;
|
|
|
|
BOOLEAN LimitModifiedPages;
|
|
|
|
} DEFERRED_WRITE, *PDEFERRED_WRITE;
|
|
|
|
|
2007-01-20 17:43:46 +00:00
|
|
|
#endif /* NTOS_MODE_USER */
|
|
|
|
#endif /* _CCTYPES_H */
|
2005-06-18 23:33:40 +00:00
|
|
|
|