2 * COPYRIGHT: See COPYING in the top level directory
3 * PROJECT: ReactOS kernel
5 * PURPOSE: Hardware Abstraction Layer DLL
6 * PROGRAMMER: Casper S. Hornstrup (chorns@users.sourceforge.net)
8 * 01-08-2001 CSH Created
11 /* INCLUDES ******************************************************************/
17 #include <ndk/halfuncs.h>
18 #include <ndk/iofuncs.h>
19 #include <ndk/kdfuncs.h>
24 #undef ExAcquireFastMutex
25 #undef ExReleaseFastMutex
26 #undef ExTryToAcquireFastMutex
28 /* DATA **********************************************************************/
30 ULONG _KdComPortInUse
= 0;
32 /* FUNCTIONS *****************************************************************/
37 PDRIVER_OBJECT DriverObject
,
38 PUNICODE_STRING RegistryPath
)
42 return STATUS_SUCCESS
;
50 HalStopProfileInterrupt(IN KPROFILE_SOURCE ProfileSource
)
61 HalStartProfileInterrupt(IN KPROFILE_SOURCE ProfileSource
)
72 HalSetProfileInterval(IN ULONG_PTR Interval
)
81 PFAST_MUTEX FastMutex
)
90 PFAST_MUTEX FastMutex
)
97 ExTryToAcquireFastMutex(
98 PFAST_MUTEX FastMutex
)
108 HalAcquireDisplayOwnership(
109 PHAL_RESET_DISPLAY_PARAMETERS ResetDisplayParameters
)
117 HalAdjustResourceList(
118 PCM_RESOURCE_LIST Resources
)
122 return STATUS_SUCCESS
;
128 HalAllProcessorsStarted(VOID
)
138 HalAllocateAdapterChannel(
139 PADAPTER_OBJECT AdapterObject
,
140 PWAIT_CONTEXT_BLOCK WaitContextBlock
,
141 ULONG NumberOfMapRegisters
,
142 PDRIVER_CONTROL ExecutionRoutine
)
146 return STATUS_SUCCESS
;
152 HalAllocateCommonBuffer(
153 PADAPTER_OBJECT AdapterObject
,
155 PPHYSICAL_ADDRESS LogicalAddress
,
156 BOOLEAN CacheEnabled
)
166 HalAllocateCrashDumpRegisters(
167 PADAPTER_OBJECT AdapterObject
,
168 PULONG NumberOfMapRegisters
)
177 HalAssignSlotResources(
178 PUNICODE_STRING RegistryPath
,
179 PUNICODE_STRING DriverClassName
,
180 PDRIVER_OBJECT DriverObject
,
181 PDEVICE_OBJECT DeviceObject
,
182 INTERFACE_TYPE BusType
,
185 PCM_RESOURCE_LIST
*AllocatedResources
)
195 HalBeginSystemInterrupt (KIRQL Irql
,
207 HalCalibratePerformanceCounter(
208 volatile LONG
*Count
,
217 HalDisableSystemInterrupt(
238 HalEnableSystemInterrupt(
241 KINTERRUPT_MODE InterruptMode
)
251 HalEndSystemInterrupt(
261 HalFlushCommonBuffer(
277 PADAPTER_OBJECT AdapterObject
,
279 PHYSICAL_ADDRESS LogicalAddress
,
280 PVOID VirtualAddress
,
281 BOOLEAN CacheEnabled
)
290 PDEVICE_DESCRIPTION DeviceDescription
,
291 PULONG NumberOfMapRegisters
)
295 return (PADAPTER_OBJECT
)NULL
;
302 BUS_DATA_TYPE BusDataType
,
316 HalGetBusDataByOffset(
317 BUS_DATA_TYPE BusDataType
,
332 HalGetEnvironmentVariable(
345 HalGetInterruptVector(
346 INTERFACE_TYPE InterfaceType
,
348 ULONG BusInterruptLevel
,
349 ULONG BusInterruptVector
,
372 PLOADER_PARAMETER_BLOCK LoaderBlock
)
382 HalInitializeProcessor(ULONG ProcessorNumber
,
383 PLOADER_PARAMETER_BLOCK LoaderBlock
)
402 HalProcessorIdle(VOID
)
410 HalQueryDisplayOwnership(VOID
)
420 HalQueryDisplayParameters(
421 OUT PULONG DispSizeX
,
422 OUT PULONG DispSizeY
,
423 OUT PULONG CursorPosX
,
424 OUT PULONG CursorPosY
)
432 HalQueryRealTimeClock(
443 PADAPTER_OBJECT AdapterObject
)
453 HalReleaseDisplayOwnership(VOID
)
460 HalReportResourceUsage(VOID
)
477 HalRequestSoftwareInterrupt(
484 HalClearSoftwareInterrupt(
494 FIRMWARE_REENTRY Action
)
503 BUS_DATA_TYPE BusDataType
,
517 HalSetBusDataByOffset(
518 BUS_DATA_TYPE BusDataType
,
533 HalSetDisplayParameters(
543 HalSetEnvironmentVariable(
577 HalStartNextProcessor(IN PLOADER_PARAMETER_BLOCK LoaderBlock
,
578 IN PKPROCESSOR_STATE ProcessorState
)
588 HalSystemVectorDispatchEntry(
601 HalTranslateBusAddress(
602 INTERFACE_TYPE InterfaceType
,
604 PHYSICAL_ADDRESS BusAddress
,
606 PPHYSICAL_ADDRESS TranslatedAddress
)
616 HalpAssignDriveLetters(IN
struct _LOADER_PARAMETER_BLOCK
*LoaderBlock
,
617 IN PSTRING NtDeviceName
,
618 OUT PUCHAR NtSystemPath
,
619 OUT PSTRING NtSystemPathString
)
621 /* Call the kernel */
622 IoAssignDriveLetters(LoaderBlock
,
630 HalpReadPartitionTable(IN PDEVICE_OBJECT DeviceObject
,
632 IN BOOLEAN ReturnRecognizedPartitions
,
633 IN OUT PDRIVE_LAYOUT_INFORMATION
*PartitionBuffer
)
635 /* Call the kernel */
636 return IoReadPartitionTable(DeviceObject
,
638 ReturnRecognizedPartitions
,
644 HalpWritePartitionTable(IN PDEVICE_OBJECT DeviceObject
,
646 IN ULONG SectorsPerTrack
,
647 IN ULONG NumberOfHeads
,
648 IN PDRIVE_LAYOUT_INFORMATION PartitionBuffer
)
650 /* Call the kernel */
651 return IoWritePartitionTable(DeviceObject
,
660 HalpSetPartitionInformation(IN PDEVICE_OBJECT DeviceObject
,
662 IN ULONG PartitionNumber
,
663 IN ULONG PartitionType
)
665 /* Call the kernel */
666 return IoSetPartitionInformation(DeviceObject
,
675 IoFlushAdapterBuffers(
676 PADAPTER_OBJECT AdapterObject
,
678 PVOID MapRegisterBase
,
681 BOOLEAN WriteToDevice
)
691 IoFreeAdapterChannel(
692 PADAPTER_OBJECT AdapterObject
)
701 PADAPTER_OBJECT AdapterObject
,
702 PVOID MapRegisterBase
,
703 ULONG NumberOfMapRegisters
)
712 PADAPTER_OBJECT AdapterObject
,
714 PVOID MapRegisterBase
,
717 BOOLEAN WriteToDevice
)
719 PHYSICAL_ADDRESS Address
;
723 Address
.QuadPart
= 0;
729 #undef KeAcquireSpinLock
733 PKSPIN_LOCK SpinLock
,
742 KeAcquireSpinLockRaiseToSynch(
743 PKSPIN_LOCK SpinLock
)
753 KeAcquireInStackQueuedSpinLock(
754 IN PKSPIN_LOCK SpinLock
,
755 IN PKLOCK_QUEUE_HANDLE LockHandle
763 KeAcquireInStackQueuedSpinLockRaiseToSynch(
764 IN PKSPIN_LOCK SpinLock
,
765 IN PKLOCK_QUEUE_HANDLE LockHandle
773 KeReleaseInStackQueuedSpinLock(
774 IN PKLOCK_QUEUE_HANDLE LockHandle
782 KeFlushWriteBuffer(VOID
)
787 #undef KeGetCurrentIrql
790 KeGetCurrentIrql(VOID
)
809 KeQueryPerformanceCounter(
810 PLARGE_INTEGER PerformanceFreq
)
834 KeRaiseIrqlToDpcLevel(VOID
)
844 KeRaiseIrqlToSynchLevel(VOID
)
851 #undef KeReleaseSpinLock
855 PKSPIN_LOCK SpinLock
,
864 KeStallExecutionProcessor(
873 KeTryToAcquireQueuedSpinLock(
874 KSPIN_LOCK_QUEUE_NUMBER LockNumber
,
885 KeTryToAcquireQueuedSpinLockRaiseToSynch(
886 KSPIN_LOCK_QUEUE_NUMBER LockNumber
,
898 PKSPIN_LOCK SpinLock
)
929 PKSPIN_LOCK SpinLock
,
938 READ_PORT_BUFFER_UCHAR(
949 READ_PORT_BUFFER_ULONG(
960 READ_PORT_BUFFER_USHORT(
1004 WRITE_PORT_BUFFER_UCHAR(
1015 WRITE_PORT_BUFFER_USHORT(
1026 WRITE_PORT_BUFFER_ULONG(
1064 KeAcquireQueuedSpinLock(IN PKLOCK_QUEUE_HANDLE LockHandle
)
1072 KeAcquireQueuedSpinLockRaiseToSynch(IN PKLOCK_QUEUE_HANDLE LockHandle
)
1080 KeReleaseQueuedSpinLock(IN PKLOCK_QUEUE_HANDLE LockHandle
,