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 PUCHAR KdComPortInUse
;
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
)
82 PFAST_MUTEX FastMutex
)
91 PFAST_MUTEX FastMutex
)
98 ExTryToAcquireFastMutex(
99 PFAST_MUTEX FastMutex
)
109 HalAcquireDisplayOwnership(
110 PHAL_RESET_DISPLAY_PARAMETERS ResetDisplayParameters
)
118 HalAdjustResourceList(
119 PCM_RESOURCE_LIST Resources
)
123 return STATUS_SUCCESS
;
129 HalAllProcessorsStarted(VOID
)
139 HalAllocateAdapterChannel(
140 PADAPTER_OBJECT AdapterObject
,
141 PWAIT_CONTEXT_BLOCK WaitContextBlock
,
142 ULONG NumberOfMapRegisters
,
143 PDRIVER_CONTROL ExecutionRoutine
)
147 return STATUS_SUCCESS
;
153 HalAllocateCommonBuffer(
154 PADAPTER_OBJECT AdapterObject
,
156 PPHYSICAL_ADDRESS LogicalAddress
,
157 BOOLEAN CacheEnabled
)
167 HalAllocateCrashDumpRegisters(
168 PADAPTER_OBJECT AdapterObject
,
169 PULONG NumberOfMapRegisters
)
178 HalAssignSlotResources(
179 PUNICODE_STRING RegistryPath
,
180 PUNICODE_STRING DriverClassName
,
181 PDRIVER_OBJECT DriverObject
,
182 PDEVICE_OBJECT DeviceObject
,
183 INTERFACE_TYPE BusType
,
186 PCM_RESOURCE_LIST
*AllocatedResources
)
196 HalBeginSystemInterrupt (KIRQL Irql
,
208 HalCalibratePerformanceCounter(
209 volatile LONG
*Count
,
218 HalDisableSystemInterrupt(ULONG Vector
,
236 HalEnableSystemInterrupt(
239 KINTERRUPT_MODE InterruptMode
)
249 HalEndSystemInterrupt(
259 HalFlushCommonBuffer(
275 PADAPTER_OBJECT AdapterObject
,
277 PHYSICAL_ADDRESS LogicalAddress
,
278 PVOID VirtualAddress
,
279 BOOLEAN CacheEnabled
)
288 PDEVICE_DESCRIPTION DeviceDescription
,
289 PULONG NumberOfMapRegisters
)
293 return (PADAPTER_OBJECT
)NULL
;
300 BUS_DATA_TYPE BusDataType
,
314 HalGetBusDataByOffset(
315 BUS_DATA_TYPE BusDataType
,
330 HalGetEnvironmentVariable(
343 HalGetInterruptVector(
344 INTERFACE_TYPE InterfaceType
,
346 ULONG BusInterruptLevel
,
347 ULONG BusInterruptVector
,
370 PLOADER_PARAMETER_BLOCK LoaderBlock
)
380 HalInitializeProcessor(ULONG ProcessorNumber
,
381 PLOADER_PARAMETER_BLOCK LoaderBlock
)
400 HalProcessorIdle(VOID
)
408 HalQueryDisplayOwnership(VOID
)
418 HalQueryDisplayParameters(
419 OUT PULONG DispSizeX
,
420 OUT PULONG DispSizeY
,
421 OUT PULONG CursorPosX
,
422 OUT PULONG CursorPosY
)
430 HalQueryRealTimeClock(
441 PADAPTER_OBJECT AdapterObject
)
451 HalReleaseDisplayOwnership(VOID
)
458 HalReportResourceUsage(VOID
)
475 HalRequestSoftwareInterrupt(
482 HalClearSoftwareInterrupt(
492 FIRMWARE_REENTRY Action
)
501 BUS_DATA_TYPE BusDataType
,
515 HalSetBusDataByOffset(
516 BUS_DATA_TYPE BusDataType
,
531 HalSetDisplayParameters(
541 HalSetEnvironmentVariable(
575 HalStartNextProcessor(IN PLOADER_PARAMETER_BLOCK LoaderBlock
,
576 IN PKPROCESSOR_STATE ProcessorState
)
586 HalSystemVectorDispatchEntry(IN ULONG Vector
,
587 OUT PKINTERRUPT_ROUTINE
**FlatDispatch
,
588 OUT PKINTERRUPT_ROUTINE
*NoConnection
)
597 HalTranslateBusAddress(
598 INTERFACE_TYPE InterfaceType
,
600 PHYSICAL_ADDRESS BusAddress
,
602 PPHYSICAL_ADDRESS TranslatedAddress
)
612 HalpAssignDriveLetters(IN
struct _LOADER_PARAMETER_BLOCK
*LoaderBlock
,
613 IN PSTRING NtDeviceName
,
614 OUT PUCHAR NtSystemPath
,
615 OUT PSTRING NtSystemPathString
)
617 /* Call the kernel */
618 IoAssignDriveLetters(LoaderBlock
,
626 HalpReadPartitionTable(IN PDEVICE_OBJECT DeviceObject
,
628 IN BOOLEAN ReturnRecognizedPartitions
,
629 IN OUT PDRIVE_LAYOUT_INFORMATION
*PartitionBuffer
)
631 /* Call the kernel */
632 return IoReadPartitionTable(DeviceObject
,
634 ReturnRecognizedPartitions
,
640 HalpWritePartitionTable(IN PDEVICE_OBJECT DeviceObject
,
642 IN ULONG SectorsPerTrack
,
643 IN ULONG NumberOfHeads
,
644 IN PDRIVE_LAYOUT_INFORMATION PartitionBuffer
)
646 /* Call the kernel */
647 return IoWritePartitionTable(DeviceObject
,
656 HalpSetPartitionInformation(IN PDEVICE_OBJECT DeviceObject
,
658 IN ULONG PartitionNumber
,
659 IN ULONG PartitionType
)
661 /* Call the kernel */
662 return IoSetPartitionInformation(DeviceObject
,
671 IoFlushAdapterBuffers(
672 PADAPTER_OBJECT AdapterObject
,
674 PVOID MapRegisterBase
,
677 BOOLEAN WriteToDevice
)
687 IoFreeAdapterChannel(
688 PADAPTER_OBJECT AdapterObject
)
697 PADAPTER_OBJECT AdapterObject
,
698 PVOID MapRegisterBase
,
699 ULONG NumberOfMapRegisters
)
708 PADAPTER_OBJECT AdapterObject
,
710 PVOID MapRegisterBase
,
713 BOOLEAN WriteToDevice
)
715 PHYSICAL_ADDRESS Address
;
719 Address
.QuadPart
= 0;
725 #undef KeAcquireSpinLock
729 PKSPIN_LOCK SpinLock
,
738 KeAcquireSpinLockRaiseToSynch(
739 PKSPIN_LOCK SpinLock
)
749 KeAcquireInStackQueuedSpinLock(
750 IN PKSPIN_LOCK SpinLock
,
751 IN PKLOCK_QUEUE_HANDLE LockHandle
759 KeAcquireInStackQueuedSpinLockRaiseToSynch(
760 IN PKSPIN_LOCK SpinLock
,
761 IN PKLOCK_QUEUE_HANDLE LockHandle
769 KeReleaseInStackQueuedSpinLock(
770 IN PKLOCK_QUEUE_HANDLE LockHandle
779 KeFlushWriteBuffer(VOID
)
785 #undef KeGetCurrentIrql
788 KeGetCurrentIrql(VOID
)
808 KeQueryPerformanceCounter(
809 PLARGE_INTEGER PerformanceFreq
)
834 KeRaiseIrqlToDpcLevel(VOID
)
844 KeRaiseIrqlToSynchLevel(VOID
)
853 #undef KeReleaseSpinLock
857 PKSPIN_LOCK SpinLock
,
866 KeStallExecutionProcessor(
875 KeTryToAcquireQueuedSpinLock(
876 KSPIN_LOCK_QUEUE_NUMBER LockNumber
,
887 KeTryToAcquireQueuedSpinLockRaiseToSynch(
888 KSPIN_LOCK_QUEUE_NUMBER LockNumber
,
896 #if !defined(_M_AMD64)
900 PKSPIN_LOCK SpinLock
)
931 PKSPIN_LOCK SpinLock
,
938 #if !defined(_M_AMD64)
941 READ_PORT_BUFFER_UCHAR(
952 READ_PORT_BUFFER_ULONG(
963 READ_PORT_BUFFER_USHORT(
1007 WRITE_PORT_BUFFER_UCHAR(
1018 WRITE_PORT_BUFFER_USHORT(
1029 WRITE_PORT_BUFFER_ULONG(
1068 KeAcquireQueuedSpinLock(IN PKLOCK_QUEUE_HANDLE LockHandle
)
1076 KeAcquireQueuedSpinLockRaiseToSynch(IN PKLOCK_QUEUE_HANDLE LockHandle
)
1084 KeReleaseQueuedSpinLock(IN PKLOCK_QUEUE_HANDLE LockHandle
,
1091 HalSweepDcache(VOID
)
1097 HalSweepIcache(VOID
)
1103 HalGetInterruptSource(VOID
)