[XDK]
[reactos.git] / include / xdk / extypes.h
1 /******************************************************************************
2 * Executive Types *
3 ******************************************************************************/
4
5 $if (_WDMDDK_)
6 #define EX_RUNDOWN_ACTIVE 0x1
7 #define EX_RUNDOWN_COUNT_SHIFT 0x1
8 #define EX_RUNDOWN_COUNT_INC (1 << EX_RUNDOWN_COUNT_SHIFT)
9
10 #ifdef _WIN64
11 #define PORT_MAXIMUM_MESSAGE_LENGTH 512
12 #else
13 #define PORT_MAXIMUM_MESSAGE_LENGTH 256
14 #endif
15
16 typedef struct _FAST_MUTEX {
17 volatile LONG Count;
18 PKTHREAD Owner;
19 ULONG Contention;
20 KEVENT Event;
21 ULONG OldIrql;
22 } FAST_MUTEX, *PFAST_MUTEX;
23
24 typedef enum _SUITE_TYPE {
25 SmallBusiness,
26 Enterprise,
27 BackOffice,
28 CommunicationServer,
29 TerminalServer,
30 SmallBusinessRestricted,
31 EmbeddedNT,
32 DataCenter,
33 SingleUserTS,
34 Personal,
35 Blade,
36 EmbeddedRestricted,
37 SecurityAppliance,
38 StorageServer,
39 ComputeServer,
40 WHServer,
41 MaxSuiteType
42 } SUITE_TYPE;
43
44 typedef enum _EX_POOL_PRIORITY {
45 LowPoolPriority,
46 LowPoolPrioritySpecialPoolOverrun = 8,
47 LowPoolPrioritySpecialPoolUnderrun = 9,
48 NormalPoolPriority = 16,
49 NormalPoolPrioritySpecialPoolOverrun = 24,
50 NormalPoolPrioritySpecialPoolUnderrun = 25,
51 HighPoolPriority = 32,
52 HighPoolPrioritySpecialPoolOverrun = 40,
53 HighPoolPrioritySpecialPoolUnderrun = 41
54 } EX_POOL_PRIORITY;
55
56 #if !defined(_WIN64) && (defined(_NTDDK_) || defined(_NTIFS_) || defined(_NDIS_))
57 #define LOOKASIDE_ALIGN
58 #else
59 #define LOOKASIDE_ALIGN /* FIXME: DECLSPEC_CACHEALIGN */
60 #endif
61
62 typedef struct _LOOKASIDE_LIST_EX *PLOOKASIDE_LIST_EX;
63
64 typedef PVOID
65 (DDKAPI *PALLOCATE_FUNCTION)(
66 IN POOL_TYPE PoolType,
67 IN SIZE_T NumberOfBytes,
68 IN ULONG Tag);
69
70 typedef PVOID
71 (DDKAPI *PALLOCATE_FUNCTION_EX)(
72 IN POOL_TYPE PoolType,
73 IN SIZE_T NumberOfBytes,
74 IN ULONG Tag,
75 IN OUT PLOOKASIDE_LIST_EX Lookaside);
76
77 typedef VOID
78 (DDKAPI *PFREE_FUNCTION)(
79 IN PVOID Buffer);
80
81 typedef VOID
82 (DDKAPI *PFREE_FUNCTION_EX)(
83 IN PVOID Buffer,
84 IN OUT PLOOKASIDE_LIST_EX Lookaside);
85
86 typedef VOID
87 (DDKAPI *PCALLBACK_FUNCTION)(
88 IN PVOID CallbackContext,
89 IN PVOID Argument1,
90 IN PVOID Argument2);
91
92 #define GENERAL_LOOKASIDE_LAYOUT \
93 union { \
94 SLIST_HEADER ListHead; \
95 SINGLE_LIST_ENTRY SingleListHead; \
96 } DUMMYUNIONNAME; \
97 USHORT Depth; \
98 USHORT MaximumDepth; \
99 ULONG TotalAllocates; \
100 union { \
101 ULONG AllocateMisses; \
102 ULONG AllocateHits; \
103 } DUMMYUNIONNAME2; \
104 \
105 ULONG TotalFrees; \
106 union { \
107 ULONG FreeMisses; \
108 ULONG FreeHits; \
109 } DUMMYUNIONNAME3; \
110 \
111 POOL_TYPE Type; \
112 ULONG Tag; \
113 ULONG Size; \
114 union { \
115 PALLOCATE_FUNCTION_EX AllocateEx; \
116 PALLOCATE_FUNCTION Allocate; \
117 } DUMMYUNIONNAME4; \
118 \
119 union { \
120 PFREE_FUNCTION_EX FreeEx; \
121 PFREE_FUNCTION Free; \
122 } DUMMYUNIONNAME5; \
123 \
124 LIST_ENTRY ListEntry; \
125 ULONG LastTotalAllocates; \
126 union { \
127 ULONG LastAllocateMisses; \
128 ULONG LastAllocateHits; \
129 } DUMMYUNIONNAME6; \
130 ULONG Future[2];
131
132 typedef struct LOOKASIDE_ALIGN _GENERAL_LOOKASIDE {
133 GENERAL_LOOKASIDE_LAYOUT
134 } GENERAL_LOOKASIDE, *PGENERAL_LOOKASIDE;
135
136 typedef struct _GENERAL_LOOKASIDE_POOL {
137 GENERAL_LOOKASIDE_LAYOUT
138 } GENERAL_LOOKASIDE_POOL, *PGENERAL_LOOKASIDE_POOL;
139
140 typedef struct _PAGED_LOOKASIDE_LIST {
141 GENERAL_LOOKASIDE L;
142 #if !defined(_AMD64_) && !defined(_IA64_)
143 FAST_MUTEX Lock__ObsoleteButDoNotDelete;
144 #endif
145 } PAGED_LOOKASIDE_LIST, *PPAGED_LOOKASIDE_LIST;
146
147 typedef struct LOOKASIDE_ALIGN _NPAGED_LOOKASIDE_LIST {
148 GENERAL_LOOKASIDE L;
149 #if !defined(_AMD64_) && !defined(_IA64_)
150 KSPIN_LOCK Lock__ObsoleteButDoNotDelete;
151 #endif
152 } NPAGED_LOOKASIDE_LIST, *PNPAGED_LOOKASIDE_LIST;
153
154 typedef struct _LOOKASIDE_LIST_EX {
155 GENERAL_LOOKASIDE_POOL L;
156 } LOOKASIDE_LIST_EX;
157
158 typedef struct _EX_RUNDOWN_REF {
159 __GNU_EXTENSION union {
160 volatile ULONG_PTR Count;
161 volatile PVOID Ptr;
162 };
163 } EX_RUNDOWN_REF, *PEX_RUNDOWN_REF;
164
165 typedef struct _EX_RUNDOWN_REF_CACHE_AWARE *PEX_RUNDOWN_REF_CACHE_AWARE;
166
167 typedef VOID
168 (DDKAPI *PWORKER_THREAD_ROUTINE)(
169 IN PVOID Parameter);
170
171 typedef struct _WORK_QUEUE_ITEM {
172 LIST_ENTRY List;
173 PWORKER_THREAD_ROUTINE WorkerRoutine;
174 volatile PVOID Parameter;
175 } WORK_QUEUE_ITEM, *PWORK_QUEUE_ITEM;
176
177 $endif
178
179