[PSDK]
[reactos.git] / reactos / 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 $if (_WDMDDK_)
7
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
73 $if (_NTDDK_)
74
75 /* Nothing here */
76
77 #else /* USE_DMA_MACROS ... */
78
79 //DECLSPEC_DEPRECATED_DDK
80 NTHALAPI
81 VOID
82 NTAPI
83 IoFreeAdapterChannel(
84 IN PADAPTER_OBJECT AdapterObject);
85
86 //DECLSPEC_DEPRECATED_DDK
87 NTHALAPI
88 BOOLEAN
89 NTAPI
90 IoFlushAdapterBuffers(
91 IN PADAPTER_OBJECT AdapterObject,
92 IN PMDL Mdl,
93 IN PVOID MapRegisterBase,
94 IN PVOID CurrentVa,
95 IN ULONG Length,
96 IN BOOLEAN WriteToDevice);
97
98 //DECLSPEC_DEPRECATED_DDK
99 NTHALAPI
100 VOID
101 NTAPI
102 IoFreeMapRegisters(
103 IN PADAPTER_OBJECT AdapterObject,
104 IN PVOID MapRegisterBase,
105 IN ULONG NumberOfMapRegisters);
106
107 //DECLSPEC_DEPRECATED_DDK
108 NTHALAPI
109 PVOID
110 NTAPI
111 HalAllocateCommonBuffer(
112 IN PADAPTER_OBJECT AdapterObject,
113 IN ULONG Length,
114 OUT PPHYSICAL_ADDRESS LogicalAddress,
115 IN BOOLEAN CacheEnabled);
116
117 //DECLSPEC_DEPRECATED_DDK
118 NTHALAPI
119 VOID
120 NTAPI
121 HalFreeCommonBuffer(
122 IN PADAPTER_OBJECT AdapterObject,
123 IN ULONG Length,
124 IN PHYSICAL_ADDRESS LogicalAddress,
125 IN PVOID VirtualAddress,
126 IN BOOLEAN CacheEnabled);
127
128 //DECLSPEC_DEPRECATED_DDK
129 NTHALAPI
130 ULONG
131 NTAPI
132 HalReadDmaCounter(
133 IN PADAPTER_OBJECT AdapterObject);
134
135 NTHALAPI
136 NTSTATUS
137 NTAPI
138 HalAllocateAdapterChannel(
139 IN PADAPTER_OBJECT AdapterObject,
140 IN PWAIT_CONTEXT_BLOCK Wcb,
141 IN ULONG NumberOfMapRegisters,
142 IN PDRIVER_CONTROL ExecutionRoutine);
143
144 $endif /* _NTDDK_ */
145 #endif /* USE_DMA_MACROS ... */
146 $if (_NTDDK_)
147
148 #if !defined(NO_LEGACY_DRIVERS)
149 NTHALAPI
150 NTSTATUS
151 NTAPI
152 HalAssignSlotResources(
153 IN PUNICODE_STRING RegistryPath,
154 IN PUNICODE_STRING DriverClassName,
155 IN PDRIVER_OBJECT DriverObject,
156 IN PDEVICE_OBJECT DeviceObject,
157 IN INTERFACE_TYPE BusType,
158 IN ULONG BusNumber,
159 IN ULONG SlotNumber,
160 IN OUT PCM_RESOURCE_LIST *AllocatedResources);
161
162 NTHALAPI
163 ULONG
164 NTAPI
165 HalGetInterruptVector(
166 IN INTERFACE_TYPE InterfaceType,
167 IN ULONG BusNumber,
168 IN ULONG BusInterruptLevel,
169 IN ULONG BusInterruptVector,
170 OUT PKIRQL Irql,
171 OUT PKAFFINITY Affinity);
172
173 NTHALAPI
174 ULONG
175 NTAPI
176 HalSetBusData(
177 IN BUS_DATA_TYPE BusDataType,
178 IN ULONG BusNumber,
179 IN ULONG SlotNumber,
180 IN PVOID Buffer,
181 IN ULONG Length);
182
183 NTHALAPI
184 ULONG
185 NTAPI
186 HalGetBusData(
187 IN BUS_DATA_TYPE BusDataType,
188 IN ULONG BusNumber,
189 IN ULONG SlotNumber,
190 OUT PVOID Buffer,
191 IN ULONG Length);
192
193 NTHALAPI
194 BOOLEAN
195 NTAPI
196 HalMakeBeep(
197 IN ULONG Frequency);
198 #endif /* !defined(NO_LEGACY_DRIVERS) */
199
200 NTHALAPI
201 PADAPTER_OBJECT
202 NTAPI
203 HalGetAdapter(
204 IN PDEVICE_DESCRIPTION DeviceDescription,
205 OUT PULONG NumberOfMapRegisters);
206
207 VOID
208 NTAPI
209 HalPutDmaAdapter(
210 IN PADAPTER_OBJECT DmaAdapter);
211
212 NTHALAPI
213 VOID
214 NTAPI
215 HalAcquireDisplayOwnership(
216 IN PHAL_RESET_DISPLAY_PARAMETERS ResetDisplayParameters);
217
218 NTHALAPI
219 ULONG
220 NTAPI
221 HalGetBusDataByOffset(
222 IN BUS_DATA_TYPE BusDataType,
223 IN ULONG BusNumber,
224 IN ULONG SlotNumber,
225 OUT PVOID Buffer,
226 IN ULONG Offset,
227 IN ULONG Length);
228
229 NTHALAPI
230 ULONG
231 NTAPI
232 HalSetBusDataByOffset(
233 IN BUS_DATA_TYPE BusDataType,
234 IN ULONG BusNumber,
235 IN ULONG SlotNumber,
236 IN PVOID Buffer,
237 IN ULONG Offset,
238 IN ULONG Length);
239
240 NTHALAPI
241 BOOLEAN
242 NTAPI
243 HalTranslateBusAddress(
244 IN INTERFACE_TYPE InterfaceType,
245 IN ULONG BusNumber,
246 IN PHYSICAL_ADDRESS BusAddress,
247 IN OUT PULONG AddressSpace,
248 OUT PPHYSICAL_ADDRESS TranslatedAddress);
249
250 NTHALAPI
251 PVOID
252 NTAPI
253 HalAllocateCrashDumpRegisters(
254 IN PADAPTER_OBJECT AdapterObject,
255 IN OUT PULONG NumberOfMapRegisters);
256
257 NTSTATUS
258 NTAPI
259 HalGetScatterGatherList(
260 IN PADAPTER_OBJECT DmaAdapter,
261 IN PDEVICE_OBJECT DeviceObject,
262 IN PMDL Mdl,
263 IN PVOID CurrentVa,
264 IN ULONG Length,
265 IN PDRIVER_LIST_CONTROL ExecutionRoutine,
266 IN PVOID Context,
267 IN BOOLEAN WriteToDevice);
268
269 VOID
270 NTAPI
271 HalPutScatterGatherList(
272 IN PADAPTER_OBJECT DmaAdapter,
273 IN PSCATTER_GATHER_LIST ScatterGather,
274 IN BOOLEAN WriteToDevice);
275
276 $endif /* _NTDDK_ */
277 #endif /* (NTDDI_VERSION >= NTDDI_WIN2K) */
278 $if (_NTDDK_)
279
280 #if (NTDDI_VERSION >= NTDDI_WINXP)
281 NTKERNELAPI
282 VOID
283 FASTCALL
284 HalExamineMBR(
285 IN PDEVICE_OBJECT DeviceObject,
286 IN ULONG SectorSize,
287 IN ULONG MBRTypeIdentifier,
288 OUT PVOID *Buffer);
289 #endif /* (NTDDI_VERSION >= NTDDI_WINXP) */
290
291 #if (NTDDI_VERSION >= NTDDI_WIN7)
292
293 NTSTATUS
294 NTAPI
295 HalAllocateHardwareCounters(
296 IN PGROUP_AFFINITY GroupAffinty,
297 IN ULONG GroupCount,
298 IN PPHYSICAL_COUNTER_RESOURCE_LIST ResourceList,
299 OUT PHANDLE CounterSetHandle);
300
301 NTSTATUS
302 NTAPI
303 HalFreeHardwareCounters(
304 IN HANDLE CounterSetHandle);
305
306 #endif /* (NTDDI_VERSION >= NTDDI_WIN7) */
307
308 #if defined(_IA64_)
309 #if (NTDDI_VERSION >= NTDDI_WIN2K)
310 NTHALAPI
311 ULONG
312 NTAPI
313 HalGetDmaAlignmentRequirement(VOID);
314 #endif
315 #endif /* defined(_IA64_) */
316
317 #if defined(_M_IX86) || defined(_M_AMD64)
318 #define HalGetDmaAlignmentRequirement() 1L
319 #endif
320
321 #if (NTDDI_VERSION >= NTDDI_WIN7)
322
323 typedef struct _WHEA_ERROR_SOURCE_DESCRIPTOR *PWHEA_ERROR_SOURCE_DESCRIPTOR;
324 typedef struct _WHEA_ERROR_RECORD *PWHEA_ERROR_RECORD;
325
326 NTHALAPI
327 VOID
328 NTAPI
329 HalBugCheckSystem(
330 IN PWHEA_ERROR_SOURCE_DESCRIPTOR ErrorSource,
331 IN PWHEA_ERROR_RECORD ErrorRecord);
332
333 #else
334
335 typedef struct _WHEA_ERROR_RECORD *PWHEA_ERROR_RECORD;
336
337 NTHALAPI
338 VOID
339 NTAPI
340 HalBugCheckSystem(
341 IN PWHEA_ERROR_RECORD ErrorRecord);
342
343 #endif /* (NTDDI_VERSION >= NTDDI_WIN7) */
344
345 $endif /* _NTDDK_ */
346