ReactOS Fundraising Campaign 2012
 
€ 4,410 / € 30,000

Information | Donate

Home | Info | Community | Development | myReactOS | Contact Us

  1. Home
  2. Community
  3. Development
  4. myReactOS
  5. Fundraiser 2012

  1. Main Page
  2. Alphabetical List
  3. Data Structures
  4. Directories
  5. File List
  6. Data Fields
  7. Globals
  8. Related Pages

ReactOS Development > Doxygen

haltypes.h
Go to the documentation of this file.
00001 /*++ NDK Version: 0098
00002 
00003 Copyright (c) Alex Ionescu.  All rights reserved.
00004 
00005 Header Name:
00006 
00007     haltypes.h
00008 
00009 Abstract:
00010 
00011     Type definitions for the HAL.
00012 
00013 Author:
00014 
00015     Alex Ionescu (alexi@tinykrnl.org) - Updated - 27-Feb-2006
00016 
00017 --*/
00018 
00019 #ifndef _HALTYPES_H
00020 #define _HALTYPES_H
00021 
00022 //
00023 // Dependencies
00024 //
00025 #include <umtypes.h>
00026 
00027 #ifndef NTOS_MODE_USER
00028 
00029 //
00030 // HalShutdownSystem Types
00031 //
00032 typedef enum _FIRMWARE_REENTRY
00033 {
00034     HalHaltRoutine,
00035     HalPowerDownRoutine,
00036     HalRestartRoutine,
00037     HalRebootRoutine,
00038     HalInteractiveModeRoutine,
00039     HalMaximumRoutine
00040 } FIRMWARE_REENTRY, *PFIRMWARE_REENTRY;
00041 
00042 //
00043 // HAL Private function Types
00044 //
00045 typedef
00046 PBUS_HANDLER
00047 (FASTCALL *pHalHandlerForConfigSpace)(
00048     IN BUS_DATA_TYPE ConfigSpace,
00049     IN ULONG BusNumber
00050 );
00051 
00052 typedef
00053 NTSTATUS
00054 (NTAPI *PINSTALL_BUS_HANDLER)(
00055     IN PBUS_HANDLER Bus
00056 );
00057 
00058 typedef
00059 NTSTATUS
00060 (NTAPI *pHalRegisterBusHandler)(
00061     IN INTERFACE_TYPE InterfaceType,
00062     IN BUS_DATA_TYPE ConfigSpace,
00063     IN ULONG BusNumber,
00064     IN INTERFACE_TYPE ParentInterfaceType,
00065     IN ULONG ParentBusNumber,
00066     IN ULONG ContextSize,
00067     IN PINSTALL_BUS_HANDLER InstallCallback,
00068     OUT PBUS_HANDLER *BusHandler
00069 );
00070 
00071 typedef
00072 VOID
00073 (NTAPI *pHalSetWakeEnable)(
00074     IN BOOLEAN Enable
00075 );
00076 
00077 typedef
00078 VOID
00079 (NTAPI *pHalSetWakeAlarm)(
00080     IN ULONGLONG AlartTime,
00081     IN PTIME_FIELDS TimeFields
00082 );
00083 
00084 typedef
00085 VOID
00086 (NTAPI *pHalLocateHiberRanges)(
00087     IN PVOID MemoryMap
00088 );
00089 
00090 typedef
00091 NTSTATUS
00092 (NTAPI *pHalAllocateMapRegisters)(
00093     IN PADAPTER_OBJECT AdapterObject,
00094     IN ULONG Unknown,
00095     IN ULONG Unknown2,
00096     PMAP_REGISTER_ENTRY Registers
00097 );
00098 
00099 //
00100 // HAL Bus Handler Callback Types
00101 //
00102 typedef
00103 NTSTATUS
00104 (NTAPI *PADJUSTRESOURCELIST)(
00105     IN PBUS_HANDLER BusHandler,
00106     IN PBUS_HANDLER RootHandler,
00107     IN OUT PIO_RESOURCE_REQUIREMENTS_LIST *Resources
00108 );
00109 
00110 typedef
00111 NTSTATUS
00112 (NTAPI *PASSIGNSLOTRESOURCES)(
00113     IN PBUS_HANDLER BusHandler,
00114     IN PBUS_HANDLER RootHandler,
00115     IN PUNICODE_STRING RegistryPath,
00116     IN PUNICODE_STRING DriverClassName,
00117     IN PDRIVER_OBJECT DriverObject,
00118     IN PDEVICE_OBJECT DeviceObject,
00119     IN ULONG SlotNumber,
00120     IN OUT PCM_RESOURCE_LIST *AllocatedResources
00121 );
00122 
00123 typedef
00124 ULONG
00125 (NTAPI *PGETSETBUSDATA)(
00126     IN PBUS_HANDLER BusHandler,
00127     IN PBUS_HANDLER RootHandler,
00128     IN ULONG SlotNumber,
00129     OUT PVOID Buffer,
00130     IN ULONG Offset,
00131     IN ULONG Length
00132 );
00133 
00134 typedef
00135 ULONG
00136 (NTAPI *PGETINTERRUPTVECTOR)(
00137     IN PBUS_HANDLER BusHandler,
00138     IN PBUS_HANDLER RootHandler,
00139     IN ULONG BusInterruptLevel,
00140     IN ULONG BusInterruptVector,
00141     OUT PKIRQL Irql,
00142     OUT PKAFFINITY Affinity
00143 );
00144 
00145 typedef
00146 BOOLEAN
00147 (NTAPI *PTRANSLATEBUSADDRESS)(
00148     IN PBUS_HANDLER BusHandler,
00149     IN PBUS_HANDLER RootHandler,
00150     IN PHYSICAL_ADDRESS BusAddress,
00151     IN OUT PULONG AddressSpace,
00152     OUT PPHYSICAL_ADDRESS TranslatedAddress
00153 );
00154 
00155 //
00156 // Hal Private dispatch Table
00157 //
00158 #define HAL_PRIVATE_DISPATCH_VERSION        2
00159 typedef struct _HAL_PRIVATE_DISPATCH
00160 {
00161     ULONG Version;
00162     pHalHandlerForBus HalHandlerForBus;
00163     pHalHandlerForConfigSpace HalHandlerForConfigSpace;
00164     pHalLocateHiberRanges HalLocateHiberRanges;
00165     pHalRegisterBusHandler HalRegisterBusHandler;
00166     pHalSetWakeEnable HalSetWakeEnable;
00167     pHalSetWakeAlarm HalSetWakeAlarm;
00168     pHalTranslateBusAddress HalPciTranslateBusAddress;
00169     pHalAssignSlotResources HalPciAssignSlotResources;
00170     pHalHaltSystem HalHaltSystem;
00171     pHalFindBusAddressTranslation HalFindBusAddressTranslation;
00172     pHalResetDisplay HalResetDisplay;
00173     pHalAllocateMapRegisters HalAllocateMapRegisters;
00174     pKdSetupPciDeviceForDebugging KdSetupPciDeviceForDebugging;
00175     pKdReleasePciDeviceForDebugging KdReleasePciDeviceforDebugging;
00176     pKdGetAcpiTablePhase0 KdGetAcpiTablePhase0;
00177     pKdCheckPowerButton KdCheckPowerButton;
00178     pHalVectorToIDTEntry HalVectorToIDTEntry;
00179     pKdMapPhysicalMemory64 KdMapPhysicalMemory64;
00180     pKdUnmapVirtualAddress KdUnmapVirtualAddress;
00181 #if (NTDDI_VERSION >= NTDDI_LONGHORN)
00182     pKdGetPciDataByOffset KdGetPciDataByOffset;
00183     pKdSetPciDataByOffset KdSetPciDataByOffset;
00184     PVOID HalGetInterruptVectorOverride;
00185     PVOID HalGetVectorInputOverride;
00186 #endif
00187 } HAL_PRIVATE_DISPATCH, *PHAL_PRIVATE_DISPATCH;
00188 
00189 //
00190 // HAL Supported Range
00191 //
00192 #define HAL_SUPPORTED_RANGE_VERSION 1
00193 typedef struct _SUPPORTED_RANGE
00194 {
00195     struct _SUPPORTED_RANGE *Next;
00196     ULONG SystemAddressSpace;
00197     LONGLONG SystemBase;
00198     LONGLONG Base;
00199     LONGLONG Limit;
00200 } SUPPORTED_RANGE, *PSUPPORTED_RANGE;
00201 
00202 typedef struct _SUPPORTED_RANGES 
00203 {
00204     USHORT Version;
00205     BOOLEAN Sorted;
00206     UCHAR Reserved;
00207     ULONG NoIO;
00208     SUPPORTED_RANGE IO;
00209     ULONG NoMemory;
00210     SUPPORTED_RANGE Memory;
00211     ULONG NoPrefetchMemory;
00212     SUPPORTED_RANGE PrefetchMemory;
00213     ULONG NoDma;
00214     SUPPORTED_RANGE Dma;
00215 } SUPPORTED_RANGES, *PSUPPORTED_RANGES;
00216 
00217 //
00218 // HAL Bus Handler
00219 //
00220 #define HAL_BUS_HANDLER_VERSION 1
00221 typedef struct _BUS_HANDLER
00222 {
00223     ULONG Version;
00224     INTERFACE_TYPE InterfaceType;
00225     BUS_DATA_TYPE ConfigurationType;
00226     ULONG BusNumber;
00227     PDEVICE_OBJECT DeviceObject;
00228     struct _BUS_HANDLER *ParentHandler;
00229     PVOID BusData;
00230     ULONG DeviceControlExtensionSize;
00231     PSUPPORTED_RANGES BusAddresses;
00232     ULONG Reserved[4];
00233     PGETSETBUSDATA GetBusData;
00234     PGETSETBUSDATA SetBusData;
00235     PADJUSTRESOURCELIST AdjustResourceList;
00236     PASSIGNSLOTRESOURCES AssignSlotResources;
00237     PGETINTERRUPTVECTOR GetInterruptVector;
00238     PTRANSLATEBUSADDRESS TranslateBusAddress;
00239     PVOID Spare1;
00240     PVOID Spare2;
00241     PVOID Spare3;
00242     PVOID Spare4;
00243     PVOID Spare5;
00244     PVOID Spare6;
00245     PVOID Spare7;
00246     PVOID Spare8;
00247 } BUS_HANDLER;
00248 
00249 //
00250 // HAL Chip Hacks
00251 //
00252 #define HAL_PCI_CHIP_HACK_BROKEN_ACPI_TIMER        0x01
00253 #define HAL_PCI_CHIP_HACK_DISABLE_HIBERNATE        0x02
00254 #define HAL_PCI_CHIP_HACK_DISABLE_ACPI_IRQ_ROUTING 0x04
00255 #define HAL_PCI_CHIP_HACK_USB_SMI_DISABLE          0x08
00256 
00257 //
00258 // Kernel Exports
00259 //
00260 #if (defined(_NTDRIVER_) || defined(_NTHAL_)) && !defined(_BLDR_)
00261 extern NTSYSAPI PHAL_PRIVATE_DISPATCH HalPrivateDispatchTable;
00262 #define HALPRIVATEDISPATCH ((PHAL_PRIVATE_DISPATCH)&HalPrivateDispatchTable)
00263 #else
00264 extern NTSYSAPI HAL_PRIVATE_DISPATCH HalPrivateDispatchTable;
00265 #define HALPRIVATEDISPATCH (&HalPrivateDispatchTable)
00266 #endif
00267 
00268 //
00269 // HAL Exports
00270 //
00271 extern PUCHAR NTHALAPI KdComPortInUse;
00272 
00273 //
00274 // HAL Constants
00275 //
00276 #define HAL_IRQ_TRANSLATOR_VERSION 0x0
00277 
00278 #endif
00279 #endif
00280 
00281 
00282 

Generated on Sun May 27 2012 04:30:51 for ReactOS by doxygen 1.7.6.1

ReactOS is a registered trademark or a trademark of ReactOS Foundation in the United States and other countries.