3 * COPYRIGHT: See COPYING in the top level directory
4 * PROJECT: ReactOS kernel
6 * PURPOSE: Hardware Abstraction Layer DLL
7 * PROGRAMMER: Casper S. Hornstrup (chorns@users.sourceforge.net)
9 * 01-08-2001 CSH Created
12 /* 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
;
50 PFAST_MUTEX FastMutex
)
59 PFAST_MUTEX FastMutex
)
66 ExTryToAcquireFastMutex(
67 PFAST_MUTEX FastMutex
)
77 HalAcquireDisplayOwnership(
78 PHAL_RESET_DISPLAY_PARAMETERS ResetDisplayParameters
)
86 HalAdjustResourceList(
87 PCM_RESOURCE_LIST Resources
)
91 return STATUS_SUCCESS
;
97 HalAllProcessorsStarted(VOID
)
107 HalAllocateAdapterChannel(
108 PADAPTER_OBJECT AdapterObject
,
109 PWAIT_CONTEXT_BLOCK WaitContextBlock
,
110 ULONG NumberOfMapRegisters
,
111 PDRIVER_CONTROL ExecutionRoutine
)
115 return STATUS_SUCCESS
;
121 HalAllocateCommonBuffer(
122 PADAPTER_OBJECT AdapterObject
,
124 PPHYSICAL_ADDRESS LogicalAddress
,
125 BOOLEAN CacheEnabled
)
135 HalAllocateCrashDumpRegisters(
146 HalAssignSlotResources(
147 PUNICODE_STRING RegistryPath
,
148 PUNICODE_STRING DriverClassName
,
149 PDRIVER_OBJECT DriverObject
,
150 PDEVICE_OBJECT DeviceObject
,
151 INTERFACE_TYPE BusType
,
154 PCM_RESOURCE_LIST
*AllocatedResources
)
164 HalBeginSystemInterrupt (KIRQL Irql
,
176 HalCalibratePerformanceCounter(
185 HalDisableSystemInterrupt(
206 HalEnableSystemInterrupt(
209 KINTERRUPT_MODE InterruptMode
)
219 HalEndSystemInterrupt(
229 HalFlushCommonBuffer(
245 PADAPTER_OBJECT AdapterObject
,
247 PHYSICAL_ADDRESS LogicalAddress
,
248 PVOID VirtualAddress
,
249 BOOLEAN CacheEnabled
)
258 PDEVICE_DESCRIPTION DeviceDescription
,
259 PULONG NumberOfMapRegisters
)
263 return (PADAPTER_OBJECT
)NULL
;
270 BUS_DATA_TYPE BusDataType
,
284 HalGetBusDataByOffset(
285 BUS_DATA_TYPE BusDataType
,
300 HalGetEnvironmentVariable(
313 HalGetInterruptVector(
314 INTERFACE_TYPE InterfaceType
,
316 ULONG BusInterruptLevel
,
317 ULONG BusInterruptVector
,
340 PLOADER_PARAMETER_BLOCK LoaderBlock
)
350 HalInitializeProcessor(ULONG ProcessorNumber
,
351 PLOADER_PARAMETER_BLOCK LoaderBlock
)
370 HalProcessorIdle(VOID
)
378 HalQueryDisplayOwnership(VOID
)
388 HalQueryDisplayParameters(
389 OUT PULONG DispSizeX
,
390 OUT PULONG DispSizeY
,
391 OUT PULONG CursorPosX
,
392 OUT PULONG CursorPosY
)
400 HalQueryRealTimeClock(
411 PADAPTER_OBJECT AdapterObject
)
421 HalReleaseDisplayOwnership(VOID
)
428 HalReportResourceUsage(VOID
)
445 HalRequestSoftwareInterrupt(
452 HalClearSoftwareInterrupt(
462 FIRMWARE_REENTRY Action
)
471 BUS_DATA_TYPE BusDataType
,
485 HalSetBusDataByOffset(
486 BUS_DATA_TYPE BusDataType
,
501 HalSetDisplayParameters(
511 HalSetEnvironmentVariable(
532 HalStartNextProcessor(
544 HalSystemVectorDispatchEntry(
557 HalTranslateBusAddress(
558 INTERFACE_TYPE InterfaceType
,
560 PHYSICAL_ADDRESS BusAddress
,
562 PPHYSICAL_ADDRESS TranslatedAddress
)
572 HalpAssignDriveLetters(IN
struct _LOADER_PARAMETER_BLOCK
*LoaderBlock
,
573 IN PSTRING NtDeviceName
,
574 OUT PUCHAR NtSystemPath
,
575 OUT PSTRING NtSystemPathString
)
577 /* Call the kernel */
578 return IoAssignDriveLetters(LoaderBlock
,
586 HalpReadPartitionTable(IN PDEVICE_OBJECT DeviceObject
,
588 IN BOOLEAN ReturnRecognizedPartitions
,
589 IN OUT PDRIVE_LAYOUT_INFORMATION
*PartitionBuffer
)
591 /* Call the kernel */
592 return IoReadPartitionTable(DeviceObject
,
594 ReturnRecognizedPartitions
,
600 HalpWritePartitionTable(IN PDEVICE_OBJECT DeviceObject
,
602 IN ULONG SectorsPerTrack
,
603 IN ULONG NumberOfHeads
,
604 IN PDRIVE_LAYOUT_INFORMATION PartitionBuffer
)
606 /* Call the kernel */
607 return IoWritePartitionTable(DeviceObject
,
616 HalpSetPartitionInformation(IN PDEVICE_OBJECT DeviceObject
,
618 IN ULONG PartitionNumber
,
619 IN ULONG PartitionType
)
621 /* Call the kernel */
622 return IoSetPartitionInformation(DeviceObject
,
631 IoFlushAdapterBuffers(
632 PADAPTER_OBJECT AdapterObject
,
634 PVOID MapRegisterBase
,
637 BOOLEAN WriteToDevice
)
647 IoFreeAdapterChannel(
648 PADAPTER_OBJECT AdapterObject
)
657 PADAPTER_OBJECT AdapterObject
,
658 PVOID MapRegisterBase
,
659 ULONG NumberOfMapRegisters
)
668 PADAPTER_OBJECT AdapterObject
,
670 PVOID MapRegisterBase
,
673 BOOLEAN WriteToDevice
)
675 PHYSICAL_ADDRESS Address
;
679 Address
.QuadPart
= 0;
699 PKD_PORT_INFORMATION PortInformation
,
711 PKD_PORT_INFORMATION PortInformation
,
724 PKD_PORT_INFORMATION PortInformation
,
748 PKD_PORT_INFORMATION PortInformation
,
769 PKD_PORT_INFORMATION PortInformation
,
794 KdPortDisableInterrupts()
804 KdPortEnableInterrupts()
811 #undef KeAcquireSpinLock
815 PKSPIN_LOCK SpinLock
,
824 KeAcquireSpinLockRaiseToSynch(
825 PKSPIN_LOCK SpinLock
)
835 KeAcquireInStackQueuedSpinLock(
836 IN PKSPIN_LOCK SpinLock
,
837 IN PKLOCK_QUEUE_HANDLE LockHandle
845 KeAcquireInStackQueuedSpinLockRaiseToSynch(
846 IN PKSPIN_LOCK SpinLock
,
847 IN PKLOCK_QUEUE_HANDLE LockHandle
855 KeReleaseInStackQueuedSpinLock(
856 IN PKLOCK_QUEUE_HANDLE LockHandle
864 KeFlushWriteBuffer(VOID
)
869 #undef KeGetCurrentIrql
872 KeGetCurrentIrql(VOID
)
891 KeQueryPerformanceCounter(
892 PLARGE_INTEGER PerformanceFreq
)
916 KeRaiseIrqlToDpcLevel(VOID
)
926 KeRaiseIrqlToSynchLevel(VOID
)
933 #undef KeReleaseSpinLock
937 PKSPIN_LOCK SpinLock
,
946 KeStallExecutionProcessor(
956 PKSPIN_LOCK SpinLock
)
987 PKSPIN_LOCK SpinLock
,
996 READ_PORT_BUFFER_UCHAR(
1007 READ_PORT_BUFFER_ULONG(
1018 READ_PORT_BUFFER_USHORT(
1062 WRITE_PORT_BUFFER_UCHAR(
1073 WRITE_PORT_BUFFER_USHORT(
1084 WRITE_PORT_BUFFER_ULONG(
1122 KeAcquireQueuedSpinLock(IN PKLOCK_QUEUE_HANDLE LockHandle
)
1130 KeReleaseQueuedSpinLock(IN PKLOCK_QUEUE_HANDLE LockHandle
,