holdingarea/llvm/llvm-gcc4.2-2.7-x86-mingw32/include/ddk/winnt4.h
branchbug235_bringup_0
changeset 20 d2d6724aef32
--- /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 */