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

hal.h
Go to the documentation of this file.
00001 /*
00002  * PROJECT:         ReactOS Kernel
00003  * LICENSE:         GPL - See COPYING in the top level directory
00004  * FILE:            ntoskrnl/include/hal.h
00005  * PURPOSE:         Internal header for the I/O HAL Functions (Fstub)
00006  * PROGRAMMERS:     Alex Ionescu (alex.ionescu@reactos.org)
00007  *                  Pierre Schweitzer (pierre.schweitzer@reactos.org)
00008  */
00009 
00010 #pragma once
00011 
00012 //
00013 // Default implementations of HAL dispatch table
00014 //
00015 VOID
00016 FASTCALL
00017 xHalExamineMBR(IN PDEVICE_OBJECT DeviceObject,
00018                IN ULONG SectorSize,
00019                IN ULONG MbrTypeIdentifier,
00020                OUT PVOID *MbrBuffer);
00021 
00022 VOID
00023 FASTCALL
00024 xHalIoAssignDriveLetters(IN PLOADER_PARAMETER_BLOCK LoaderBlock,
00025                          IN PSTRING NtDeviceName,
00026                          OUT PUCHAR NtSystemPath,
00027                          OUT PSTRING NtSystemPathString);
00028 
00029 NTSTATUS
00030 FASTCALL
00031 xHalIoReadPartitionTable(IN PDEVICE_OBJECT DeviceObject,
00032                          IN ULONG SectorSize,
00033                          IN BOOLEAN ReturnRecognizedPartitions,
00034                          IN OUT PDRIVE_LAYOUT_INFORMATION *PartitionBuffer);
00035 
00036 NTSTATUS
00037 FASTCALL
00038 xHalIoSetPartitionInformation(IN PDEVICE_OBJECT DeviceObject,
00039                               IN ULONG SectorSize,
00040                               IN ULONG PartitionNumber,
00041                               IN ULONG PartitionType);
00042 
00043 NTSTATUS
00044 FASTCALL
00045 xHalIoWritePartitionTable(IN PDEVICE_OBJECT DeviceObject,
00046                           IN ULONG SectorSize,
00047                           IN ULONG SectorsPerTrack,
00048                           IN ULONG NumberOfHeads,
00049                           IN PDRIVE_LAYOUT_INFORMATION PartitionBuffer);
00050 
00051 VOID
00052 NTAPI
00053 xHalHaltSystem(
00054     VOID
00055 );
00056 
00057 VOID
00058 NTAPI
00059 xHalEndOfBoot(
00060     VOID
00061 );
00062 
00063 VOID
00064 NTAPI
00065 xHalSetWakeEnable(
00066     IN BOOLEAN Enable
00067 );
00068 
00069 UCHAR
00070 NTAPI
00071 xHalVectorToIDTEntry(
00072     IN ULONG Vector
00073 );
00074 
00075 NTSTATUS
00076 NTAPI
00077 xHalGetInterruptTranslator(
00078     IN INTERFACE_TYPE ParentInterfaceType,
00079     IN ULONG ParentBusNumber,
00080     IN INTERFACE_TYPE BridgeInterfaceType,
00081     IN USHORT Size,
00082     IN USHORT Version,
00083     OUT PTRANSLATOR_INTERFACE Translator,
00084     OUT PULONG BridgeBusNumber
00085 );
00086 
00087 PBUS_HANDLER
00088 FASTCALL
00089 xHalHandlerForBus(
00090     IN INTERFACE_TYPE InterfaceType,
00091     IN ULONG BusNumber
00092 );
00093 
00094 VOID
00095 FASTCALL
00096 xHalReferenceHandler(
00097     IN PBUS_HANDLER BusHandler
00098 );
00099 
00100 NTSTATUS
00101 NTAPI
00102 xHalInitPnpDriver(
00103     VOID
00104 );
00105 
00106 NTSTATUS
00107 NTAPI
00108 xHalInitPowerManagement(
00109     IN PPM_DISPATCH_TABLE PmDriverDispatchTable,
00110     OUT PPM_DISPATCH_TABLE *PmHalDispatchTable
00111 );
00112 
00113 NTSTATUS
00114 NTAPI
00115 xHalStartMirroring(
00116     VOID
00117 );
00118 
00119 NTSTATUS
00120 NTAPI
00121 xHalEndMirroring(
00122     IN ULONG PassNumber
00123 );
00124 
00125 NTSTATUS
00126 NTAPI
00127 xHalMirrorPhysicalMemory(
00128     IN PHYSICAL_ADDRESS PhysicalAddress,
00129     IN LARGE_INTEGER NumberOfBytes
00130 );
00131 
00132 NTSTATUS
00133 NTAPI
00134 xHalQueryBusSlots(
00135     IN PBUS_HANDLER BusHandler,
00136     IN ULONG BufferSize,
00137     OUT PULONG SlotNumbers,
00138     OUT PULONG ReturnedLength
00139 );
00140 
00141 NTSTATUS
00142 NTAPI
00143 xHalSetSystemInformation(
00144     IN HAL_SET_INFORMATION_CLASS InformationClass,
00145     IN ULONG BufferSize,
00146     IN PVOID Buffer
00147 );
00148 
00149 NTSTATUS
00150 NTAPI
00151 xHalQuerySystemInformation(
00152     IN HAL_QUERY_INFORMATION_CLASS InformationClass,
00153     IN ULONG BufferSize,
00154     IN OUT PVOID Buffer,
00155     OUT PULONG ReturnedLength
00156 );
00157 
00158 VOID
00159 NTAPI
00160 xHalLocateHiberRanges(
00161     IN PVOID MemoryMap
00162 );
00163 
00164 NTSTATUS
00165 NTAPI
00166 xHalRegisterBusHandler(
00167     IN INTERFACE_TYPE InterfaceType,
00168     IN BUS_DATA_TYPE ConfigSpace,
00169     IN ULONG BusNumber,
00170     IN INTERFACE_TYPE ParentInterfaceType,
00171     IN ULONG ParentBusNumber,
00172     IN ULONG ContextSize,
00173     IN PINSTALL_BUS_HANDLER InstallCallback,
00174     OUT PBUS_HANDLER *BusHandler
00175 );
00176 
00177 VOID
00178 NTAPI
00179 xHalSetWakeAlarm(
00180     IN ULONGLONG AlartTime,
00181     IN PTIME_FIELDS TimeFields
00182 );
00183 
00184 BOOLEAN
00185 NTAPI
00186 xHalTranslateBusAddress(
00187     IN INTERFACE_TYPE InterfaceType,
00188     IN ULONG BusNumber,
00189     IN PHYSICAL_ADDRESS BusAddress,
00190     IN OUT PULONG AddressSpace,
00191     OUT PPHYSICAL_ADDRESS TranslatedAddress
00192 );
00193 
00194 NTSTATUS
00195 NTAPI
00196 xHalAllocateMapRegisters(
00197     IN PADAPTER_OBJECT AdapterObject,
00198     IN ULONG Unknown,
00199     IN ULONG Unknown2,
00200     PMAP_REGISTER_ENTRY Registers
00201 );
00202 
00203 NTSTATUS
00204 NTAPI
00205 xKdSetupPciDeviceForDebugging(
00206     IN PVOID LoaderBlock OPTIONAL,
00207     IN OUT PDEBUG_DEVICE_DESCRIPTOR PciDevice
00208 );
00209 
00210 NTSTATUS
00211 NTAPI
00212 xKdReleasePciDeviceForDebugging(
00213     IN OUT PDEBUG_DEVICE_DESCRIPTOR PciDevice
00214 );
00215 
00216 PVOID
00217 NTAPI
00218 xKdGetAcpiTablePhase(
00219     IN struct _LOADER_PARAMETER_BLOCK *LoaderBlock,
00220     IN ULONG Signature
00221 );
00222 
00223 PVOID
00224 NTAPI
00225 MatchAll(
00226     IN PHYSICAL_ADDRESS PhysicalAddress,
00227     IN ULONG NumberPages,
00228     IN BOOLEAN FlushCurrentTLB
00229 );
00230 
00231 VOID
00232 NTAPI
00233 xKdUnmapVirtualAddress(
00234     IN PVOID VirtualAddress,
00235     IN ULONG NumberPages,
00236     IN BOOLEAN FlushCurrentTLB
00237 );
00238 
00239 
00240 //
00241 // Various offsets in the boot record
00242 //
00243 #define PARTITION_TABLE_OFFSET                      (0x1BE / 2)
00244 #define BOOT_SIGNATURE_OFFSET                       ((0x200 / 2) - 1)
00245 #define BOOT_RECORD_RESERVED                        0x1BC
00246 #define BOOT_RECORD_SIGNATURE                       0xAA55
00247 #define NUM_PARTITION_TABLE_ENTRIES                 4
00248 
00249 //
00250 // Helper Macros
00251 //
00252 #define GET_STARTING_SECTOR(p)                      \
00253     ((ULONG)(p->StartingSectorLsb0) +               \
00254      (ULONG)(p->StartingSectorLsb1 << 8 ) +         \
00255      (ULONG)(p->StartingSectorMsb0 << 16) +         \
00256      (ULONG)(p->StartingSectorMsb1 << 24))
00257 
00258 #define GET_ENDING_S_OF_CHS(p)                      \
00259     ((UCHAR)(p->EndingCylinderLsb & 0x3F))
00260 
00261 #define GET_PARTITION_LENGTH(p)                     \
00262     ((ULONG)(p->PartitionLengthLsb0) +              \
00263      (ULONG)(p->PartitionLengthLsb1 << 8) +         \
00264      (ULONG)(p->PartitionLengthMsb0 << 16) +        \
00265      (ULONG)(p->PartitionLengthMsb1 << 24))
00266 
00267 #define SET_PARTITION_LENGTH(p, l)                  \
00268     p->PartitionLengthLsb0 = l & 0xFF;              \
00269     p->PartitionLengthLsb1 = (l >> 8) & 0xFF;       \
00270     p->PartitionLengthMsb0 = (l >> 16) & 0xFF;      \
00271     p->PartitionLengthMsb1 = (l >> 24) & 0xFF
00272 
00273 //
00274 // Structure describing a partition
00275 //
00276 typedef struct _PARTITION_DESCRIPTOR
00277 {
00278     UCHAR ActiveFlag;
00279     UCHAR StartingTrack;
00280     UCHAR StartingCylinderLsb;
00281     UCHAR StartingCylinderMsb;
00282     UCHAR PartitionType;
00283     UCHAR EndingTrack;
00284     UCHAR EndingCylinderLsb;
00285     UCHAR EndingCylinderMsb;
00286     UCHAR StartingSectorLsb0;
00287     UCHAR StartingSectorLsb1;
00288     UCHAR StartingSectorMsb0;
00289     UCHAR StartingSectorMsb1;
00290     UCHAR PartitionLengthLsb0;
00291     UCHAR PartitionLengthLsb1;
00292     UCHAR PartitionLengthMsb0;
00293     UCHAR PartitionLengthMsb1;
00294 } PARTITION_DESCRIPTOR, *PPARTITION_DESCRIPTOR;
00295 
00296 //
00297 // Structure describing a boot sector
00298 //
00299 typedef struct _BOOT_SECTOR_INFO
00300 {
00301     UCHAR JumpByte[1];
00302     UCHAR Ignore1[2];
00303     UCHAR OemData[8];
00304     UCHAR BytesPerSector[2];
00305     UCHAR Ignore2[6];
00306     UCHAR NumberOfSectors[2];
00307     UCHAR MediaByte[1];
00308     UCHAR Ignore3[2];
00309     UCHAR SectorsPerTrack[2];
00310     UCHAR NumberOfHeads[2];
00311 } BOOT_SECTOR_INFO, *PBOOT_SECTOR_INFO;
00312 
00313 //
00314 // Partition Table and Disk Layout
00315 //
00316 typedef struct _PARTITION_TABLE
00317 {
00318     PARTITION_INFORMATION PartitionEntry[4];
00319 } PARTITION_TABLE, *PPARTITION_TABLE;
00320 
00321 typedef struct _DISK_LAYOUT
00322 {
00323     ULONG TableCount;
00324     ULONG Signature;
00325     PARTITION_TABLE PartitionTable[1];
00326 } DISK_LAYOUT, *PDISK_LAYOUT;
00327 
00328 //
00329 // Partition Table Entry
00330 //
00331 typedef struct _PTE
00332 {
00333     UCHAR ActiveFlag;
00334     UCHAR StartingTrack;
00335     USHORT StartingCylinder;
00336     UCHAR PartitionType;
00337     UCHAR EndingTrack;
00338     USHORT EndingCylinder;
00339     ULONG StartingSector;
00340     ULONG PartitionLength;
00341 } PTE, *PPTE;

Generated on Sat May 26 2012 04:27:17 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.