1 /******************************************************************************
3 ******************************************************************************/
6 #define EX_RUNDOWN_ACTIVE 0x1
7 #define EX_RUNDOWN_COUNT_SHIFT 0x1
8 #define EX_RUNDOWN_COUNT_INC (1 << EX_RUNDOWN_COUNT_SHIFT)
11 #define PORT_MAXIMUM_MESSAGE_LENGTH 512
13 #define PORT_MAXIMUM_MESSAGE_LENGTH 256
16 typedef struct _FAST_MUTEX
{
22 } FAST_MUTEX
, *PFAST_MUTEX
;
24 typedef enum _SUITE_TYPE
{
30 SmallBusinessRestricted
,
44 typedef enum _EX_POOL_PRIORITY
{
46 LowPoolPrioritySpecialPoolOverrun
= 8,
47 LowPoolPrioritySpecialPoolUnderrun
= 9,
48 NormalPoolPriority
= 16,
49 NormalPoolPrioritySpecialPoolOverrun
= 24,
50 NormalPoolPrioritySpecialPoolUnderrun
= 25,
51 HighPoolPriority
= 32,
52 HighPoolPrioritySpecialPoolOverrun
= 40,
53 HighPoolPrioritySpecialPoolUnderrun
= 41
56 #if !defined(_WIN64) && (defined(_NTDDK_) || defined(_NTIFS_) || defined(_NDIS_))
57 #define LOOKASIDE_ALIGN
59 #define LOOKASIDE_ALIGN /* FIXME: DECLSPEC_CACHEALIGN */
62 typedef struct _LOOKASIDE_LIST_EX
*PLOOKASIDE_LIST_EX
;
65 (DDKAPI
*PALLOCATE_FUNCTION
)(
66 IN POOL_TYPE PoolType
,
67 IN SIZE_T NumberOfBytes
,
71 (DDKAPI
*PALLOCATE_FUNCTION_EX
)(
72 IN POOL_TYPE PoolType
,
73 IN SIZE_T NumberOfBytes
,
75 IN OUT PLOOKASIDE_LIST_EX Lookaside
);
78 (DDKAPI
*PFREE_FUNCTION
)(
82 (DDKAPI
*PFREE_FUNCTION_EX
)(
84 IN OUT PLOOKASIDE_LIST_EX Lookaside
);
87 (DDKAPI
*PCALLBACK_FUNCTION
)(
88 IN PVOID CallbackContext
,
92 #define GENERAL_LOOKASIDE_LAYOUT \
94 SLIST_HEADER ListHead; \
95 SINGLE_LIST_ENTRY SingleListHead; \
98 USHORT MaximumDepth; \
99 ULONG TotalAllocates; \
101 ULONG AllocateMisses; \
102 ULONG AllocateHits; \
115 PALLOCATE_FUNCTION_EX AllocateEx; \
116 PALLOCATE_FUNCTION Allocate; \
120 PFREE_FUNCTION_EX FreeEx; \
121 PFREE_FUNCTION Free; \
124 LIST_ENTRY ListEntry; \
125 ULONG LastTotalAllocates; \
127 ULONG LastAllocateMisses; \
128 ULONG LastAllocateHits; \
132 typedef struct LOOKASIDE_ALIGN _GENERAL_LOOKASIDE
{
133 GENERAL_LOOKASIDE_LAYOUT
134 } GENERAL_LOOKASIDE
, *PGENERAL_LOOKASIDE
;
136 typedef struct _GENERAL_LOOKASIDE_POOL
{
137 GENERAL_LOOKASIDE_LAYOUT
138 } GENERAL_LOOKASIDE_POOL
, *PGENERAL_LOOKASIDE_POOL
;
140 typedef struct _PAGED_LOOKASIDE_LIST
{
142 #if !defined(_AMD64_) && !defined(_IA64_)
143 FAST_MUTEX Lock__ObsoleteButDoNotDelete
;
145 } PAGED_LOOKASIDE_LIST
, *PPAGED_LOOKASIDE_LIST
;
147 typedef struct LOOKASIDE_ALIGN _NPAGED_LOOKASIDE_LIST
{
149 #if !defined(_AMD64_) && !defined(_IA64_)
150 KSPIN_LOCK Lock__ObsoleteButDoNotDelete
;
152 } NPAGED_LOOKASIDE_LIST
, *PNPAGED_LOOKASIDE_LIST
;
154 typedef struct _LOOKASIDE_LIST_EX
{
155 GENERAL_LOOKASIDE_POOL L
;
158 typedef struct _EX_RUNDOWN_REF
{
159 __GNU_EXTENSION
union {
160 volatile ULONG_PTR Count
;
163 } EX_RUNDOWN_REF
, *PEX_RUNDOWN_REF
;
165 typedef struct _EX_RUNDOWN_REF_CACHE_AWARE
*PEX_RUNDOWN_REF_CACHE_AWARE
;
168 (DDKAPI
*PWORKER_THREAD_ROUTINE
)(
171 typedef struct _WORK_QUEUE_ITEM
{
173 PWORKER_THREAD_ROUTINE WorkerRoutine
;
174 volatile PVOID Parameter
;
175 } WORK_QUEUE_ITEM
, *PWORK_QUEUE_ITEM
;