Something went wrong. Try again.
Reactos
Something went wrong. Try again.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363/*++ 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#define HalAllocateMapRegisters HALPRIVATEDISPATCH->HalAllocateMapRegisters#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
//// Display Functions//NTHALAPIVOIDNTAPIHalDisplayString( _In_ PCSTR String);
//// Initialization Functions//NTHALAPIBOOLEANNTAPIHalAllProcessorsStarted( VOID);
#ifdef _ARC_NTHALAPIVOIDNTAPIHalInitializeProcessor( _In_ ULONG ProcessorNumber, _In_ struct _LOADER_PARAMETER_BLOCK *LoaderBlock);
CODE_SEG("INIT")NTHALAPIBOOLEANNTAPIHalInitSystem( _In_ ULONG BootPhase, _In_ struct _LOADER_PARAMETER_BLOCK *LoaderBlock);
NTHALAPIBOOLEANNTAPIHalStartNextProcessor( _In_ struct _LOADER_PARAMETER_BLOCK *LoaderBlock, _In_ PKPROCESSOR_STATE ProcessorState);
#endif
NTHALAPIVOIDNTAPIHalReturnToFirmware( _In_ FIRMWARE_REENTRY Action);
//// CPU Routines//NTHALAPIVOIDNTAPIHalProcessorIdle( VOID);
//// Interrupt Functions//NTHALAPIBOOLEANNTAPIHalBeginSystemInterrupt( _In_ KIRQL Irql, _In_ ULONG Vector, _Out_ PKIRQL OldIrql);
NTHALAPIVOIDFASTCALLHalClearSoftwareInterrupt( _In_ KIRQL Request);
NTHALAPIVOIDNTAPIHalDisableSystemInterrupt( _In_ ULONG Vector, _In_ KIRQL Irql);
NTHALAPIBOOLEANNTAPIHalEnableSystemInterrupt( _In_ ULONG Vector, _In_ KIRQL Irql, _In_ KINTERRUPT_MODE InterruptMode);
#ifdef __REACTOS__NTHALAPIVOIDNTAPIHalEndSystemInterrupt( _In_ KIRQL Irql, _In_ PKTRAP_FRAME TrapFrame);#elseNTHALAPIVOIDNTAPIHalEndSystemInterrupt( _In_ KIRQL Irql, _In_ UCHAR Vector);#endif
#ifdef _ARM_ // FIXME: ndk/arm? armddk.h?NTHALAPIULONGHalGetInterruptSource( VOID);#endif
CODE_SEG("INIT")NTHALAPIVOIDNTAPIHalReportResourceUsage( VOID);
NTHALAPIVOIDFASTCALLHalRequestSoftwareInterrupt( _In_ KIRQL SoftwareInterruptRequested);
#ifdef _M_AMD64
NTHALAPIVOIDNTAPIHalSendNMI( _In_ KAFFINITY TargetSet);
NTHALAPIVOIDNTAPIHalSendSoftwareInterrupt( _In_ KAFFINITY TargetSet, _In_ KIRQL Irql);
#endif // _M_AMD64
NTHALAPIVOIDNTAPIHalRequestIpi( _In_ KAFFINITY TargetSet);
NTHALAPIVOIDNTAPIHalHandleNMI( PVOID NmiInfo);
NTHALAPIUCHARFASTCALLHalSystemVectorDispatchEntry( _In_ ULONG Vector, _Out_ PKINTERRUPT_ROUTINE **FlatDispatch, _Out_ PKINTERRUPT_ROUTINE *NoConnection);
//// Bus Functions//NTHALAPINTSTATUSNTAPIHalAdjustResourceList( _Inout_ PIO_RESOURCE_REQUIREMENTS_LIST *pResourceList);
//// Environment Functions//#ifdef _ARC_NTHALAPIARC_STATUSNTAPIHalSetEnvironmentVariable( _In_ PCH Name, _In_ PCH Value);
NTHALAPIARC_STATUSNTAPIHalGetEnvironmentVariable( _In_ PCH Variable, _In_ USHORT Length, _Out_ PCH Buffer);#endif
//// Profiling Functions//NTHALAPIVOIDNTAPIHalStartProfileInterrupt( _In_ KPROFILE_SOURCE ProfileSource);
NTHALAPIVOIDNTAPIHalStopProfileInterrupt( _In_ KPROFILE_SOURCE ProfileSource);
NTHALAPIULONG_PTRNTAPIHalSetProfileInterval( _In_ ULONG_PTR Interval);
//// Time Functions//NTHALAPIBOOLEANNTAPIHalQueryRealTimeClock( _In_ PTIME_FIELDS RtcTime);
NTHALAPIBOOLEANNTAPIHalSetRealTimeClock( _In_ PTIME_FIELDS RtcTime);
NTHALAPIULONGNTAPIHalSetTimeIncrement( _In_ ULONG Increment);
//// BIOS call API//NTHALAPINTSTATUSNTAPIx86BiosAllocateBuffer( _Inout_ ULONG *Size, _Out_ USHORT *Segment, _Out_ USHORT *Offset);
NTHALAPINTSTATUSNTAPIx86BiosFreeBuffer( _In_ USHORT Segment, _In_ USHORT Offset);
NTHALAPINTSTATUSNTAPIx86BiosReadMemory( _In_ USHORT Segment, _In_ USHORT Offset, _Out_writes_bytes_(Size) PVOID Buffer, _In_ ULONG Size);
NTHALAPINTSTATUSNTAPIx86BiosWriteMemory( _In_ USHORT Segment, _In_ USHORT Offset, _In_reads_bytes_(Size) PVOID Buffer, _In_ ULONG Size);
NTHALAPIBOOLEANNTAPIx86BiosCall( _In_ ULONG InterruptNumber, _Inout_ PX86_BIOS_REGISTERS Registers);
#endif // NTOS_MODE_USER#endif // _HALFUNCS_H