- Move more stuff to wdm.h
[reactos.git] / 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 // The DDK steals these away from you.
56 //
57 #ifdef _MSC_VER
58 void __cdecl _enable(void);
59 void __cdecl _disable(void);
60 #pragma intrinsic(_enable)
61 #pragma intrinsic(_disable)
62 #endif
63
64 //
65 // Display Functions
66 //
67 NTHALAPI
68 VOID
69 NTAPI
70 HalDisplayString(
71 IN PCHAR String
72 );
73
74 //
75 // Initialization Functions
76 //
77 NTHALAPI
78 BOOLEAN
79 NTAPI
80 HalAllProcessorsStarted(
81 VOID
82 );
83
84 #ifdef _ARC_
85 NTHALAPI
86 VOID
87 NTAPI
88 HalInitializeProcessor(
89 ULONG ProcessorNumber,
90 struct _LOADER_PARAMETER_BLOCK *LoaderBlock
91 );
92
93 NTHALAPI
94 BOOLEAN
95 NTAPI
96 HalInitSystem(
97 ULONG BootPhase,
98 struct _LOADER_PARAMETER_BLOCK *LoaderBlock
99 );
100
101 NTHALAPI
102 BOOLEAN
103 NTAPI
104 HalStartNextProcessor(
105 IN struct _LOADER_PARAMETER_BLOCK *LoaderBlock,
106 IN PKPROCESSOR_STATE ProcessorState
107 );
108
109 #endif
110
111 NTHALAPI
112 VOID
113 NTAPI
114 HalReturnToFirmware(
115 FIRMWARE_REENTRY Action
116 );
117
118 //
119 // CPU Routines
120 //
121 NTHALAPI
122 VOID
123 NTAPI
124 HalProcessorIdle(
125 VOID
126 );
127
128 //
129 // Interrupt Functions
130 //
131 NTHALAPI
132 BOOLEAN
133 NTAPI
134 HalBeginSystemInterrupt(
135 KIRQL Irql,
136 UCHAR Vector,
137 PKIRQL OldIrql
138 );
139
140 VOID
141 FASTCALL
142 HalClearSoftwareInterrupt(
143 IN KIRQL Request
144 );
145
146 NTHALAPI
147 VOID
148 NTAPI
149 HalDisableSystemInterrupt(
150 UCHAR Vector,
151 KIRQL Irql
152 );
153
154 NTHALAPI
155 BOOLEAN
156 NTAPI
157 HalEnableSystemInterrupt(
158 UCHAR Vector,
159 KIRQL Irql,
160 KINTERRUPT_MODE InterruptMode
161 );
162
163 NTHALAPI
164 VOID
165 NTAPI
166 HalEndSystemInterrupt(
167 KIRQL Irql,
168 IN PKTRAP_FRAME TrapFrame
169 );
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 KIRQL SoftwareInterruptRequested
190 );
191
192 NTHALAPI
193 VOID
194 NTAPI
195 HalRequestIpi(
196 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 // Environment Functions
217 //
218 #ifdef _ARC_
219 NTHALAPI
220 ARC_STATUS
221 NTAPI
222 HalSetEnvironmentVariable(
223 IN PCH Name,
224 IN PCH Value
225 );
226
227 NTHALAPI
228 ARC_STATUS
229 NTAPI
230 HalGetEnvironmentVariable(
231 IN PCH Variable,
232 IN USHORT Length,
233 OUT PCH Buffer
234 );
235 #endif
236
237 //
238 // Profiling Functions
239 //
240 VOID
241 NTAPI
242 HalStartProfileInterrupt(
243 IN KPROFILE_SOURCE ProfileSource
244 );
245
246 NTHALAPI
247 VOID
248 NTAPI
249 HalStopProfileInterrupt(
250 IN KPROFILE_SOURCE ProfileSource
251 );
252
253 NTHALAPI
254 ULONG_PTR
255 NTAPI
256 HalSetProfileInterval(
257 IN ULONG_PTR Interval
258 );
259
260 //
261 // Time Functions
262 //
263 NTHALAPI
264 BOOLEAN
265 NTAPI
266 HalQueryRealTimeClock(
267 IN PTIME_FIELDS RtcTime
268 );
269
270 NTHALAPI
271 BOOLEAN
272 NTAPI
273 HalSetRealTimeClock(
274 IN PTIME_FIELDS RtcTime
275 );
276
277 NTHALAPI
278 ULONG
279 NTAPI
280 HalSetTimeIncrement(
281 IN ULONG Increment
282 );
283
284 #endif
285 #endif