Something went wrong. Try again.
Reactos
Something went wrong. Try again.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125/* * PROJECT: ReactOS HAL * LICENSE: GPL - See COPYING in the top level directory * FILE: hal/halx86/generic/sysinfo.c * PURPOSE: HAL Information Routines * PROGRAMMERS: Alex Ionescu (alex.ionescu@reactos.org) * Vadim Galyant (vgal@rambler.ru) */
/* INCLUDES *******************************************************************/
#include <hal.h>#define NDEBUG#include <debug.h>
HAL_AMLI_BAD_IO_ADDRESS_LIST HalAMLIBadIOAddressList[] ={ { 0x0000, 0x10, 1, NULL }, // DMA controller { 0x0020, 0x02, 0, NULL }, // Programmable Interrupt Controller (8259A) { 0x0040, 0x04, 1, NULL }, // System Timer 1 { 0x0048, 0x04, 1, NULL }, // System Timer 2 failsafe { 0x0070, 0x02, 1, NULL }, // Real-time clock { 0x0074, 0x03, 1, NULL }, // Extended CMOS { 0x0081, 0x03, 1, NULL }, // DMA 1 page registers { 0x0087, 0x01, 1, NULL }, // DMA 1 Ch 0 low page { 0x0089, 0x01, 1, NULL }, // DMA 2 page registers { 0x008A, 0x02, 1, NULL }, // DMA 2 page registers { 0x008F, 0x01, 1, NULL }, // DMA 2 low page refresh { 0x0090, 0x02, 1, NULL }, // Arbitration control { 0x0093, 0x02, 1, NULL }, // Reserved system board setup { 0x0096, 0x02, 1, NULL }, // POS channel select { 0x00A0, 0x02, 0, NULL }, // Cascaded PIC { 0x00C0, 0x20, 1, NULL }, // ISA DMA { 0x04D0, 0x02, 0, NULL }, // PIC edge/level registers { 0x0CF8, 0x08, 1, &HaliHandlePCIConfigSpaceAccess }, // PCI configuration space { 0x0000, 0x00, 0, NULL } // Reserved};
/* FUNCTIONS ******************************************************************/
NTSTATUSNTAPIHaliHandlePCIConfigSpaceAccess(_In_ BOOLEAN IsRead, _In_ ULONG Port, _In_ ULONG Length, _Inout_ PULONG Buffer){ DPRINT1("HaliHandlePCIConfigSpaceAccess: IsRead %X, Port 0x%X, Length %u, Buffer %p\n", IsRead, Port, Length, Buffer); //ASSERT(FALSE); return STATUS_NOT_IMPLEMENTED;}
NTSTATUSNTAPIHaliQuerySystemInformation(IN HAL_QUERY_INFORMATION_CLASS InformationClass, IN ULONG BufferSize, IN OUT PVOID Buffer, OUT PULONG ReturnedLength){#define REPORT_THIS_CASE(X) case X: DPRINT1("Unhandled case: %s\n", #X); break switch (InformationClass) { REPORT_THIS_CASE(HalInstalledBusInformation); REPORT_THIS_CASE(HalProfileSourceInformation); REPORT_THIS_CASE(HalInformationClassUnused1); REPORT_THIS_CASE(HalPowerInformation); REPORT_THIS_CASE(HalProcessorSpeedInformation); REPORT_THIS_CASE(HalCallbackInformation); REPORT_THIS_CASE(HalMapRegisterInformation); REPORT_THIS_CASE(HalMcaLogInformation); case HalFrameBufferCachingInformation: { /* FIXME: TODO */ return STATUS_NOT_IMPLEMENTED; } REPORT_THIS_CASE(HalDisplayBiosInformation); REPORT_THIS_CASE(HalProcessorFeatureInformation); REPORT_THIS_CASE(HalNumaTopologyInterface); REPORT_THIS_CASE(HalErrorInformation); REPORT_THIS_CASE(HalCmcLogInformation); REPORT_THIS_CASE(HalCpeLogInformation); REPORT_THIS_CASE(HalQueryMcaInterface); case HalQueryAMLIIllegalIOPortAddresses: { ULONG Size = sizeof(HalAMLIBadIOAddressList); NTSTATUS Status = STATUS_INFO_LENGTH_MISMATCH;
if (BufferSize >= Size) { RtlCopyMemory(Buffer, HalAMLIBadIOAddressList, Size); Status = STATUS_SUCCESS; }
*ReturnedLength = Size; KeFlushWriteBuffer(); return Status; }
REPORT_THIS_CASE(HalQueryMaxHotPlugMemoryAddress); REPORT_THIS_CASE(HalPartitionIpiInterface); REPORT_THIS_CASE(HalPlatformInformation); REPORT_THIS_CASE(HalQueryProfileSourceList); REPORT_THIS_CASE(HalInitLogInformation); REPORT_THIS_CASE(HalFrequencyInformation); REPORT_THIS_CASE(HalProcessorBrandString); REPORT_THIS_CASE(HalHypervisorInformation); REPORT_THIS_CASE(HalPlatformTimerInformation); REPORT_THIS_CASE(HalAcpiAuditInformation); }#undef REPORT_THIS_CASE
UNIMPLEMENTED; return STATUS_NOT_IMPLEMENTED;}
NTSTATUSNTAPIHaliSetSystemInformation(IN HAL_SET_INFORMATION_CLASS InformationClass, IN ULONG BufferSize, IN OUT PVOID Buffer){ UNIMPLEMENTED; return STATUS_NOT_IMPLEMENTED;}