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

extypes.h
Go to the documentation of this file.
00001 $if (_WDMDDK_ || _NTDDK_)
00002 /******************************************************************************
00003  *                            Executive Types                                 *
00004  ******************************************************************************/
00005 $endif (_WDMDDK_ || _NTDDK_)
00006 $if (_WDMDDK_)
00007 #define EX_RUNDOWN_ACTIVE                 0x1
00008 #define EX_RUNDOWN_COUNT_SHIFT            0x1
00009 #define EX_RUNDOWN_COUNT_INC              (1 << EX_RUNDOWN_COUNT_SHIFT)
00010 
00011 typedef struct _FAST_MUTEX {
00012   volatile LONG Count;
00013   PKTHREAD Owner;
00014   ULONG Contention;
00015   KEVENT Event;
00016   ULONG OldIrql;
00017 } FAST_MUTEX, *PFAST_MUTEX;
00018 
00019 typedef enum _SUITE_TYPE {
00020   SmallBusiness,
00021   Enterprise,
00022   BackOffice,
00023   CommunicationServer,
00024   TerminalServer,
00025   SmallBusinessRestricted,
00026   EmbeddedNT,
00027   DataCenter,
00028   SingleUserTS,
00029   Personal,
00030   Blade,
00031   EmbeddedRestricted,
00032   SecurityAppliance,
00033   StorageServer,
00034   ComputeServer,
00035   WHServer,
00036   MaxSuiteType
00037 } SUITE_TYPE;
00038 
00039 typedef enum _EX_POOL_PRIORITY {
00040   LowPoolPriority,
00041   LowPoolPrioritySpecialPoolOverrun = 8,
00042   LowPoolPrioritySpecialPoolUnderrun = 9,
00043   NormalPoolPriority = 16,
00044   NormalPoolPrioritySpecialPoolOverrun = 24,
00045   NormalPoolPrioritySpecialPoolUnderrun = 25,
00046   HighPoolPriority = 32,
00047   HighPoolPrioritySpecialPoolOverrun = 40,
00048   HighPoolPrioritySpecialPoolUnderrun = 41
00049 } EX_POOL_PRIORITY;
00050 
00051 #if !defined(_WIN64) && (defined(_NTDDK_) || defined(_NTIFS_) || defined(_NDIS_))
00052 #define LOOKASIDE_ALIGN
00053 #else
00054 #define LOOKASIDE_ALIGN /* FIXME: DECLSPEC_CACHEALIGN */
00055 #endif
00056 
00057 typedef struct _LOOKASIDE_LIST_EX *PLOOKASIDE_LIST_EX;
00058 
00059 _IRQL_requires_same_
00060 _Function_class_(ALLOCATE_FUNCTION)
00061 typedef PVOID
00062 (NTAPI *PALLOCATE_FUNCTION)(
00063     _In_ POOL_TYPE PoolType,
00064     _In_ SIZE_T NumberOfBytes,
00065     _In_ ULONG Tag);
00066 
00067 _IRQL_requires_same_
00068 _Function_class_(ALLOCATE_FUNCTION_EX)
00069 typedef PVOID
00070 (NTAPI *PALLOCATE_FUNCTION_EX)(
00071     _In_ POOL_TYPE PoolType,
00072     _In_ SIZE_T NumberOfBytes,
00073     _In_ ULONG Tag,
00074     _Inout_ PLOOKASIDE_LIST_EX Lookaside);
00075 
00076 _IRQL_requires_same_
00077 _Function_class_(FREE_FUNCTION)
00078 typedef VOID
00079 (NTAPI *PFREE_FUNCTION)(
00080     _In_ PVOID Buffer);
00081 
00082 _IRQL_requires_same_
00083 _Function_class_(FREE_FUNCTION_EX)
00084 typedef VOID
00085 (NTAPI *PFREE_FUNCTION_EX)(
00086     _In_ PVOID Buffer,
00087     _Inout_ PLOOKASIDE_LIST_EX Lookaside);
00088 
00089 _IRQL_requires_same_
00090 _Function_class_(CALLBACK_FUNCTION)
00091 typedef VOID
00092 (NTAPI CALLBACK_FUNCTION)(
00093   _In_opt_ PVOID CallbackContext,
00094   _In_opt_ PVOID Argument1,
00095   _In_opt_ PVOID Argument2);
00096 typedef CALLBACK_FUNCTION *PCALLBACK_FUNCTION;
00097 
00098 #define GENERAL_LOOKASIDE_LAYOUT                \
00099     _ANONYMOUS_UNION union {                    \
00100         SLIST_HEADER ListHead;                  \
00101         SINGLE_LIST_ENTRY SingleListHead;       \
00102     } DUMMYUNIONNAME;                           \
00103     USHORT Depth;                               \
00104     USHORT MaximumDepth;                        \
00105     ULONG TotalAllocates;                       \
00106     _ANONYMOUS_UNION union {                    \
00107         ULONG AllocateMisses;                   \
00108         ULONG AllocateHits;                     \
00109     } DUMMYUNIONNAME2;                          \
00110     ULONG TotalFrees;                           \
00111     _ANONYMOUS_UNION union {                    \
00112         ULONG FreeMisses;                       \
00113         ULONG FreeHits;                         \
00114     } DUMMYUNIONNAME3;                          \
00115     POOL_TYPE Type;                             \
00116     ULONG Tag;                                  \
00117     ULONG Size;                                 \
00118     _ANONYMOUS_UNION union {                    \
00119         PALLOCATE_FUNCTION_EX AllocateEx;       \
00120         PALLOCATE_FUNCTION Allocate;            \
00121     } DUMMYUNIONNAME4;                          \
00122     _ANONYMOUS_UNION union {                    \
00123         PFREE_FUNCTION_EX FreeEx;               \
00124         PFREE_FUNCTION Free;                    \
00125     } DUMMYUNIONNAME5;                          \
00126     LIST_ENTRY ListEntry;                       \
00127     ULONG LastTotalAllocates;                   \
00128     _ANONYMOUS_UNION union {                    \
00129         ULONG LastAllocateMisses;               \
00130         ULONG LastAllocateHits;                 \
00131     } DUMMYUNIONNAME6;                          \
00132     ULONG Future[2];
00133 
00134 typedef struct LOOKASIDE_ALIGN _GENERAL_LOOKASIDE {
00135   GENERAL_LOOKASIDE_LAYOUT
00136 } GENERAL_LOOKASIDE, *PGENERAL_LOOKASIDE;
00137 
00138 typedef struct _GENERAL_LOOKASIDE_POOL {
00139   GENERAL_LOOKASIDE_LAYOUT
00140 } GENERAL_LOOKASIDE_POOL, *PGENERAL_LOOKASIDE_POOL;
00141 
00142 #define LOOKASIDE_CHECK(f)  \
00143     C_ASSERT(FIELD_OFFSET(GENERAL_LOOKASIDE,f) == FIELD_OFFSET(GENERAL_LOOKASIDE_POOL,f))
00144 
00145 LOOKASIDE_CHECK(TotalFrees);
00146 LOOKASIDE_CHECK(Tag);
00147 LOOKASIDE_CHECK(Future);
00148 
00149 typedef struct LOOKASIDE_ALIGN _PAGED_LOOKASIDE_LIST {
00150   GENERAL_LOOKASIDE L;
00151 #if !defined(_AMD64_) && !defined(_IA64_)
00152   FAST_MUTEX Lock__ObsoleteButDoNotDelete;
00153 #endif
00154 } PAGED_LOOKASIDE_LIST, *PPAGED_LOOKASIDE_LIST;
00155 
00156 typedef struct LOOKASIDE_ALIGN _NPAGED_LOOKASIDE_LIST {
00157   GENERAL_LOOKASIDE L;
00158 #if !defined(_AMD64_) && !defined(_IA64_)
00159   KSPIN_LOCK Lock__ObsoleteButDoNotDelete;
00160 #endif
00161 } NPAGED_LOOKASIDE_LIST, *PNPAGED_LOOKASIDE_LIST;
00162 
00163 #define LOOKASIDE_MINIMUM_BLOCK_SIZE (RTL_SIZEOF_THROUGH_FIELD (SLIST_ENTRY, Next))
00164 
00165 typedef struct _LOOKASIDE_LIST_EX {
00166   GENERAL_LOOKASIDE_POOL L;
00167 } LOOKASIDE_LIST_EX;
00168 
00169 #if (NTDDI_VERSION >= NTDDI_VISTA)
00170 
00171 #define EX_LOOKASIDE_LIST_EX_FLAGS_RAISE_ON_FAIL 0x00000001UL
00172 #define EX_LOOKASIDE_LIST_EX_FLAGS_FAIL_NO_RAISE 0x00000002UL
00173 
00174 #define EX_MAXIMUM_LOOKASIDE_DEPTH_BASE          256
00175 #define EX_MAXIMUM_LOOKASIDE_DEPTH_LIMIT         1024
00176 
00177 #endif /* (NTDDI_VERSION >= NTDDI_VISTA) */
00178 
00179 typedef struct _EX_RUNDOWN_REF {
00180   _ANONYMOUS_UNION union {
00181     volatile ULONG_PTR Count;
00182     volatile PVOID Ptr;
00183   } DUMMYUNIONNAME;
00184 } EX_RUNDOWN_REF, *PEX_RUNDOWN_REF;
00185 
00186 typedef struct _EX_RUNDOWN_REF_CACHE_AWARE *PEX_RUNDOWN_REF_CACHE_AWARE;
00187 
00188 typedef enum _WORK_QUEUE_TYPE {
00189   CriticalWorkQueue,
00190   DelayedWorkQueue,
00191   HyperCriticalWorkQueue,
00192   MaximumWorkQueue
00193 } WORK_QUEUE_TYPE;
00194 
00195 _IRQL_requires_same_
00196 _Function_class_(WORKER_THREAD_ROUTINE)
00197 typedef VOID
00198 (NTAPI WORKER_THREAD_ROUTINE)(
00199   _In_ PVOID Parameter);
00200 typedef WORKER_THREAD_ROUTINE *PWORKER_THREAD_ROUTINE;
00201 
00202 typedef struct _WORK_QUEUE_ITEM {
00203   LIST_ENTRY List;
00204   PWORKER_THREAD_ROUTINE WorkerRoutine;
00205   volatile PVOID Parameter;
00206 } WORK_QUEUE_ITEM, *PWORK_QUEUE_ITEM;
00207 
00208 typedef ULONG_PTR ERESOURCE_THREAD, *PERESOURCE_THREAD;
00209 
00210 typedef struct _OWNER_ENTRY {
00211   ERESOURCE_THREAD OwnerThread;
00212   _ANONYMOUS_UNION union {
00213     _ANONYMOUS_STRUCT struct {
00214       ULONG IoPriorityBoosted:1;
00215       ULONG OwnerReferenced:1;
00216       ULONG OwnerCount:30;
00217     } DUMMYSTRUCTNAME;
00218     ULONG TableSize;
00219   } DUMMYUNIONNAME;
00220 } OWNER_ENTRY, *POWNER_ENTRY;
00221 
00222 typedef struct _ERESOURCE {
00223   LIST_ENTRY SystemResourcesList;
00224   POWNER_ENTRY OwnerTable;
00225   SHORT ActiveCount;
00226   USHORT Flag;
00227   volatile PKSEMAPHORE SharedWaiters;
00228   volatile PKEVENT ExclusiveWaiters;
00229   OWNER_ENTRY OwnerEntry;
00230   ULONG ActiveEntries;
00231   ULONG ContentionCount;
00232   ULONG NumberOfSharedWaiters;
00233   ULONG NumberOfExclusiveWaiters;
00234 #if defined(_WIN64)
00235   PVOID Reserved2;
00236 #endif
00237   _ANONYMOUS_UNION union {
00238     PVOID Address;
00239     ULONG_PTR CreatorBackTraceIndex;
00240   } DUMMYUNIONNAME;
00241   KSPIN_LOCK SpinLock;
00242 } ERESOURCE, *PERESOURCE;
00243 
00244 /* ERESOURCE.Flag */
00245 #define ResourceNeverExclusive            0x0010
00246 #define ResourceReleaseByOtherThread      0x0020
00247 #define ResourceOwnedExclusive            0x0080
00248 
00249 #define RESOURCE_HASH_TABLE_SIZE          64
00250 
00251 typedef struct _RESOURCE_HASH_ENTRY {
00252   LIST_ENTRY ListEntry;
00253   PVOID Address;
00254   ULONG ContentionCount;
00255   ULONG Number;
00256 } RESOURCE_HASH_ENTRY, *PRESOURCE_HASH_ENTRY;
00257 
00258 typedef struct _RESOURCE_PERFORMANCE_DATA {
00259   ULONG ActiveResourceCount;
00260   ULONG TotalResourceCount;
00261   ULONG ExclusiveAcquire;
00262   ULONG SharedFirstLevel;
00263   ULONG SharedSecondLevel;
00264   ULONG StarveFirstLevel;
00265   ULONG StarveSecondLevel;
00266   ULONG WaitForExclusive;
00267   ULONG OwnerTableExpands;
00268   ULONG MaximumTableExpand;
00269   LIST_ENTRY HashTable[RESOURCE_HASH_TABLE_SIZE];
00270 } RESOURCE_PERFORMANCE_DATA, *PRESOURCE_PERFORMANCE_DATA;
00271 
00272 /* Global debug flag */
00273 #if DEVL
00274 extern ULONG NtGlobalFlag;
00275 #define IF_NTOS_DEBUG(FlagName) if (NtGlobalFlag & (FLG_##FlagName))
00276 #else
00277 #define IF_NTOS_DEBUG(FlagName) if(FALSE)
00278 #endif
00279 
00280 $endif (_WDMDDK_)
00281 $if (_NTDDK_)
00282 typedef struct _ZONE_SEGMENT_HEADER {
00283   SINGLE_LIST_ENTRY SegmentList;
00284   PVOID Reserved;
00285 } ZONE_SEGMENT_HEADER, *PZONE_SEGMENT_HEADER;
00286 
00287 typedef struct _ZONE_HEADER {
00288   SINGLE_LIST_ENTRY FreeList;
00289   SINGLE_LIST_ENTRY SegmentList;
00290   ULONG BlockSize;
00291   ULONG TotalSegmentSize;
00292 } ZONE_HEADER, *PZONE_HEADER;
00293 
00294 #define PROTECTED_POOL                    0x80000000
00295 
00296 $endif (_NTDDK_)
00297 $if (_NTIFS_)
00298 #define INVALID_PROCESSOR_INDEX     0xffffffff
00299 
00300 #define EX_PUSH_LOCK ULONG_PTR
00301 #define PEX_PUSH_LOCK PULONG_PTR
00302 $endif (_NTIFS_)

Generated on Sun May 27 2012 04:30:50 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.