[ATL] Add CHAIN_MSG_MAP macro
[reactos.git] / sdk / include / ndk / halfuncs.h
1 /*++ NDK Version: 0098
2
3 Copyright (c) Alex Ionescu. All rights reserved.
4
5 Header Name:
6
7 halfuncs.h
8
9 Abstract:
10
11 Function definitions for the HAL.
12
13 Author:
14
15 Alex Ionescu (alexi@tinykrnl.org) - Updated - 27-Feb-2006
16
17 --*/
18
19 #ifndef _HALFUNCS_H
20 #define _HALFUNCS_H
21
22 //
23 // Dependencies
24 //
25 #include <umtypes.h>
26 #include <haltypes.h>
27 #include <ketypes.h>
28
29 #ifndef NTOS_MODE_USER
30
31 //
32 // Private HAL Callbacks
33 //
34 #define HalHandlerForBus HALPRIVATEDISPATCH->HalHandlerForBus
35 #define HalHandlerForConfigSpace HALPRIVATEDISPATCH->HalHandlerForConfigSpace
36 #define HalLocateHiberRanges HALPRIVATEDISPATCH->HalLocateHiberRanges
37 #define HalRegisterBusHandler HALPRIVATEDISPATCH->HalRegisterBusHandler
38 #define HalSetWakeEnable HALPRIVATEDISPATCH->HalSetWakeEnable
39 #define HalSetWakeAlarm HALPRIVATEDISPATCH->HalSetWakeAlarm
40 #define HalPciTranslateBusAddress HALPRIVATEDISPATCH->HalPciTranslateBusAddress
41 #define HalPciAssignSlotResources HALPRIVATEDISPATCH->HalPciAssignSlotResources
42 #define HalHaltSystem HALPRIVATEDISPATCH->HalHaltSystem
43 #define HalFindBusAddressTranslation HALPRIVATEDISPATCH->HalFindBusAddressTranslation
44 #define HalResetDisplay HALPRIVATEDISPATCH->HalResetDisplay
45 #define HalAllocateMapRegisters HALPRIVATEDISPATCH->HalAllocateMapRegisters
46 #define KdSetupPciDeviceForDebugging HALPRIVATEDISPATCH->KdSetupPciDeviceForDebugging
47 #define KdReleasePciDeviceforDebugging HALPRIVATEDISPATCH->KdReleasePciDeviceforDebugging
48 #define KdGetAcpiTablePhase0 HALPRIVATEDISPATCH->KdGetAcpiTablePhase0
49 #define KdCheckPowerButton HALPRIVATEDISPATCH->KdCheckPowerButton
50 #define HalVectorToIDTEntry HALPRIVATEDISPATCH->HalVectorToIDTEntry
51 #define KdMapPhysicalMemory64 HALPRIVATEDISPATCH->KdMapPhysicalMemory64
52 #define KdUnmapVirtualAddress HALPRIVATEDISPATCH->KdUnmapVirtualAddress
53
54 //
55 // Display Functions
56 //
57 NTHALAPI
58 VOID
59 NTAPI
60 HalDisplayString(
61 _In_ PCHAR String
62 );
63
64 //
65 // Initialization Functions
66 //
67 NTHALAPI
68 BOOLEAN
69 NTAPI
70 HalAllProcessorsStarted(
71 VOID
72 );
73
74 #ifdef _ARC_
75 NTHALAPI
76 VOID
77 NTAPI
78 HalInitializeProcessor(
79 _In_ ULONG ProcessorNumber,
80 _In_ struct _LOADER_PARAMETER_BLOCK *LoaderBlock
81 );
82
83 NTHALAPI
84 BOOLEAN
85 NTAPI
86 HalInitSystem(
87 _In_ ULONG BootPhase,
88 _In_ struct _LOADER_PARAMETER_BLOCK *LoaderBlock
89 );
90
91 NTHALAPI
92 BOOLEAN
93 NTAPI
94 HalStartNextProcessor(
95 _In_ struct _LOADER_PARAMETER_BLOCK *LoaderBlock,
96 _In_ PKPROCESSOR_STATE ProcessorState
97 );
98
99 #endif
100
101 NTHALAPI
102 VOID
103 NTAPI
104 HalReturnToFirmware(
105 _In_ FIRMWARE_REENTRY Action
106 );
107
108 //
109 // CPU Routines
110 //
111 NTHALAPI
112 VOID
113 NTAPI
114 HalProcessorIdle(
115 VOID
116 );
117
118 //
119 // Interrupt Functions
120 //
121 NTHALAPI
122 BOOLEAN
123 NTAPI
124 HalBeginSystemInterrupt(
125 _In_ KIRQL Irql,
126 _In_ ULONG Vector,
127 _Out_ PKIRQL OldIrql
128 );
129
130 VOID
131 FASTCALL
132 HalClearSoftwareInterrupt(
133 _In_ KIRQL Request
134 );
135
136 NTHALAPI
137 VOID
138 NTAPI
139 HalDisableSystemInterrupt(
140 _In_ ULONG Vector,
141 _In_ KIRQL Irql
142 );
143
144 NTHALAPI
145 BOOLEAN
146 NTAPI
147 HalEnableSystemInterrupt(
148 _In_ ULONG Vector,
149 _In_ KIRQL Irql,
150 _In_ KINTERRUPT_MODE InterruptMode
151 );
152
153 #ifdef __REACTOS__
154 NTHALAPI
155 VOID
156 NTAPI
157 HalEndSystemInterrupt(
158 _In_ KIRQL Irql,
159 _In_ PKTRAP_FRAME TrapFrame
160 );
161 #else
162 NTHALAPI
163 VOID
164 NTAPI
165 HalEndSystemInterrupt(
166 _In_ KIRQL Irql,
167 _In_ UCHAR Vector
168 );
169 #endif
170
171 #ifdef _ARM_ // FIXME: ndk/arm? armddk.h?
172 ULONG
173 HalGetInterruptSource(
174 VOID
175 );
176 #endif
177
178 NTHALAPI
179 VOID
180 NTAPI
181 HalReportResourceUsage(
182 VOID
183 );
184
185 NTHALAPI
186 VOID
187 FASTCALL
188 HalRequestSoftwareInterrupt(
189 _In_ KIRQL SoftwareInterruptRequested
190 );
191
192 NTHALAPI
193 VOID
194 NTAPI
195 HalRequestIpi(
196 _In_ KAFFINITY TargetSet
197 );
198
199 NTHALAPI
200 VOID
201 NTAPI
202 HalHandleNMI(
203 PVOID NmiInfo
204 );
205
206 NTHALAPI
207 UCHAR
208 FASTCALL
209 HalSystemVectorDispatchEntry(
210 _In_ ULONG Vector,
211 _Out_ PKINTERRUPT_ROUTINE **FlatDispatch,
212 _Out_ PKINTERRUPT_ROUTINE *NoConnection
213 );
214
215 //
216 // Bus Functions
217 //
218 NTHALAPI
219 NTSTATUS
220 NTAPI
221 HalAdjustResourceList(
222 _Inout_ PIO_RESOURCE_REQUIREMENTS_LIST *pResourceList
223 );
224
225 //
226 // Environment Functions
227 //
228 #ifdef _ARC_
229 NTHALAPI
230 ARC_STATUS
231 NTAPI
232 HalSetEnvironmentVariable(
233 _In_ PCH Name,
234 _In_ PCH Value
235 );
236
237 NTHALAPI
238 ARC_STATUS
239 NTAPI
240 HalGetEnvironmentVariable(
241 _In_ PCH Variable,
242 _In_ USHORT Length,
243 _Out_ PCH Buffer
244 );
245 #endif
246
247 //
248 // Profiling Functions
249 //
250 VOID
251 NTAPI
252 HalStartProfileInterrupt(
253 _In_ KPROFILE_SOURCE ProfileSource
254 );
255
256 NTHALAPI
257 VOID
258 NTAPI
259 HalStopProfileInterrupt(
260 _In_ KPROFILE_SOURCE ProfileSource
261 );
262
263 NTHALAPI
264 ULONG_PTR
265 NTAPI
266 HalSetProfileInterval(
267 _In_ ULONG_PTR Interval
268 );
269
270 //
271 // Time Functions
272 //
273 NTHALAPI
274 BOOLEAN
275 NTAPI
276 HalQueryRealTimeClock(
277 _In_ PTIME_FIELDS RtcTime
278 );
279
280 NTHALAPI
281 BOOLEAN
282 NTAPI
283 HalSetRealTimeClock(
284 _In_ PTIME_FIELDS RtcTime
285 );
286
287 NTHALAPI
288 ULONG
289 NTAPI
290 HalSetTimeIncrement(
291 _In_ ULONG Increment
292 );
293
294 #endif
295 #endif