[PSDK]
[reactos.git] / include / xdk / halfuncs.h
1 /* Hardware Abstraction Layer Functions */
2
3 #if (NTDDI_VERSION >= NTDDI_WIN2K)
4
5 #if defined(USE_DMA_MACROS) && !defined(_NTHAL_) && (defined(_NTDDK_) || defined(_NTDRIVER_)) || defined(_WDM_INCLUDED_)
6
7 $if (_WDMDDK_)
8 FORCEINLINE
9 PVOID
10 NTAPI
11 HalAllocateCommonBuffer(
12 IN PDMA_ADAPTER DmaAdapter,
13 IN ULONG Length,
14 OUT PPHYSICAL_ADDRESS LogicalAddress,
15 IN BOOLEAN CacheEnabled)
16 {
17 PALLOCATE_COMMON_BUFFER allocateCommonBuffer;
18 PVOID commonBuffer;
19
20 allocateCommonBuffer = *(DmaAdapter)->DmaOperations->AllocateCommonBuffer;
21 ASSERT( allocateCommonBuffer != NULL );
22 commonBuffer = allocateCommonBuffer( DmaAdapter, Length, LogicalAddress, CacheEnabled );
23 return commonBuffer;
24 }
25
26 FORCEINLINE
27 VOID
28 NTAPI
29 HalFreeCommonBuffer(
30 IN PDMA_ADAPTER DmaAdapter,
31 IN ULONG Length,
32 IN PHYSICAL_ADDRESS LogicalAddress,
33 IN PVOID VirtualAddress,
34 IN BOOLEAN CacheEnabled)
35 {
36 PFREE_COMMON_BUFFER freeCommonBuffer;
37
38 freeCommonBuffer = *(DmaAdapter)->DmaOperations->FreeCommonBuffer;
39 ASSERT( freeCommonBuffer != NULL );
40 freeCommonBuffer( DmaAdapter, Length, LogicalAddress, VirtualAddress, CacheEnabled );
41 }
42
43 FORCEINLINE
44 ULONG
45 NTAPI
46 HalReadDmaCounter(
47 IN PDMA_ADAPTER DmaAdapter)
48 {
49 PREAD_DMA_COUNTER readDmaCounter;
50 ULONG counter;
51
52 readDmaCounter = *(DmaAdapter)->DmaOperations->ReadDmaCounter;
53 ASSERT( readDmaCounter != NULL );
54 counter = readDmaCounter( DmaAdapter );
55 return counter;
56 }
57
58 FORCEINLINE
59 ULONG
60 HalGetDmaAlignment(
61 IN PDMA_ADAPTER DmaAdapter)
62 {
63 PGET_DMA_ALIGNMENT getDmaAlignment;
64 ULONG alignment;
65
66 getDmaAlignment = *(DmaAdapter)->DmaOperations->GetDmaAlignment;
67 ASSERT( getDmaAlignment != NULL );
68 alignment = getDmaAlignment( DmaAdapter );
69 return alignment;
70 }
71
72 $endif (_WDMDDK_)
73 $if (_NTDDK_)
74 /* Nothing here */
75
76 #else /* USE_DMA_MACROS ... */
77
78 //DECLSPEC_DEPRECATED_DDK
79 NTHALAPI
80 VOID
81 NTAPI
82 IoFreeAdapterChannel(
83 IN PADAPTER_OBJECT AdapterObject);
84
85 //DECLSPEC_DEPRECATED_DDK
86 NTHALAPI
87 BOOLEAN
88 NTAPI
89 IoFlushAdapterBuffers(
90 IN PADAPTER_OBJECT AdapterObject,
91 IN PMDL Mdl,
92 IN PVOID MapRegisterBase,
93 IN PVOID CurrentVa,
94 IN ULONG Length,
95 IN BOOLEAN WriteToDevice);
96
97 //DECLSPEC_DEPRECATED_DDK
98 NTHALAPI
99 VOID
100 NTAPI
101 IoFreeMapRegisters(
102 IN PADAPTER_OBJECT AdapterObject,
103 IN PVOID MapRegisterBase,
104 IN ULONG NumberOfMapRegisters);
105
106 //DECLSPEC_DEPRECATED_DDK
107 NTHALAPI
108 PVOID
109 NTAPI
110 HalAllocateCommonBuffer(
111 IN PADAPTER_OBJECT AdapterObject,
112 IN ULONG Length,
113 OUT PPHYSICAL_ADDRESS LogicalAddress,
114 IN BOOLEAN CacheEnabled);
115
116 //DECLSPEC_DEPRECATED_DDK
117 NTHALAPI
118 VOID
119 NTAPI
120 HalFreeCommonBuffer(
121 IN PADAPTER_OBJECT AdapterObject,
122 IN ULONG Length,
123 IN PHYSICAL_ADDRESS LogicalAddress,
124 IN PVOID VirtualAddress,
125 IN BOOLEAN CacheEnabled);
126
127 //DECLSPEC_DEPRECATED_DDK
128 NTHALAPI
129 ULONG
130 NTAPI
131 HalReadDmaCounter(
132 IN PADAPTER_OBJECT AdapterObject);
133
134 NTHALAPI
135 NTSTATUS
136 NTAPI
137 HalAllocateAdapterChannel(
138 IN PADAPTER_OBJECT AdapterObject,
139 IN PWAIT_CONTEXT_BLOCK Wcb,
140 IN ULONG NumberOfMapRegisters,
141 IN PDRIVER_CONTROL ExecutionRoutine);
142
143 $endif (_NTDDK_)
144 #endif /* USE_DMA_MACROS ... */
145
146 $if (_NTDDK_)
147 #if !defined(NO_LEGACY_DRIVERS)
148 NTHALAPI
149 NTSTATUS
150 NTAPI
151 HalAssignSlotResources(
152 IN PUNICODE_STRING RegistryPath,
153 IN PUNICODE_STRING DriverClassName,
154 IN PDRIVER_OBJECT DriverObject,
155 IN PDEVICE_OBJECT DeviceObject,
156 IN INTERFACE_TYPE BusType,
157 IN ULONG BusNumber,
158 IN ULONG SlotNumber,
159 IN OUT PCM_RESOURCE_LIST *AllocatedResources);
160
161 NTHALAPI
162 ULONG
163 NTAPI
164 HalGetInterruptVector(
165 IN INTERFACE_TYPE InterfaceType,
166 IN ULONG BusNumber,
167 IN ULONG BusInterruptLevel,
168 IN ULONG BusInterruptVector,
169 OUT PKIRQL Irql,
170 OUT PKAFFINITY Affinity);
171
172 NTHALAPI
173 ULONG
174 NTAPI
175 HalSetBusData(
176 IN BUS_DATA_TYPE BusDataType,
177 IN ULONG BusNumber,
178 IN ULONG SlotNumber,
179 IN PVOID Buffer,
180 IN ULONG Length);
181
182 NTHALAPI
183 ULONG
184 NTAPI
185 HalGetBusData(
186 IN BUS_DATA_TYPE BusDataType,
187 IN ULONG BusNumber,
188 IN ULONG SlotNumber,
189 OUT PVOID Buffer,
190 IN ULONG Length);
191
192 NTHALAPI
193 BOOLEAN
194 NTAPI
195 HalMakeBeep(
196 IN ULONG Frequency);
197 #endif /* !defined(NO_LEGACY_DRIVERS) */
198
199 NTHALAPI
200 PADAPTER_OBJECT
201 NTAPI
202 HalGetAdapter(
203 IN PDEVICE_DESCRIPTION DeviceDescription,
204 OUT PULONG NumberOfMapRegisters);
205
206 VOID
207 NTAPI
208 HalPutDmaAdapter(
209 IN PADAPTER_OBJECT DmaAdapter);
210
211 NTHALAPI
212 VOID
213 NTAPI
214 HalAcquireDisplayOwnership(
215 IN PHAL_RESET_DISPLAY_PARAMETERS ResetDisplayParameters);
216
217 NTHALAPI
218 ULONG
219 NTAPI
220 HalGetBusDataByOffset(
221 IN BUS_DATA_TYPE BusDataType,
222 IN ULONG BusNumber,
223 IN ULONG SlotNumber,
224 OUT PVOID Buffer,
225 IN ULONG Offset,
226 IN ULONG Length);
227
228 NTHALAPI
229 ULONG
230 NTAPI
231 HalSetBusDataByOffset(
232 IN BUS_DATA_TYPE BusDataType,
233 IN ULONG BusNumber,
234 IN ULONG SlotNumber,
235 IN PVOID Buffer,
236 IN ULONG Offset,
237 IN ULONG Length);
238
239 NTHALAPI
240 BOOLEAN
241 NTAPI
242 HalTranslateBusAddress(
243 IN INTERFACE_TYPE InterfaceType,
244 IN ULONG BusNumber,
245 IN PHYSICAL_ADDRESS BusAddress,
246 IN OUT PULONG AddressSpace,
247 OUT PPHYSICAL_ADDRESS TranslatedAddress);
248
249 NTHALAPI
250 PVOID
251 NTAPI
252 HalAllocateCrashDumpRegisters(
253 IN PADAPTER_OBJECT AdapterObject,
254 IN OUT PULONG NumberOfMapRegisters);
255
256 NTSTATUS
257 NTAPI
258 HalGetScatterGatherList(
259 IN PADAPTER_OBJECT DmaAdapter,
260 IN PDEVICE_OBJECT DeviceObject,
261 IN PMDL Mdl,
262 IN PVOID CurrentVa,
263 IN ULONG Length,
264 IN PDRIVER_LIST_CONTROL ExecutionRoutine,
265 IN PVOID Context,
266 IN BOOLEAN WriteToDevice);
267
268 VOID
269 NTAPI
270 HalPutScatterGatherList(
271 IN PADAPTER_OBJECT DmaAdapter,
272 IN PSCATTER_GATHER_LIST ScatterGather,
273 IN BOOLEAN WriteToDevice);
274
275 $endif (_NTDDK_)
276 #endif /* (NTDDI_VERSION >= NTDDI_WIN2K) */
277
278 $if (_NTDDK_)
279 #if (NTDDI_VERSION >= NTDDI_WINXP)
280 NTKERNELAPI
281 VOID
282 FASTCALL
283 HalExamineMBR(
284 IN PDEVICE_OBJECT DeviceObject,
285 IN ULONG SectorSize,
286 IN ULONG MBRTypeIdentifier,
287 OUT PVOID *Buffer);
288 #endif /* (NTDDI_VERSION >= NTDDI_WINXP) */
289
290 #if (NTDDI_VERSION >= NTDDI_WIN7)
291
292 NTSTATUS
293 NTAPI
294 HalAllocateHardwareCounters(
295 IN PGROUP_AFFINITY GroupAffinty,
296 IN ULONG GroupCount,
297 IN PPHYSICAL_COUNTER_RESOURCE_LIST ResourceList,
298 OUT PHANDLE CounterSetHandle);
299
300 NTSTATUS
301 NTAPI
302 HalFreeHardwareCounters(
303 IN HANDLE CounterSetHandle);
304
305 #endif /* (NTDDI_VERSION >= NTDDI_WIN7) */
306
307 #if defined(_IA64_)
308 #if (NTDDI_VERSION >= NTDDI_WIN2K)
309 NTHALAPI
310 ULONG
311 NTAPI
312 HalGetDmaAlignmentRequirement(VOID);
313 #endif
314 #endif /* defined(_IA64_) */
315
316 #if defined(_M_IX86) || defined(_M_AMD64)
317 #define HalGetDmaAlignmentRequirement() 1L
318 #endif
319
320 #if (NTDDI_VERSION >= NTDDI_WIN7)
321
322 typedef struct _WHEA_ERROR_SOURCE_DESCRIPTOR *PWHEA_ERROR_SOURCE_DESCRIPTOR;
323 typedef struct _WHEA_ERROR_RECORD *PWHEA_ERROR_RECORD;
324
325 NTHALAPI
326 VOID
327 NTAPI
328 HalBugCheckSystem(
329 IN PWHEA_ERROR_SOURCE_DESCRIPTOR ErrorSource,
330 IN PWHEA_ERROR_RECORD ErrorRecord);
331
332 #else
333
334 typedef struct _WHEA_ERROR_RECORD *PWHEA_ERROR_RECORD;
335
336 NTHALAPI
337 VOID
338 NTAPI
339 HalBugCheckSystem(
340 IN PWHEA_ERROR_RECORD ErrorRecord);
341
342 #endif /* (NTDDI_VERSION >= NTDDI_WIN7) */
343
344 $endif (_NTDDK_)