diff -r da7c1a80df0d -r d2d6724aef32 holdingarea/llvm/llvm-gcc4.2-2.7-x86-mingw32/include/ddk/winnt4.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/holdingarea/llvm/llvm-gcc4.2-2.7-x86-mingw32/include/ddk/winnt4.h Thu Sep 16 09:43:14 2010 +0100 @@ -0,0 +1,623 @@ +/* + * winnt4.h + * + * Definitions only used in Windows NT 4.0 and earlier versions + * + * This file is part of the w32api package. + * + * Contributors: + * Created by Casper S. Hornstrup + * + * THIS SOFTWARE IS NOT COPYRIGHTED + * + * This source code is offered for use in the public domain. You may + * use, modify or distribute it freely. + * + * This code is distributed in the hope that it will be useful but + * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY + * DISCLAIMED. This includes but is not limited to warranties of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * + */ + +#ifndef __WINNT4_H +#define __WINNT4_H + +#if __GNUC__ >=3 +#pragma GCC system_header +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct _ZONE_SEGMENT_HEADER { + SINGLE_LIST_ENTRY SegmentList; + PVOID Reserved; +} ZONE_SEGMENT_HEADER, *PZONE_SEGMENT_HEADER; + +typedef struct _ZONE_HEADER { + SINGLE_LIST_ENTRY FreeList; + SINGLE_LIST_ENTRY SegmentList; + ULONG BlockSize; + ULONG TotalSegmentSize; +} ZONE_HEADER, *PZONE_HEADER; + +static __inline PVOID +ExAllocateFromZone( + /*IN*/ PZONE_HEADER Zone) +{ + if (Zone->FreeList.Next) + Zone->FreeList.Next = Zone->FreeList.Next->Next; + return (PVOID) Zone->FreeList.Next; +} + +NTOSAPI +NTSTATUS +DDKAPI +ExExtendZone( + /*IN*/ PZONE_HEADER Zone, + /*IN*/ PVOID Segment, + /*IN*/ ULONG SegmentSize); + +static __inline PVOID +ExFreeToZone( + /*IN*/ PZONE_HEADER Zone, + /*IN*/ PVOID Block) +{ + ((PSINGLE_LIST_ENTRY) Block)->Next = Zone->FreeList.Next; + Zone->FreeList.Next = ((PSINGLE_LIST_ENTRY) Block); + return ((PSINGLE_LIST_ENTRY) Block)->Next; +} + +NTOSAPI +NTSTATUS +DDKAPI +ExInitializeZone( + /*IN*/ PZONE_HEADER Zone, + /*IN*/ ULONG BlockSize, + /*IN*/ PVOID InitialSegment, + /*IN*/ ULONG InitialSegmentSize); + +/* + * PVOID + * ExInterlockedAllocateFromZone( + * IN PZONE_HEADER Zone, + * IN PKSPIN_LOCK Lock) + */ +#define ExInterlockedAllocateFromZone(Zone, \ + Lock) \ + ((PVOID) ExInterlockedPopEntryList(&Zone->FreeList, Lock)) + +NTOSAPI +NTSTATUS +DDKAPI +ExInterlockedExtendZone( + /*IN*/ PZONE_HEADER Zone, + /*IN*/ PVOID Segment, + /*IN*/ ULONG SegmentSize, + /*IN*/ PKSPIN_LOCK Lock); + +NTOSAPI +PVOID +DDKAPI +ExInterlockedFreeToZone( + /*IN*/ PZONE_HEADER Zone, + /*IN*/ PVOID Block, + /*IN*/ PKSPIN_LOCK Lock); + +/* + * VOID + * ExInitializeWorkItem( + * IN PWORK_QUEUE_ITEM Item, + * IN PWORKER_THREAD_ROUTINE Routine, + * IN PVOID Context) + */ +#define ExInitializeWorkItem(Item, \ + Routine, \ + Context) \ +{ \ + (Item)->WorkerRoutine = Routine; \ + (Item)->Parameter = Context; \ + (Item)->List.Flink = NULL; \ +} + +/* + * BOOLEAN + * ExIsFullZone( + * IN PZONE_HEADER Zone) + */ +#define ExIsFullZone(Zone) \ + ((Zone)->FreeList.Next == (PSINGLE_LIST_ENTRY) NULL) + +NTOSAPI +VOID +DDKAPI +ExQueueWorkItem( + /*IN*/ PWORK_QUEUE_ITEM WorkItem, + /*IN*/ WORK_QUEUE_TYPE QueueType); + +NTOSAPI +BOOLEAN +DDKAPI +ExIsObjectInFirstZoneSegment( + /*IN*/ PZONE_HEADER Zone, + /*IN*/ PVOID Object); + +NTOSAPI +VOID +DDKAPI +ExReleaseResource( + /*IN*/ PERESOURCE Resource); + +#define ExAcquireResourceExclusive ExAcquireResourceExclusiveLite +#define ExAcquireResourceShared ExAcquireResourceSharedLite +#define ExConvertExclusiveToShared ExConvertExclusiveToSharedLite +#define ExDeleteResource ExDeleteResourceLite +#define ExInitializeResource ExInitializeResourceLite +#define ExIsResourceAcquiredExclusive ExIsResourceAcquiredExclusiveLite +#define ExIsResourceAcquiredShared ExIsResourceAcquiredSharedLite +#define ExIsResourceAcquired ExIsResourceAcquiredSharedLite +#define ExReleaseResourceForThread ExReleaseResourceForThreadLite + +NTOSAPI +INTERLOCKED_RESULT +DDKAPI +ExInterlockedDecrementLong( + /*IN*/ PLONG Addend, + /*IN*/ PKSPIN_LOCK Lock); + +NTOSAPI +ULONG +DDKAPI +ExInterlockedExchangeUlong( + /*IN*/ PULONG Target, + /*IN*/ ULONG Value, + /*IN*/ PKSPIN_LOCK Lock); + +NTOSAPI +INTERLOCKED_RESULT +DDKAPI +ExInterlockedIncrementLong( + /*IN*/ PLONG Addend, + /*IN*/ PKSPIN_LOCK Lock); + +NTOSAPI +PVOID +DDKAPI +HalAllocateCommonBuffer( + /*IN*/ PADAPTER_OBJECT AdapterObject, + /*IN*/ ULONG Length, + /*OUT*/ PPHYSICAL_ADDRESS LogicalAddress, + /*IN*/ BOOLEAN CacheEnabled); + +NTOSAPI +NTSTATUS +DDKAPI +HalAssignSlotResources( + /*IN*/ PUNICODE_STRING RegistryPath, + /*IN*/ PUNICODE_STRING DriverClassName, + /*IN*/ PDRIVER_OBJECT DriverObject, + /*IN*/ PDEVICE_OBJECT DeviceObject, + /*IN*/ INTERFACE_TYPE BusType, + /*IN*/ ULONG BusNumber, + /*IN*/ ULONG SlotNumber, + /*IN OUT*/ PCM_RESOURCE_LIST *AllocatedResources); + +NTOSAPI +VOID +DDKAPI +HalFreeCommonBuffer( + /*IN*/ PADAPTER_OBJECT AdapterObject, + /*IN*/ ULONG Length, + /*IN*/ PHYSICAL_ADDRESS LogicalAddress, + /*IN*/ PVOID VirtualAddress, + /*IN*/ BOOLEAN CacheEnabled); + +NTOSAPI +PADAPTER_OBJECT +DDKAPI +HalGetAdapter( + /*IN*/ PDEVICE_DESCRIPTION DeviceDescription, + /*IN OUT*/ PULONG NumberOfMapRegisters); + +NTOSAPI +ULONG +DDKAPI +HalGetBusData( + /*IN*/ BUS_DATA_TYPE BusDataType, + /*IN*/ ULONG BusNumber, + /*IN*/ ULONG SlotNumber, + /*IN*/ PVOID Buffer, + /*IN*/ ULONG Length); + +NTOSAPI +ULONG +DDKAPI +HalGetBusDataByOffset( + /*IN*/ BUS_DATA_TYPE BusDataType, + /*IN*/ ULONG BusNumber, + /*IN*/ ULONG SlotNumber, + /*IN*/ PVOID Buffer, + /*IN*/ ULONG Offset, + /*IN*/ ULONG Length); + +NTOSAPI +ULONG +DDKAPI +HalGetDmaAlignmentRequirement( + VOID); + +NTOSAPI +ULONG +DDKAPI +HalGetInterruptVector( + /*IN*/ INTERFACE_TYPE InterfaceType, + /*IN*/ ULONG BusNumber, + /*IN*/ ULONG BusInterruptLevel, + /*IN*/ ULONG BusInterruptVector, + /*OUT*/ PKIRQL Irql, + /*OUT*/ PKAFFINITY Affinity); + +NTOSAPI +ULONG +DDKAPI +HalReadDmaCounter( + /*IN*/ PADAPTER_OBJECT AdapterObject); + +NTOSAPI +ULONG +DDKAPI +HalSetBusData( + /*IN*/ BUS_DATA_TYPE BusDataType, + /*IN*/ ULONG BusNumber, + /*IN*/ ULONG SlotNumber, + /*IN*/ PVOID Buffer, + /*IN*/ ULONG Length); + +NTOSAPI +ULONG +DDKAPI +HalSetBusDataByOffset( + /*IN*/ BUS_DATA_TYPE BusDataType, + /*IN*/ ULONG BusNumber, + /*IN*/ ULONG SlotNumber, + /*IN*/ PVOID Buffer, + /*IN*/ ULONG Offset, + /*IN*/ ULONG Length); + +NTOSAPI +BOOLEAN +DDKAPI +HalTranslateBusAddress( + /*IN*/ INTERFACE_TYPE InterfaceType, + /*IN*/ ULONG BusNumber, + /*IN*/ PHYSICAL_ADDRESS BusAddress, + /*IN OUT*/ PULONG AddressSpace, + /*OUT*/ PPHYSICAL_ADDRESS TranslatedAddress); + +NTOSAPI +NTSTATUS +DDKAPI +IoAllocateAdapterChannel( + /*IN*/ PADAPTER_OBJECT AdapterObject, + /*IN*/ PDEVICE_OBJECT DeviceObject, + /*IN*/ ULONG NumberOfMapRegisters, + /*IN*/ PDRIVER_CONTROL ExecutionRoutine, + /*IN*/ PVOID Context); + +NTOSAPI +NTSTATUS +DDKAPI +IoAssignResources( + /*IN*/ PUNICODE_STRING RegistryPath, + /*IN*/ PUNICODE_STRING DriverClassName /*OPTIONAL*/, + /*IN*/ PDRIVER_OBJECT DriverObject, + /*IN*/ PDEVICE_OBJECT DeviceObject /*OPTIONAL*/, + /*IN*/ PIO_RESOURCE_REQUIREMENTS_LIST RequestedResources, + /*IN OUT*/ PCM_RESOURCE_LIST *AllocatedResources); + +NTOSAPI +NTSTATUS +DDKAPI +IoAttachDeviceByPointer( + /*IN*/ PDEVICE_OBJECT SourceDevice, + /*IN*/ PDEVICE_OBJECT TargetDevice); + +NTOSAPI +BOOLEAN +DDKAPI +IoFlushAdapterBuffers( + /*IN*/ PADAPTER_OBJECT AdapterObject, + /*IN*/ PMDL Mdl, + /*IN*/ PVOID MapRegisterBase, + /*IN*/ PVOID CurrentVa, + /*IN*/ ULONG Length, + /*IN*/ BOOLEAN WriteToDevice); + +NTOSAPI +VOID +DDKAPI +IoFreeAdapterChannel( + /*IN*/ PADAPTER_OBJECT AdapterObject); + +NTOSAPI +VOID +DDKAPI +IoFreeMapRegisters( + /*IN*/ PADAPTER_OBJECT AdapterObject, + /*IN*/ PVOID MapRegisterBase, + /*IN*/ ULONG NumberOfMapRegisters); + +NTOSAPI +PHYSICAL_ADDRESS +DDKAPI +IoMapTransfer( + /*IN*/ PADAPTER_OBJECT AdapterObject, + /*IN*/ PMDL Mdl, + /*IN*/ PVOID MapRegisterBase, + /*IN*/ PVOID CurrentVa, + /*IN OUT*/ PULONG Length, + /*IN*/ BOOLEAN WriteToDevice); + +NTOSAPI +PMDL +DDKAPI +MmCreateMdl( + /*IN*/ PMDL MemoryDescriptorList /*OPTIONAL*/, + /*IN*/ PVOID Base, + /*IN*/ SIZE_T Length); + +NTOSAPI +BOOLEAN +DDKAPI +MmIsNonPagedSystemAddressValid( + /*IN*/ PVOID VirtualAddress); + +NTOSAPI +LARGE_INTEGER +DDKAPI +RtlEnlargedIntegerMultiply( + /*IN*/ LONG Multiplicand, + /*IN*/ LONG Multiplier); + +NTOSAPI +ULONG +DDKAPI +RtlEnlargedUnsignedDivide( + /*IN*/ ULARGE_INTEGER Dividend, + /*IN*/ ULONG Divisor, + /*IN OUT*/ PULONG Remainder); + +NTOSAPI +LARGE_INTEGER +DDKAPI +RtlEnlargedUnsignedMultiply( + /*IN*/ ULONG Multiplicand, + /*IN*/ ULONG Multiplier); + +NTOSAPI +LARGE_INTEGER +DDKAPI +RtlExtendedIntegerMultiply( + /*IN*/ LARGE_INTEGER Multiplicand, + /*IN*/ LONG Multiplier); + +NTOSAPI +LARGE_INTEGER +DDKAPI +RtlExtendedLargeIntegerDivide( + /*IN*/ LARGE_INTEGER Dividend, + /*IN*/ ULONG Divisor, + /*IN OUT*/ PULONG Remainder); + +NTOSAPI +LARGE_INTEGER +DDKAPI +RtlExtendedMagicDivide( + /*IN*/ LARGE_INTEGER Dividend, + /*IN*/ LARGE_INTEGER MagicDivisor, + /*IN*/ CCHAR ShiftCount); + +NTOSAPI +LARGE_INTEGER +DDKAPI +RtlLargeIntegerAdd( + /*IN*/ LARGE_INTEGER Addend1, + /*IN*/ LARGE_INTEGER Addend2); + +NTOSAPI +VOID +DDKAPI +RtlLargeIntegerAnd( + /*IN OUT*/ LARGE_INTEGER Result, + /*IN*/ LARGE_INTEGER Source, + /*IN*/ LARGE_INTEGER Mask); + +NTOSAPI +LARGE_INTEGER +DDKAPI +RtlLargeIntegerArithmeticShift( + /*IN*/ LARGE_INTEGER LargeInteger, + /*IN*/ CCHAR ShiftCount); + +NTOSAPI +LARGE_INTEGER +DDKAPI +RtlLargeIntegerDivide( + /*IN*/ LARGE_INTEGER Dividend, + /*IN*/ LARGE_INTEGER Divisor, + /*IN OUT*/ PLARGE_INTEGER Remainder); + +NTOSAPI +BOOLEAN +DDKAPI +RtlLargeIntegerEqualTo( + /*IN*/ LARGE_INTEGER Operand1, + /*IN*/ LARGE_INTEGER Operand2); + +NTOSAPI +BOOLEAN +DDKAPI +RtlLargeIntegerEqualToZero( + /*IN*/ LARGE_INTEGER Operand); + +NTOSAPI +BOOLEAN +DDKAPI +RtlLargeIntegerGreaterOrEqualToZero( + /*IN*/ LARGE_INTEGER Operand); + +NTOSAPI +BOOLEAN +DDKAPI +RtlLargeIntegerGreaterThan( + /*IN*/ LARGE_INTEGER Operand1, + /*IN*/ LARGE_INTEGER Operand2); + +NTOSAPI +BOOLEAN +DDKAPI +RtlLargeIntegerGreaterThanOrEqualTo( + /*IN*/ LARGE_INTEGER Operand1, + /*IN*/ LARGE_INTEGER Operand2); + +NTOSAPI +BOOLEAN +DDKAPI +RtlLargeIntegerGreaterThanZero( + /*IN*/ LARGE_INTEGER Operand); + +NTOSAPI +BOOLEAN +DDKAPI +RtlLargeIntegerLessOrEqualToZero( + /*IN*/ LARGE_INTEGER Operand); + +NTOSAPI +BOOLEAN +DDKAPI +RtlLargeIntegerLessThan( + /*IN*/ LARGE_INTEGER Operand1, + /*IN*/ LARGE_INTEGER Operand2); + +NTOSAPI +BOOLEAN +DDKAPI +RtlLargeIntegerLessThanOrEqualTo( + /*IN*/ LARGE_INTEGER Operand1, + /*IN*/ LARGE_INTEGER Operand2); + +NTOSAPI +BOOLEAN +DDKAPI +RtlLargeIntegerLessThanZero( + /*IN*/ LARGE_INTEGER Operand); + +NTOSAPI +LARGE_INTEGER +DDKAPI +RtlLargeIntegerNegate( + /*IN*/ LARGE_INTEGER Subtrahend); + +NTOSAPI +BOOLEAN +DDKAPI +RtlLargeIntegerNotEqualTo( + /*IN*/ LARGE_INTEGER Operand1, + /*IN*/ LARGE_INTEGER Operand2); + +NTOSAPI +BOOLEAN +DDKAPI +RtlLargeIntegerNotEqualToZero( + /*IN*/ LARGE_INTEGER Operand); + +NTOSAPI +LARGE_INTEGER +DDKAPI +RtlLargeIntegerShiftLeft( + /*IN*/ LARGE_INTEGER LargeInteger, + /*IN*/ CCHAR ShiftCount); + +NTOSAPI +LARGE_INTEGER +DDKAPI +RtlLargeIntegerShiftRight( + /*IN*/ LARGE_INTEGER LargeInteger, + /*IN*/ CCHAR ShiftCount); + +NTOSAPI +LARGE_INTEGER +DDKAPI +RtlLargeIntegerSubtract( + /*IN*/ LARGE_INTEGER Minuend, + /*IN*/ LARGE_INTEGER Subtrahend); + + +/* + * ULONG + * COMPUTE_PAGES_SPANNED( + * IN PVOID Va, + * IN ULONG Size) + */ +#define COMPUTE_PAGES_SPANNED(Va, \ + Size) \ + (ADDRESS_AND_SIZE_TO_SPAN_PAGES(Va, Size)) + + +/* +** Architecture specific functions +*/ + +#ifdef _X86_ + +NTOSAPI +INTERLOCKED_RESULT +DDKAPI +Exi386InterlockedIncrementLong( + /*IN*/ PLONG Addend); + +NTOSAPI +INTERLOCKED_RESULT +DDKFASTAPI +Exfi386InterlockedIncrementLong( + /*IN*/ PLONG Addend); + +NTOSAPI +INTERLOCKED_RESULT +DDKAPI +Exi386InterlockedDecrementLong( + /*IN*/ PLONG Addend); + +NTOSAPI +INTERLOCKED_RESULT +DDKFASTAPI +Exfi386InterlockedDecrementLong( + /*IN*/ PLONG Addend); + +NTOSAPI +ULONG +DDKAPI +Exi386InterlockedExchangeUlong( + /*IN*/ PULONG Target, + /*IN*/ ULONG Value); + +NTOSAPI +ULONG +DDKFASTAPI +Exfi386InterlockedExchangeUlong( + /*IN*/ PULONG Target, + /*IN*/ ULONG Value); + +#define ExInterlockedIncrementLong(Addend,Lock) Exfi386InterlockedIncrementLong(Addend) +#define ExInterlockedDecrementLong(Addend,Lock) Exfi386InterlockedDecrementLong(Addend) +#define ExInterlockedExchangeUlong(Target, Value, Lock) Exfi386InterlockedExchangeUlong(Target, Value) + +#endif /* _X86_ */ + +#ifdef __cplusplus +} +#endif + +#endif /* __WINNT4_H */