Files
reactos/sdk/include/ndk/halfuncs.h
Adam Słaboń 8a2864dd11 [SDK] Update HAL private dispatch table definitions to Windows 10 November 2015 Update (#8235)
Mostly based on the information on Geoff Chappell's website, Vergilius Project and WDK 10.0.10586.0
2026-03-08 19:04:17 +01:00

506 lines
18 KiB
C

/*++ NDK Version: 0098
Copyright (c) Alex Ionescu. All rights reserved.
Header Name:
halfuncs.h
Abstract:
Function definitions for the HAL.
Author:
Alex Ionescu (alexi@tinykrnl.org) - Updated - 27-Feb-2006
--*/
#ifndef _HALFUNCS_H
#define _HALFUNCS_H
//
// Dependencies
//
#include <umtypes.h>
#include <haltypes.h>
#include <ketypes.h>
#include <section_attribs.h>
#ifndef NTOS_MODE_USER
//
// Private HAL Callbacks
//
#define HalHandlerForBus HALPRIVATEDISPATCH->HalHandlerForBus
#define HalHandlerForConfigSpace HALPRIVATEDISPATCH->HalHandlerForConfigSpace
#define HalLocateHiberRanges HALPRIVATEDISPATCH->HalLocateHiberRanges
#define HalRegisterBusHandler HALPRIVATEDISPATCH->HalRegisterBusHandler
#define HalSetWakeEnable HALPRIVATEDISPATCH->HalSetWakeEnable
#define HalSetWakeAlarm HALPRIVATEDISPATCH->HalSetWakeAlarm
#define HalPciTranslateBusAddress HALPRIVATEDISPATCH->HalPciTranslateBusAddress
#define HalPciAssignSlotResources HALPRIVATEDISPATCH->HalPciAssignSlotResources
#define HalHaltSystem HALPRIVATEDISPATCH->HalHaltSystem
#define HalFindBusAddressTranslation HALPRIVATEDISPATCH->HalFindBusAddressTranslation
#define HalResetDisplay HALPRIVATEDISPATCH->HalResetDisplay
#if (NTDDI_VERSION >= NTDDI_WS03)
#define HalAllocateMapRegisters HALPRIVATEDISPATCH->HalAllocateMapRegisters
#endif
#if (NTDDI_VERSION >= NTDDI_WINXP)
#define KdSetupPciDeviceForDebugging HALPRIVATEDISPATCH->KdSetupPciDeviceForDebugging
#define KdReleasePciDeviceforDebugging HALPRIVATEDISPATCH->KdReleasePciDeviceforDebugging
#define KdGetAcpiTablePhase0 HALPRIVATEDISPATCH->KdGetAcpiTablePhase0
#define KdCheckPowerButton HALPRIVATEDISPATCH->KdCheckPowerButton
#define HalVectorToIDTEntry HALPRIVATEDISPATCH->HalVectorToIDTEntry
#define KdMapPhysicalMemory64 HALPRIVATEDISPATCH->KdMapPhysicalMemory64
#define KdUnmapVirtualAddress HALPRIVATEDISPATCH->KdUnmapVirtualAddress
#endif
#if (NTDDI_VERSION >= NTDDI_LONGHORN)
#define KdGetPciDataByOffset HALPRIVATEDISPATCH->KdGetPciDataByOffset
#define KdSetPciDataByOffset HALPRIVATEDISPATCH->KdSetPciDataByOffset
#define HalGetInterruptVectorOverride HALPRIVATEDISPATCH->HalGetInterruptVectorOverride
#define HalGetVectorInputOverride HALPRIVATEDISPATCH->HalGetVectorInputOverride
#define HalLoadMicrocode HALPRIVATEDISPATCH->HalLoadMicrocode
#define HalUnloadMicrocode HALPRIVATEDISPATCH->HalUnloadMicrocode
#define HalPostMicrocodeUpdate HALPRIVATEDISPATCH->HalPostMicrocodeUpdate
#endif
#if (NTDDI_VERSION >= NTDDI_VISTASP1)
#define HalAllocateMessageTargetOverride HALPRIVATEDISPATCH->HalAllocateMessageTargetOverride
#define HalFreeMessageTargetOverride HALPRIVATEDISPATCH->HalFreeMessageTargetOverride
#define HalDpReplaceBegin HALPRIVATEDISPATCH->HalDpReplaceBegin
#define HalDpReplaceTarget HALPRIVATEDISPATCH->HalDpReplaceTarget
#define HalDpReplaceControl HALPRIVATEDISPATCH->HalDpReplaceControl
#define HalDpReplaceEnd HALPRIVATEDISPATCH->HalDpReplaceEnd
#define HalPrepareForBugcheck HALPRIVATEDISPATCH->HalPrepareForBugcheck
#endif
#if (NTDDI_VERSION >= NTDDI_WIN7)
#define HalQueryWakeTime HALPRIVATEDISPATCH->HalQueryWakeTime
#define HalReportIdleStateUsage HALPRIVATEDISPATCH->HalReportIdleStateUsage
#define HalTscSynchronization HALPRIVATEDISPATCH->HalTscSynchronization
#define HalWheaInitProcessorGenericSection HALPRIVATEDISPATCH->HalWheaInitProcessorGenericSection
#define HalStopLegacyUsbInterrupts HALPRIVATEDISPATCH->HalStopLegacyUsbInterrupts
#endif
#if (NTDDI_VERSION >= NTDDI_VISTASP2)
#define HalReadWheaPhysicalMemory HALPRIVATEDISPATCH->HalReadWheaPhysicalMemory
#define HalWriteWheaPhysicalMemory HALPRIVATEDISPATCH->HalWriteWheaPhysicalMemory
#endif
#if (NTDDI_VERSION >= NTDDI_WIN7)
#define HalDpMaskLevelTriggeredInterrupts HALPRIVATEDISPATCH->HalDpMaskLevelTriggeredInterrupts
#define HalDpUnmaskLevelTriggeredInterrupts HALPRIVATEDISPATCH->HalDpUnmaskLevelTriggeredInterrupts
#define HalDpGetInterruptReplayState HALPRIVATEDISPATCH->HalDpGetInterruptReplayState
#define HalDpReplayInterrupts HALPRIVATEDISPATCH->HalDpReplayInterrupts
#define HalQueryIoPortAccessSupported HALPRIVATEDISPATCH->HalQueryIoPortAccessSupported
#endif
#if (NTDDI_VERSION >= NTDDI_WIN8)
#define KdSetupIntegratedDeviceForDebugging HALPRIVATEDISPATCH->KdSetupIntegratedDeviceForDebugging
#define KdReleaseIntegratedDeviceForDebugging HALPRIVATEDISPATCH->KdReleaseIntegratedDeviceForDebugging
#define HalGetEnlightenmentInformation HALPRIVATEDISPATCH->HalGetEnlightenmentInformation
#define HalAllocateEarlyPages HALPRIVATEDISPATCH->HalAllocateEarlyPages
#define HalMapEarlyPages HALPRIVATEDISPATCH->HalMapEarlyPages
#if (NTDDI_VERSION == NTDDI_WIN8)
#define HalGetClockOwner HALPRIVATEDISPATCH->HalGetClockOwner
#define HalGetClockConfiguration HALPRIVATEDISPATCH->HalGetClockConfiguration
#endif
#define HalNotifyProcessorFreeze HALPRIVATEDISPATCH->HalNotifyProcessorFreeze
#define HalPrepareProcessorForIdle HALPRIVATEDISPATCH->HalPrepareProcessorForIdle
#define HalRegisterLogRoutine HALPRIVATEDISPATCH->HalRegisterLogRoutine
#define HalResumeProcessorFromIdle HALPRIVATEDISPATCH->HalResumeProcessorFromIdle
#define HalVectorToIDTEntryEx HALPRIVATEDISPATCH->HalVectorToIDTEntryEx
#define HalSecondaryInterruptQueryPrimaryInformation HALPRIVATEDISPATCH->HalSecondaryInterruptQueryPrimaryInformation
#define HalMaskInterrupt HALPRIVATEDISPATCH->HalMaskInterrupt
#define HalUnmaskInterrupt HALPRIVATEDISPATCH->HalUnmaskInterrupt
#define HalIsInterruptTypeSecondary HALPRIVATEDISPATCH->HalIsInterruptTypeSecondary
#define HalAllocateGsivForSecondaryInterrupt HALPRIVATEDISPATCH->HalAllocateGsivForSecondaryInterrupt
#define HalAddInterruptRemapping HALPRIVATEDISPATCH->HalAddInterruptRemapping
#define HalRemoveInterruptRemapping HALPRIVATEDISPATCH->HalRemoveInterruptRemapping
#define HalSaveAndDisableHvEnlightenment HALPRIVATEDISPATCH->HalSaveAndDisableHvEnlightenment
#define HalRestoreHvEnlightenment HALPRIVATEDISPATCH->HalRestoreHvEnlightenment
#define HalFlushIoBuffersExternalCache HALPRIVATEDISPATCH->HalFlushIoBuffersExternalCache
#define HalFlushExternalCache HALPRIVATEDISPATCH->HalFlushExternalCache
#define HalPciEarlyRestore HALPRIVATEDISPATCH->HalPciEarlyRestore
#define HalGetProcessorId HALPRIVATEDISPATCH->HalGetProcessorId
#define HalAllocatePmcCounterSet HALPRIVATEDISPATCH->HalAllocatePmcCounterSet
#define HalCollectPmcCounters HALPRIVATEDISPATCH->HalCollectPmcCounters
#define HalFreePmcCounterSet HALPRIVATEDISPATCH->HalFreePmcCounterSet
#define HalProcessorHalt HALPRIVATEDISPATCH->HalProcessorHalt
#define HalTimerQueryCycleCounter HALPRIVATEDISPATCH->HalTimerQueryCycleCounter
#if (NTDDI_VERSION == NTDDI_WIN8)
#define HalGetNextTickDuration HALPRIVATEDISPATCH->HalGetNextTickDuration
#endif
#define HalPciMarkHiberPhase HALPRIVATEDISPATCH->HalPciMarkHiberPhase
#define HalQueryProcessorRestartEntryPoint HALPRIVATEDISPATCH->HalQueryProcessorRestartEntryPoint
#define HalRequestInterrupt HALPRIVATEDISPATCH->HalRequestInterrupt
#define HalEnumerateUnmaskedInterrupts HALPRIVATEDISPATCH->HalEnumerateUnmaskedInterrupts
#define HalFlushAndInvalidatePageExternalCache HALPRIVATEDISPATCH->HalFlushAndInvalidatePageExternalCache
#define KdEnumerateDebuggingDevices HALPRIVATEDISPATCH->KdEnumerateDebuggingDevices
#define HalFlushIoRectangleExternalCache HALPRIVATEDISPATCH->HalFlushIoRectangleExternalCache
#define HalPowerEarlyRestore HALPRIVATEDISPATCH->HalPowerEarlyRestore
#define HalQueryCapsuleCapabilities HALPRIVATEDISPATCH->HalQueryCapsuleCapabilities
#define HalUpdateCapsule HALPRIVATEDISPATCH->HalUpdateCapsule
#define HalPciMultiStageResumeCapable HALPRIVATEDISPATCH->HalPciMultiStageResumeCapable
#define HalDmaFreeCrashDumpRegisters HALPRIVATEDISPATCH->HalDmaFreeCrashDumpRegisters
#define HalAcpiAoacCapable HALPRIVATEDISPATCH->HalAcpiAoacCapable
#endif
#if (NTDDI_VERSION >= NTDDI_WINBLUE)
#define HalInterruptSetDestination HALPRIVATEDISPATCH->HalInterruptSetDestination
#define HalGetClockConfiguration HALPRIVATEDISPATCH->HalGetClockConfiguration
#define HalClockTimerActivate HALPRIVATEDISPATCH->HalClockTimerActivate
#define HalClockTimerInitialize HALPRIVATEDISPATCH->HalClockTimerInitialize
#define HalClockTimerStop HALPRIVATEDISPATCH->HalClockTimerStop
#define HalClockTimerArm HALPRIVATEDISPATCH->HalClockTimerArm
#define HalTimerOnlyClockInterruptPending HALPRIVATEDISPATCH->HalTimerOnlyClockInterruptPending
#define HalAcpiGetMultiNode HALPRIVATEDISPATCH->HalAcpiGetMultiNode
#define HalPowerSetRebootHandler HALPRIVATEDISPATCH->HalPowerSetRebootHandler
#define HalIommuRegisterDispatchTable HALPRIVATEDISPATCH->HalIommuRegisterDispatchTable
#define HalTimerWatchdogStart HALPRIVATEDISPATCH->HalTimerWatchdogStart
#define HalTimerWatchdogResetCountdown HALPRIVATEDISPATCH->HalTimerWatchdogResetCountdown
#define HalTimerWatchdogStop HALPRIVATEDISPATCH->HalTimerWatchdogStop
#define HalTimerWatchdogGeneratedLastReset HALPRIVATEDISPATCH->HalTimerWatchdogGeneratedLastReset
#define HalTimerWatchdogTriggerSystemReset HALPRIVATEDISPATCH->HalTimerWatchdogTriggerSystemReset
#endif
#if (NTDDI_VERSION >= NTDDI_WIN10)
#define HalInterruptVectorDataToGsiv HALPRIVATEDISPATCH->HalInterruptVectorDataToGsiv
#define HalInterruptGetHighestPriorityInterrupt HALPRIVATEDISPATCH->HalInterruptGetHighestPriorityInterrupt
#define HalProcessorOn HALPRIVATEDISPATCH->HalProcessorOn
#define HalProcessorOff HALPRIVATEDISPATCH->HalProcessorOff
#define HalProcessorFreeze HALPRIVATEDISPATCH->HalProcessorFreeze
#define HalDmaLinkDeviceObjectByToken HALPRIVATEDISPATCH->HalDmaLinkDeviceObjectByToken
#define HalDmaCheckAdapterToken HALPRIVATEDISPATCH->HalDmaCheckAdapterToken
#define HalPciLateRestore HALPRIVATEDISPATCH->HalPciLateRestore
#define HalTimerConvertPerformanceCounterToAuxiliaryCounter HALPRIVATEDISPATCH->HalTimerConvertPerformanceCounterToAuxiliaryCounter
#define HalTimerConvertAuxiliaryCounterToPerformanceCounter HALPRIVATEDISPATCH->HalTimerConvertAuxiliaryCounterToPerformanceCounter
#define HalTimerQueryAuxiliaryCounterFrequency HALPRIVATEDISPATCH->HalTimerQueryAuxiliaryCounterFrequency
#define HalConnectThermalInterrupt HALPRIVATEDISPATCH->HalConnectThermalInterrupt
#define HalIsEFIRuntimeActive HALPRIVATEDISPATCH->HalIsEFIRuntimeActive
#endif
//
// Private HAL IOMMU Callbacks
//
#define HalIommuSupportEnabled HalIommuDispatch->HalIommuSupportEnabled
#define HalIommuGetConfiguration HalIommuDispatch->HalIommuGetConfiguration
#define HalIommuGetLibraryContext HalIommuDispatch->HalIommuGetLibraryContext
#define HalIommuMapDevice HalIommuDispatch->HalIommuMapDevice
#define HalIommuEnableDevicePasid HalIommuDispatch->HalIommuEnableDevicePasid
#define HalIommuSetAddressSpace HalIommuDispatch->HalIommuSetAddressSpace
#define HalIommuDisableDevicePasid HalIommuDispatch->HalIommuDisableDevicePasid
#define HalIommuUnmapDevice HalIommuDispatch->HalIommuUnmapDevice
#define HalIommuFreeLibraryContext HalIommuDispatch->HalIommuFreeLibraryContext
#define HalIommuFlushTb HalIommuDispatch->HalIommuFlushTb
#define HalIommuFlushAllPasid HalIommuDispatch->HalIommuFlushAllPasid
#define HalIommuProcessPageRequestQueue HalIommuDispatch->HalIommuProcessPageRequestQueue
#define HalIommuFaultRoutine HalIommuDispatch->HalIommuFaultRoutine
#define HalIommuReferenceAsid HalIommuDispatch->HalIommuReferenceAsid
#define HalIommuDereferenceAsid HalIommuDispatch->HalIommuDereferenceAsid
#define HalIommuServicePageFault HalIommuDispatch->HalIommuServicePageFault
#define HalIommuDevicePowerChange HalIommuDispatch->HalIommuDevicePowerChange
//
// Display Functions
//
NTHALAPI
VOID
NTAPI
HalDisplayString(
_In_ PCSTR String
);
//
// Initialization Functions
//
NTHALAPI
BOOLEAN
NTAPI
HalAllProcessorsStarted(
VOID
);
#ifdef _ARC_
NTHALAPI
VOID
NTAPI
HalInitializeProcessor(
_In_ ULONG ProcessorNumber,
_In_ struct _LOADER_PARAMETER_BLOCK *LoaderBlock
);
CODE_SEG("INIT")
NTHALAPI
BOOLEAN
NTAPI
HalInitSystem(
_In_ ULONG BootPhase,
_In_ struct _LOADER_PARAMETER_BLOCK *LoaderBlock
);
NTHALAPI
BOOLEAN
NTAPI
HalStartNextProcessor(
_In_ struct _LOADER_PARAMETER_BLOCK *LoaderBlock,
_In_ PKPROCESSOR_STATE ProcessorState
);
#endif
NTHALAPI
VOID
NTAPI
HalReturnToFirmware(
_In_ FIRMWARE_REENTRY Action
);
//
// CPU Routines
//
NTHALAPI
VOID
NTAPI
HalProcessorIdle(
VOID
);
//
// Interrupt Functions
//
NTHALAPI
BOOLEAN
NTAPI
HalBeginSystemInterrupt(
_In_ KIRQL Irql,
_In_ ULONG Vector,
_Out_ PKIRQL OldIrql
);
NTHALAPI
VOID
FASTCALL
HalClearSoftwareInterrupt(
_In_ KIRQL Request
);
NTHALAPI
VOID
NTAPI
HalDisableSystemInterrupt(
_In_ ULONG Vector,
_In_ KIRQL Irql
);
NTHALAPI
BOOLEAN
NTAPI
HalEnableSystemInterrupt(
_In_ ULONG Vector,
_In_ KIRQL Irql,
_In_ KINTERRUPT_MODE InterruptMode
);
#ifdef __REACTOS__
NTHALAPI
VOID
NTAPI
HalEndSystemInterrupt(
_In_ KIRQL Irql,
_In_ PKTRAP_FRAME TrapFrame
);
#else
NTHALAPI
VOID
NTAPI
HalEndSystemInterrupt(
_In_ KIRQL Irql,
_In_ UCHAR Vector
);
#endif
#ifdef _ARM_ // FIXME: ndk/arm? armddk.h?
NTHALAPI
ULONG
HalGetInterruptSource(
VOID
);
#endif
CODE_SEG("INIT")
NTHALAPI
VOID
NTAPI
HalReportResourceUsage(
VOID
);
NTHALAPI
VOID
FASTCALL
HalRequestSoftwareInterrupt(
_In_ KIRQL SoftwareInterruptRequested
);
#ifdef _M_AMD64
NTHALAPI
VOID
NTAPI
HalSendNMI(
_In_ KAFFINITY TargetSet);
NTHALAPI
VOID
NTAPI
HalSendSoftwareInterrupt(
_In_ KAFFINITY TargetSet,
_In_ KIRQL Irql);
#endif // _M_AMD64
NTHALAPI
VOID
NTAPI
HalRequestIpi(
_In_ KAFFINITY TargetSet
);
NTHALAPI
VOID
NTAPI
HalHandleNMI(
PVOID NmiInfo
);
NTHALAPI
UCHAR
FASTCALL
HalSystemVectorDispatchEntry(
_In_ ULONG Vector,
_Out_ PKINTERRUPT_ROUTINE **FlatDispatch,
_Out_ PKINTERRUPT_ROUTINE *NoConnection
);
//
// Bus Functions
//
NTHALAPI
NTSTATUS
NTAPI
HalAdjustResourceList(
_Inout_ PIO_RESOURCE_REQUIREMENTS_LIST *pResourceList
);
//
// Environment Functions
//
#ifdef _ARC_
NTHALAPI
ARC_STATUS
NTAPI
HalSetEnvironmentVariable(
_In_ PCH Name,
_In_ PCH Value
);
NTHALAPI
ARC_STATUS
NTAPI
HalGetEnvironmentVariable(
_In_ PCH Variable,
_In_ USHORT Length,
_Out_ PCH Buffer
);
#endif
//
// Profiling Functions
//
NTHALAPI
VOID
NTAPI
HalStartProfileInterrupt(
_In_ KPROFILE_SOURCE ProfileSource
);
NTHALAPI
VOID
NTAPI
HalStopProfileInterrupt(
_In_ KPROFILE_SOURCE ProfileSource
);
NTHALAPI
ULONG_PTR
NTAPI
HalSetProfileInterval(
_In_ ULONG_PTR Interval
);
//
// Time Functions
//
NTHALAPI
BOOLEAN
NTAPI
HalQueryRealTimeClock(
_In_ PTIME_FIELDS RtcTime
);
NTHALAPI
BOOLEAN
NTAPI
HalSetRealTimeClock(
_In_ PTIME_FIELDS RtcTime
);
NTHALAPI
ULONG
NTAPI
HalSetTimeIncrement(
_In_ ULONG Increment
);
//
// BIOS call API
//
NTHALAPI
NTSTATUS
NTAPI
x86BiosAllocateBuffer(
_Inout_ ULONG *Size,
_Out_ USHORT *Segment,
_Out_ USHORT *Offset);
NTHALAPI
NTSTATUS
NTAPI
x86BiosFreeBuffer(
_In_ USHORT Segment,
_In_ USHORT Offset);
NTHALAPI
NTSTATUS
NTAPI
x86BiosReadMemory(
_In_ USHORT Segment,
_In_ USHORT Offset,
_Out_writes_bytes_(Size) PVOID Buffer,
_In_ ULONG Size);
NTHALAPI
NTSTATUS
NTAPI
x86BiosWriteMemory(
_In_ USHORT Segment,
_In_ USHORT Offset,
_In_reads_bytes_(Size) PVOID Buffer,
_In_ ULONG Size);
NTHALAPI
BOOLEAN
NTAPI
x86BiosCall(
_In_ ULONG InterruptNumber,
_Inout_ PX86_BIOS_REGISTERS Registers);
#endif // NTOS_MODE_USER
#endif // _HALFUNCS_H