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