--- /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 <chorns@users.sourceforge.net>
+ *
+ * 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 */