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>
20 #include <internal/kd.h>
25 #undef ExAcquireFastMutex
26 #undef ExReleaseFastMutex
27 #undef ExTryToAcquireFastMutex
29 /* DATA **********************************************************************/
31 ULONG _KdComPortInUse
= 0;
33 /* FUNCTIONS *****************************************************************/
38 PDRIVER_OBJECT DriverObject
,
39 PUNICODE_STRING RegistryPath
)
43 return STATUS_SUCCESS
;
51 HalStopProfileInterrupt(IN KPROFILE_SOURCE ProfileSource
)
62 HalStartProfileInterrupt(IN KPROFILE_SOURCE ProfileSource
)
73 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(
239 HalEnableSystemInterrupt(
242 KINTERRUPT_MODE InterruptMode
)
252 HalEndSystemInterrupt(
262 HalFlushCommonBuffer(
278 PADAPTER_OBJECT AdapterObject
,
280 PHYSICAL_ADDRESS LogicalAddress
,
281 PVOID VirtualAddress
,
282 BOOLEAN CacheEnabled
)
291 PDEVICE_DESCRIPTION DeviceDescription
,
292 PULONG NumberOfMapRegisters
)
296 return (PADAPTER_OBJECT
)NULL
;
303 BUS_DATA_TYPE BusDataType
,
317 HalGetBusDataByOffset(
318 BUS_DATA_TYPE BusDataType
,
333 HalGetEnvironmentVariable(
346 HalGetInterruptVector(
347 INTERFACE_TYPE InterfaceType
,
349 ULONG BusInterruptLevel
,
350 ULONG BusInterruptVector
,
373 PLOADER_PARAMETER_BLOCK LoaderBlock
)
383 HalInitializeProcessor(ULONG ProcessorNumber
,
384 PLOADER_PARAMETER_BLOCK LoaderBlock
)
403 HalProcessorIdle(VOID
)
411 HalQueryDisplayOwnership(VOID
)
421 HalQueryDisplayParameters(
422 OUT PULONG DispSizeX
,
423 OUT PULONG DispSizeY
,
424 OUT PULONG CursorPosX
,
425 OUT PULONG CursorPosY
)
433 HalQueryRealTimeClock(
444 PADAPTER_OBJECT AdapterObject
)
454 HalReleaseDisplayOwnership(VOID
)
461 HalReportResourceUsage(VOID
)
478 HalRequestSoftwareInterrupt(
485 HalClearSoftwareInterrupt(
495 FIRMWARE_REENTRY Action
)
504 BUS_DATA_TYPE BusDataType
,
518 HalSetBusDataByOffset(
519 BUS_DATA_TYPE BusDataType
,
534 HalSetDisplayParameters(
544 HalSetEnvironmentVariable(
578 HalStartNextProcessor(IN PLOADER_PARAMETER_BLOCK LoaderBlock
,
579 IN PKPROCESSOR_STATE ProcessorState
)
589 HalSystemVectorDispatchEntry(
602 HalTranslateBusAddress(
603 INTERFACE_TYPE InterfaceType
,
605 PHYSICAL_ADDRESS BusAddress
,
607 PPHYSICAL_ADDRESS TranslatedAddress
)
617 HalpAssignDriveLetters(IN
struct _LOADER_PARAMETER_BLOCK
*LoaderBlock
,
618 IN PSTRING NtDeviceName
,
619 OUT PUCHAR NtSystemPath
,
620 OUT PSTRING NtSystemPathString
)
622 /* Call the kernel */
623 IoAssignDriveLetters(LoaderBlock
,
631 HalpReadPartitionTable(IN PDEVICE_OBJECT DeviceObject
,
633 IN BOOLEAN ReturnRecognizedPartitions
,
634 IN OUT PDRIVE_LAYOUT_INFORMATION
*PartitionBuffer
)
636 /* Call the kernel */
637 return IoReadPartitionTable(DeviceObject
,
639 ReturnRecognizedPartitions
,
645 HalpWritePartitionTable(IN PDEVICE_OBJECT DeviceObject
,
647 IN ULONG SectorsPerTrack
,
648 IN ULONG NumberOfHeads
,
649 IN PDRIVE_LAYOUT_INFORMATION PartitionBuffer
)
651 /* Call the kernel */
652 return IoWritePartitionTable(DeviceObject
,
661 HalpSetPartitionInformation(IN PDEVICE_OBJECT DeviceObject
,
663 IN ULONG PartitionNumber
,
664 IN ULONG PartitionType
)
666 /* Call the kernel */
667 return IoSetPartitionInformation(DeviceObject
,
676 IoFlushAdapterBuffers(
677 PADAPTER_OBJECT AdapterObject
,
679 PVOID MapRegisterBase
,
682 BOOLEAN WriteToDevice
)
692 IoFreeAdapterChannel(
693 PADAPTER_OBJECT AdapterObject
)
702 PADAPTER_OBJECT AdapterObject
,
703 PVOID MapRegisterBase
,
704 ULONG NumberOfMapRegisters
)
713 PADAPTER_OBJECT AdapterObject
,
715 PVOID MapRegisterBase
,
718 BOOLEAN WriteToDevice
)
720 PHYSICAL_ADDRESS Address
;
724 Address
.QuadPart
= 0;
744 PKD_PORT_INFORMATION PortInformation
,
756 PKD_PORT_INFORMATION PortInformation
,
769 PKD_PORT_INFORMATION PortInformation
,
793 PKD_PORT_INFORMATION PortInformation
,
814 PKD_PORT_INFORMATION PortInformation
,
839 KdPortDisableInterrupts()
849 KdPortEnableInterrupts()
856 #undef KeAcquireSpinLock
860 PKSPIN_LOCK SpinLock
,
869 KeAcquireSpinLockRaiseToSynch(
870 PKSPIN_LOCK SpinLock
)
880 KeAcquireInStackQueuedSpinLock(
881 IN PKSPIN_LOCK SpinLock
,
882 IN PKLOCK_QUEUE_HANDLE LockHandle
890 KeAcquireInStackQueuedSpinLockRaiseToSynch(
891 IN PKSPIN_LOCK SpinLock
,
892 IN PKLOCK_QUEUE_HANDLE LockHandle
900 KeReleaseInStackQueuedSpinLock(
901 IN PKLOCK_QUEUE_HANDLE LockHandle
909 KeFlushWriteBuffer(VOID
)
914 #undef KeGetCurrentIrql
917 KeGetCurrentIrql(VOID
)
936 KeQueryPerformanceCounter(
937 PLARGE_INTEGER PerformanceFreq
)
961 KeRaiseIrqlToDpcLevel(VOID
)
971 KeRaiseIrqlToSynchLevel(VOID
)
978 #undef KeReleaseSpinLock
982 PKSPIN_LOCK SpinLock
,
991 KeStallExecutionProcessor(
1000 KeTryToAcquireQueuedSpinLock(
1001 KSPIN_LOCK_QUEUE_NUMBER LockNumber
,
1012 KeTryToAcquireQueuedSpinLockRaiseToSynch(
1013 KSPIN_LOCK_QUEUE_NUMBER LockNumber
,
1025 PKSPIN_LOCK SpinLock
)
1056 PKSPIN_LOCK SpinLock
,
1065 READ_PORT_BUFFER_UCHAR(
1076 READ_PORT_BUFFER_ULONG(
1087 READ_PORT_BUFFER_USHORT(
1131 WRITE_PORT_BUFFER_UCHAR(
1142 WRITE_PORT_BUFFER_USHORT(
1153 WRITE_PORT_BUFFER_ULONG(
1191 KeAcquireQueuedSpinLock(IN PKLOCK_QUEUE_HANDLE LockHandle
)
1199 KeAcquireQueuedSpinLockRaiseToSynch(IN PKLOCK_QUEUE_HANDLE LockHandle
)
1207 KeReleaseQueuedSpinLock(IN PKLOCK_QUEUE_HANDLE LockHandle
,