[NTOSKRNL]

Add most of the missing HAL stubs for both public & private dispatch tables

svn path=/trunk/; revision=51016
This commit is contained in:
Pierre Schweitzer
2011-03-11 13:16:16 +00:00
parent 7161edbfe7
commit c4d0b3e36b
2 changed files with 382 additions and 34 deletions
+220 -27
View File
@@ -4,6 +4,7 @@
* FILE: ntoskrnl/fstub/halstub.c
* PURPOSE: I/O Stub HAL Routines
* PROGRAMMERS: Alex Ionescu ([email protected])
Pierre Schweitzer ([email protected])
*/
/* INCLUDES ******************************************************************/
@@ -17,51 +18,51 @@
HAL_DISPATCH HalDispatchTable =
{
HAL_DISPATCH_VERSION,
(pHalQuerySystemInformation)NULL,
(pHalSetSystemInformation)NULL,
(pHalQueryBusSlots)NULL,
xHalQuerySystemInformation,
xHalSetSystemInformation,
xHalQueryBusSlots,
0,
xHalExamineMBR,
xHalIoAssignDriveLetters,
xHalIoReadPartitionTable,
xHalIoSetPartitionInformation,
xHalIoWritePartitionTable,
(pHalHandlerForBus)NULL,
(pHalReferenceBusHandler)NULL,
(pHalReferenceBusHandler)NULL,
(pHalInitPnpDriver)NULL,
(pHalInitPowerManagement)NULL,
xHalHandlerForBus,
xHalReferenceHandler,
xHalReferenceHandler,
xHalInitPnpDriver,
xHalInitPowerManagement,
(pHalGetDmaAdapter) NULL,
xHalGetInterruptTranslator,
(pHalStartMirroring)NULL,
(pHalEndMirroring)NULL,
(pHalMirrorPhysicalMemory)NULL,
xHalStartMirroring,
xHalEndMirroring,
xHalMirrorPhysicalMemory,
xHalEndOfBoot,
(pHalMirrorVerify)NULL
xHalMirrorPhysicalMemory
};
HAL_PRIVATE_DISPATCH HalPrivateDispatchTable =
{
HAL_PRIVATE_DISPATCH_VERSION,
(pHalHandlerForBus)NULL,
(pHalHandlerForConfigSpace)NULL,
(pHalLocateHiberRanges)NULL,
(pHalRegisterBusHandler)NULL,
xHalHandlerForBus,
(pHalHandlerForConfigSpace)xHalHandlerForBus,
xHalLocateHiberRanges,
xHalRegisterBusHandler,
xHalSetWakeEnable,
(pHalSetWakeAlarm)NULL,
(pHalTranslateBusAddress)NULL,
(pHalAssignSlotResources)NULL,
xHalSetWakeAlarm,
xHalTranslateBusAddress,
(pHalAssignSlotResources)xHalTranslateBusAddress,
xHalHaltSystem,
(pHalFindBusAddressTranslation)NULL,
(pHalResetDisplay)NULL,
(pHalAllocateMapRegisters)NULL,
(pKdSetupPciDeviceForDebugging)NULL,
(pKdReleasePciDeviceForDebugging)NULL,
(pKdGetAcpiTablePhase0)NULL,
(pKdCheckPowerButton)NULL,
(pHalVectorToIDTEntry)xHalVectorToIDTEntry,
(pKdMapPhysicalMemory64)NULL,
(pKdUnmapVirtualAddress)NULL
xHalAllocateMapRegisters,
xKdSetupPciDeviceForDebugging,
xKdReleasePciDeviceForDebugging,
xKdGetAcpiTablePhase,
(pKdCheckPowerButton)xHalReferenceHandler,
xHalVectorToIDTEntry,
(pKdMapPhysicalMemory64)MatchAll,
(pKdUnmapVirtualAddress)xKdUnmapVirtualAddress
};
/* FUNCTIONS *****************************************************************/
@@ -86,6 +87,8 @@ VOID
NTAPI
xHalEndOfBoot(VOID)
{
PAGED_CODE();
/* Nothing */
return;
}
@@ -97,3 +100,193 @@ xHalSetWakeEnable(IN BOOLEAN Enable)
/* Nothing */
return;
}
PBUS_HANDLER
FASTCALL
xHalHandlerForBus(IN INTERFACE_TYPE InterfaceType,
IN ULONG BusNumber)
{
return NULL;
}
VOID
FASTCALL
xHalReferenceHandler(IN PBUS_HANDLER BusHandler)
{
/* Nothing */
return;
}
NTSTATUS
NTAPI
xHalInitPnpDriver(VOID)
{
return STATUS_NOT_SUPPORTED;
}
NTSTATUS
NTAPI
xHalInitPowerManagement(IN PPM_DISPATCH_TABLE PmDriverDispatchTable,
OUT PPM_DISPATCH_TABLE *PmHalDispatchTable)
{
return STATUS_NOT_SUPPORTED;
}
NTSTATUS
NTAPI
xHalStartMirroring(VOID)
{
PAGED_CODE();
return STATUS_NOT_SUPPORTED;
}
NTSTATUS
NTAPI
xHalEndMirroring(IN ULONG PassNumber)
{
return STATUS_NOT_SUPPORTED;
}
NTSTATUS
NTAPI
xHalMirrorPhysicalMemory(IN PHYSICAL_ADDRESS PhysicalAddress,
IN LARGE_INTEGER NumberOfBytes)
{
return STATUS_NOT_SUPPORTED;
}
NTSTATUS
NTAPI
xHalQueryBusSlots(IN PBUS_HANDLER BusHandler,
IN ULONG BufferSize,
OUT PULONG SlotNumbers,
OUT PULONG ReturnedLength)
{
PAGED_CODE();
return STATUS_NOT_SUPPORTED;
}
NTSTATUS
NTAPI
xHalSetSystemInformation(IN HAL_SET_INFORMATION_CLASS InformationClass,
IN ULONG BufferSize,
IN PVOID Buffer)
{
PAGED_CODE();
return STATUS_INVALID_LEVEL;
}
NTSTATUS
NTAPI
xHalQuerySystemInformation(IN HAL_QUERY_INFORMATION_CLASS InformationClass,
IN ULONG BufferSize,
IN OUT PVOID Buffer,
OUT PULONG ReturnedLength)
{
PAGED_CODE();
return STATUS_INVALID_LEVEL;
}
VOID
NTAPI
xHalLocateHiberRanges(IN PVOID MemoryMap)
{
/* Nothing */
return;
}
NTSTATUS
NTAPI
xHalRegisterBusHandler(IN INTERFACE_TYPE InterfaceType,
IN BUS_DATA_TYPE ConfigSpace,
IN ULONG BusNumber,
IN INTERFACE_TYPE ParentInterfaceType,
IN ULONG ParentBusNumber,
IN ULONG ContextSize,
IN PINSTALL_BUS_HANDLER InstallCallback,
OUT PBUS_HANDLER *BusHandler)
{
PAGED_CODE();
return STATUS_NOT_SUPPORTED;
}
VOID
NTAPI
xHalSetWakeAlarm(IN ULONGLONG AlartTime,
IN PTIME_FIELDS TimeFields)
{
/* Nothing */
return;
}
BOOLEAN
NTAPI
xHalTranslateBusAddress(IN INTERFACE_TYPE InterfaceType,
IN ULONG BusNumber,
IN PHYSICAL_ADDRESS BusAddress,
IN OUT PULONG AddressSpace,
OUT PPHYSICAL_ADDRESS TranslatedAddress)
{
KeBugCheckEx(HAL_INITIALIZATION_FAILED, 0, 0, 0, 0);
return FALSE;
}
NTSTATUS
NTAPI
xHalAllocateMapRegisters(IN PADAPTER_OBJECT AdapterObject,
IN ULONG Unknown,
IN ULONG Unknown2,
PMAP_REGISTER_ENTRY Registers)
{
PAGED_CODE();
return STATUS_NOT_IMPLEMENTED;
}
NTSTATUS
NTAPI
xKdSetupPciDeviceForDebugging(IN PVOID LoaderBlock OPTIONAL,
IN OUT PDEBUG_DEVICE_DESCRIPTOR PciDevice)
{
return STATUS_NOT_IMPLEMENTED;
}
NTSTATUS
NTAPI
xKdReleasePciDeviceForDebugging(IN OUT PDEBUG_DEVICE_DESCRIPTOR PciDevice)
{
return STATUS_NOT_IMPLEMENTED;
}
PVOID
NTAPI
xKdGetAcpiTablePhase(IN struct _LOADER_PARAMETER_BLOCK *LoaderBlock,
IN ULONG Signature)
{
return NULL;
}
PVOID
NTAPI
MatchAll(IN PHYSICAL_ADDRESS PhysicalAddress,
IN ULONG NumberPages,
IN BOOLEAN FlushCurrentTLB)
{
return NULL;
}
VOID
NTAPI
xKdUnmapVirtualAddress(IN PVOID VirtualAddress,
IN ULONG NumberPages,
IN BOOLEAN FlushCurrentTLB)
{
/* Nothing */
return;
}
+162 -7
View File
@@ -4,6 +4,7 @@
* FILE: ntoskrnl/include/hal.h
* PURPOSE: Internal header for the I/O HAL Functions (Fstub)
* PROGRAMMERS: Alex Ionescu ([email protected])
* Pierre Schweitzer ([email protected])
*/
#pragma once
@@ -73,13 +74,167 @@ xHalVectorToIDTEntry(
NTSTATUS
NTAPI
xHalGetInterruptTranslator(IN INTERFACE_TYPE ParentInterfaceType,
IN ULONG ParentBusNumber,
IN INTERFACE_TYPE BridgeInterfaceType,
IN USHORT Size,
IN USHORT Version,
OUT PTRANSLATOR_INTERFACE Translator,
OUT PULONG BridgeBusNumber);
xHalGetInterruptTranslator(
IN INTERFACE_TYPE ParentInterfaceType,
IN ULONG ParentBusNumber,
IN INTERFACE_TYPE BridgeInterfaceType,
IN USHORT Size,
IN USHORT Version,
OUT PTRANSLATOR_INTERFACE Translator,
OUT PULONG BridgeBusNumber
);
PBUS_HANDLER
FASTCALL
xHalHandlerForBus(
IN INTERFACE_TYPE InterfaceType,
IN ULONG BusNumber
);
VOID
FASTCALL
xHalReferenceHandler(
IN PBUS_HANDLER BusHandler
);
NTSTATUS
NTAPI
xHalInitPnpDriver(
VOID
);
NTSTATUS
NTAPI
xHalInitPowerManagement(
IN PPM_DISPATCH_TABLE PmDriverDispatchTable,
OUT PPM_DISPATCH_TABLE *PmHalDispatchTable
);
NTSTATUS
NTAPI
xHalStartMirroring(
VOID
);
NTSTATUS
NTAPI
xHalEndMirroring(
IN ULONG PassNumber
);
NTSTATUS
NTAPI
xHalMirrorPhysicalMemory(
IN PHYSICAL_ADDRESS PhysicalAddress,
IN LARGE_INTEGER NumberOfBytes
);
NTSTATUS
NTAPI
xHalQueryBusSlots(
IN PBUS_HANDLER BusHandler,
IN ULONG BufferSize,
OUT PULONG SlotNumbers,
OUT PULONG ReturnedLength
);
NTSTATUS
NTAPI
xHalSetSystemInformation(
IN HAL_SET_INFORMATION_CLASS InformationClass,
IN ULONG BufferSize,
IN PVOID Buffer
);
NTSTATUS
NTAPI
xHalQuerySystemInformation(
IN HAL_QUERY_INFORMATION_CLASS InformationClass,
IN ULONG BufferSize,
IN OUT PVOID Buffer,
OUT PULONG ReturnedLength
);
VOID
NTAPI
xHalLocateHiberRanges(
IN PVOID MemoryMap
);
NTSTATUS
NTAPI
xHalRegisterBusHandler(
IN INTERFACE_TYPE InterfaceType,
IN BUS_DATA_TYPE ConfigSpace,
IN ULONG BusNumber,
IN INTERFACE_TYPE ParentInterfaceType,
IN ULONG ParentBusNumber,
IN ULONG ContextSize,
IN PINSTALL_BUS_HANDLER InstallCallback,
OUT PBUS_HANDLER *BusHandler
);
VOID
NTAPI
xHalSetWakeAlarm(
IN ULONGLONG AlartTime,
IN PTIME_FIELDS TimeFields
);
BOOLEAN
NTAPI
xHalTranslateBusAddress(
IN INTERFACE_TYPE InterfaceType,
IN ULONG BusNumber,
IN PHYSICAL_ADDRESS BusAddress,
IN OUT PULONG AddressSpace,
OUT PPHYSICAL_ADDRESS TranslatedAddress
);
NTSTATUS
NTAPI
xHalAllocateMapRegisters(
IN PADAPTER_OBJECT AdapterObject,
IN ULONG Unknown,
IN ULONG Unknown2,
PMAP_REGISTER_ENTRY Registers
);
NTSTATUS
NTAPI
xKdSetupPciDeviceForDebugging(
IN PVOID LoaderBlock OPTIONAL,
IN OUT PDEBUG_DEVICE_DESCRIPTOR PciDevice
);
NTSTATUS
NTAPI
xKdReleasePciDeviceForDebugging(
IN OUT PDEBUG_DEVICE_DESCRIPTOR PciDevice
);
PVOID
NTAPI
xKdGetAcpiTablePhase(
IN struct _LOADER_PARAMETER_BLOCK *LoaderBlock,
IN ULONG Signature
);
PVOID
NTAPI
MatchAll(
IN PHYSICAL_ADDRESS PhysicalAddress,
IN ULONG NumberPages,
IN BOOLEAN FlushCurrentTLB
);
VOID
NTAPI
xKdUnmapVirtualAddress(
IN PVOID VirtualAddress,
IN ULONG NumberPages,
IN BOOLEAN FlushCurrentTLB
);
//