Git conversion: Make reactos the root directory, move rosapps, rostests, wallpapers...
[reactos.git] / reactos / drivers / network / ndis / ndis / memory.c
diff --git a/reactos/drivers/network/ndis/ndis/memory.c b/reactos/drivers/network/ndis/ndis/memory.c
deleted file mode 100644 (file)
index 7a65ae9..0000000
+++ /dev/null
@@ -1,420 +0,0 @@
-/*
- * COPYRIGHT:   See COPYING in the top level directory
- * PROJECT:     ReactOS NDIS library
- * FILE:        ndis/memory.c
- * PURPOSE:     Memory management routines
- * PROGRAMMERS: Casper S. Hornstrup (chorns@users.sourceforge.net)
- *              Vizzini (vizzini@plasmic.com)
- * REVISIONS:
- *   CSH 01/08-2000 Created
- *   15 Aug 2003 Vizzini - DMA support
- *   3  Oct 2003 Vizzini - formatting and minor bugfixing
- */
-
-#include "ndissys.h"
-
-/*
- * @implemented
- */
-NDIS_STATUS
-EXPORT
-NdisAllocateMemoryWithTag(
-    OUT PVOID   *VirtualAddress,
-    IN  UINT    Length,
-    IN  ULONG   Tag)
-/*
- * FUNCTION:  Allocates a block of memory, with a 32-bit tag
- * ARGUMENTS:
- *   VirtualAddress = a pointer to the returned memory block
- *   Length         = the number of requested bytes
- *   Tag            = 32-bit pool tag
- * RETURNS:
- *   NDIS_STATUS_SUCCESS on success
- *   NDIS_STATUS_FAILURE on failure
- */
-{
-  PVOID Block;
-
-  NDIS_DbgPrint(MAX_TRACE, ("Called.\n"));
-
-  Block = ExAllocatePoolWithTag(NonPagedPool, Length, Tag);
-  *VirtualAddress = Block;
-
-  if (!Block) {
-    NDIS_DbgPrint(MIN_TRACE, ("Failed to allocate memory (%lx)\n", Length));
-    return NDIS_STATUS_FAILURE;
-  }
-
-  return NDIS_STATUS_SUCCESS;
-}
-
-
-/*
- * @implemented
- */
-NDIS_STATUS
-EXPORT
-NdisAllocateMemory(
-    OUT PVOID                   *VirtualAddress,
-    IN  UINT                    Length,
-    IN  UINT                    MemoryFlags,
-    IN  NDIS_PHYSICAL_ADDRESS   HighestAcceptableAddress)
-/*
- * FUNCTION: Allocates a block of memory
- * ARGUMENTS:
- *     VirtualAddress           = Address of buffer to place virtual
- *                                address of the allocated memory
- *     Length                   = Size of the memory block to allocate
- *     MemoryFlags              = Flags to specify special restrictions
- *     HighestAcceptableAddress = Specifies -1
- * RETURNS:
- *     NDIS_STATUS_SUCCESS on success
- *     NDIS_STATUS_FAILURE on failure
- */
-{
-  NDIS_DbgPrint(MAX_TRACE, ("Called.\n"));
-
-  if (MemoryFlags & NDIS_MEMORY_CONTIGUOUS)
-  {
-      /* Allocate contiguous memory (possibly noncached) */
-      *VirtualAddress = MmAllocateContiguousMemorySpecifyCache(Length,
-                                                               RtlConvertUlongToLargeInteger(0),
-                                                               HighestAcceptableAddress,
-                                                               RtlConvertUlongToLargeInteger(0),
-                                                               (MemoryFlags & NDIS_MEMORY_NONCACHED) ? MmNonCached : MmCached);
-  }
-  else if (MemoryFlags & NDIS_MEMORY_NONCACHED)
-  {
-      /* Allocate noncached noncontiguous memory */
-      *VirtualAddress = MmAllocateNonCachedMemory(Length);
-  }
-  else
-  {
-      /* Allocate plain nonpaged memory */
-      *VirtualAddress = ExAllocatePool(NonPagedPool, Length);
-  }
-
-  if (!*VirtualAddress) {
-    NDIS_DbgPrint(MIN_TRACE, ("Allocation failed (%lx, %lx)\n", MemoryFlags, Length));
-    return NDIS_STATUS_FAILURE;
-  }
-
-  return NDIS_STATUS_SUCCESS;
-}
-
-/*
- * @implemented
- */
-VOID
-EXPORT
-NdisFreeMemory(
-    IN  PVOID   VirtualAddress,
-    IN  UINT    Length,
-    IN  UINT    MemoryFlags)
-/*
- * FUNCTION: Frees a memory block allocated with NdisAllocateMemory
- * ARGUMENTS:
- *     VirtualAddress = Pointer to the base virtual address of the allocated memory
- *     Length         = Size of the allocated memory block as passed to NdisAllocateMemory
- *     MemoryFlags    = Memory flags passed to NdisAllocateMemory
- */
-{
-  NDIS_DbgPrint(MAX_TRACE, ("Called.\n"));
-
-  if (MemoryFlags & NDIS_MEMORY_CONTIGUOUS)
-  {
-      /* Free contiguous memory (possibly noncached) */
-      MmFreeContiguousMemorySpecifyCache(VirtualAddress,
-                                         Length,
-                                         (MemoryFlags & NDIS_MEMORY_NONCACHED) ? MmNonCached : MmCached);
-  }
-  else if (MemoryFlags & NDIS_MEMORY_NONCACHED)
-  {
-      /* Free noncached noncontiguous memory */
-      MmFreeNonCachedMemory(VirtualAddress, Length);
-  }
-  else
-  {
-      /* Free nonpaged pool */
-      ExFreePool(VirtualAddress);
-  }
-}
-
-/*
- * @implemented
- */
-VOID
-EXPORT
-NdisMAllocateSharedMemory(
-    IN NDIS_HANDLE             MiniportAdapterHandle,
-    IN ULONG                   Length,
-    IN BOOLEAN                 Cached,
-    OUT        PVOID                   *VirtualAddress,
-    OUT        PNDIS_PHYSICAL_ADDRESS  PhysicalAddress)
-/*
- * FUNCTION: Allocate a common buffer for DMA
- * ARGUMENTS:
- *     MiniportAdapterHandle:  Handle passed into MiniportInitialize
- *     Length:  Number of bytes to allocate
- *     Cached:  Whether or not the memory can be cached
- *     VirtualAddress:  Pointer to memory is returned here
- *     PhysicalAddress:  Physical address corresponding to virtual address
- * NOTES:
- *     - Cached is ignored; we always allocate non-cached
- */
-{
-  PLOGICAL_ADAPTER Adapter = (PLOGICAL_ADAPTER)MiniportAdapterHandle;
-
-  NDIS_DbgPrint(MAX_TRACE,("Called.\n"));
-
-  if (KeGetCurrentIrql() != PASSIVE_LEVEL)
-  {
-      KeBugCheckEx(BUGCODE_ID_DRIVER,
-                   (ULONG_PTR)MiniportAdapterHandle,
-                   Length,
-                   0,
-                   1);
-  }
-
-  *VirtualAddress = Adapter->NdisMiniportBlock.SystemAdapterObject->DmaOperations->AllocateCommonBuffer(
-      Adapter->NdisMiniportBlock.SystemAdapterObject, Length, PhysicalAddress, Cached);
-}
-
-VOID
-NTAPI
-NdisMFreeSharedMemoryPassive(
-    PDEVICE_OBJECT DeviceObject,
-    PVOID Context)
-/*
- * FUNCTION:  Free a common buffer
- * ARGUMENTS:
- *     Context:  Pointer to a miniport shared memory context
- * NOTES:
- *     - Called by NdisMFreeSharedMemory to do the actual work
- */
-{
-  PMINIPORT_SHARED_MEMORY Memory = (PMINIPORT_SHARED_MEMORY)Context;
-
-  NDIS_DbgPrint(MAX_TRACE, ("Called.\n"));
-
-  ASSERT(KeGetCurrentIrql() == PASSIVE_LEVEL);
-
-  Memory->AdapterObject->DmaOperations->FreeCommonBuffer(
-      Memory->AdapterObject, Memory->Length, Memory->PhysicalAddress,
-      Memory->VirtualAddress, Memory->Cached);
-
-  IoFreeWorkItem(Memory->WorkItem);
-  ExFreePool(Memory);
-}
-
-/*
- * @implemented
- */
-VOID
-EXPORT
-NdisMFreeSharedMemory(
-    IN  NDIS_HANDLE             MiniportAdapterHandle,
-    IN  ULONG                   Length,
-    IN  BOOLEAN                 Cached,
-    IN  PVOID                   VirtualAddress,
-    IN  NDIS_PHYSICAL_ADDRESS   PhysicalAddress)
-/*
- * FUNCTION:  Free a shared memory block
- * ARGUMENTS:
- *     MiniportAdapterHandle:  Handle passed into MiniportInitialize
- *     Length:  Number of bytes in the block to free
- *     Cached:  Whether or not the memory was cached
- *     VirtualAddress:  Address to free
- *     PhysicalAddress:  corresponding physical addres
- * NOTES:
- *     - This function can be called at dispatch_level or passive_level.
- *       Therefore we have to do this in a worker thread.
- */
-{
-  PLOGICAL_ADAPTER Adapter = (PLOGICAL_ADAPTER)MiniportAdapterHandle;
-  PMINIPORT_SHARED_MEMORY Memory;
-  PDMA_ADAPTER DmaAdapter = Adapter->NdisMiniportBlock.SystemAdapterObject;
-
-  NDIS_DbgPrint(MAX_TRACE,("Called.\n"));
-
-  ASSERT(KeGetCurrentIrql() <= DISPATCH_LEVEL);
-    
-  /* Call FreeCommonBuffer synchronously if we are at PASSIVE_LEVEL */
-  if (KeGetCurrentIrql() == PASSIVE_LEVEL)
-  {
-      /* We need this case because we free shared memory asynchronously
-       * and the miniport (and DMA adapter object) could be freed before
-       * our work item executes. Lucky for us, the scenarios where the
-       * freeing needs to be synchronous (failed init, MiniportHalt,
-       * and driver unload) are all at PASSIVE_LEVEL so we can just
-       * call FreeCommonBuffer synchronously and not have to worry
-       * about the miniport falling out from under us */
-
-      NDIS_DbgPrint(MID_TRACE,("Freeing shared memory synchronously\n"));
-
-      DmaAdapter->DmaOperations->FreeCommonBuffer(DmaAdapter,
-                                                  Length,
-                                                  PhysicalAddress,
-                                                  VirtualAddress,
-                                                  Cached);
-      return;
-  }
-
-  /* Must be NonpagedPool because by definition we're at DISPATCH_LEVEL */
-  Memory = ExAllocatePool(NonPagedPool, sizeof(MINIPORT_SHARED_MEMORY));
-
-  if(!Memory)
-    {
-      NDIS_DbgPrint(MIN_TRACE, ("Insufficient resources\n"));
-      return;
-    }
-
-  Memory->AdapterObject = Adapter->NdisMiniportBlock.SystemAdapterObject;
-  Memory->Length = Length;
-  Memory->PhysicalAddress = PhysicalAddress;
-  Memory->VirtualAddress = VirtualAddress;
-  Memory->Cached = Cached;
-  Memory->Adapter = &Adapter->NdisMiniportBlock;
-
-  Memory->WorkItem = IoAllocateWorkItem(Adapter->NdisMiniportBlock.DeviceObject);
-  if (!Memory->WorkItem)
-  {
-      NDIS_DbgPrint(MIN_TRACE, ("Insufficient resources\n"));
-      ExFreePool(Memory);
-      return;
-  }
-
-  IoQueueWorkItem(Memory->WorkItem,
-                  NdisMFreeSharedMemoryPassive,
-                  CriticalWorkQueue,
-                  Memory);
-}
-
-VOID
-NTAPI
-NdisMAllocateSharedMemoryPassive(
-    PDEVICE_OBJECT DeviceObject,
-    PVOID Context)
-/*
- * FUNCTION:  Allocate a common buffer
- * ARGUMENTS:
- *     Context:  Pointer to a miniport shared memory context
- * NOTES:
- *     - Called by NdisMAllocateSharedMemoryAsync to do the actual work
- */
-{
-  PMINIPORT_SHARED_MEMORY Memory = (PMINIPORT_SHARED_MEMORY)Context;
-
-  NDIS_DbgPrint(MAX_TRACE, ("Called.\n"));
-
-  ASSERT(KeGetCurrentIrql() == PASSIVE_LEVEL);
-
-  Memory->VirtualAddress = Memory->AdapterObject->DmaOperations->AllocateCommonBuffer(
-      Memory->AdapterObject, Memory->Length, &Memory->PhysicalAddress, Memory->Cached);
-
-  if (Memory->Adapter->DriverHandle->MiniportCharacteristics.AllocateCompleteHandler)
-      Memory->Adapter->DriverHandle->MiniportCharacteristics.AllocateCompleteHandler(
-             Memory->Adapter->MiniportAdapterContext, Memory->VirtualAddress, 
-             &Memory->PhysicalAddress, Memory->Length, Memory->Context);
-
-  IoFreeWorkItem(Memory->WorkItem);
-  ExFreePool(Memory);
-}
-
-
-/*
- * @implemented
- */
-NDIS_STATUS
-EXPORT
-NdisMAllocateSharedMemoryAsync(
-    IN  NDIS_HANDLE MiniportAdapterHandle,
-    IN  ULONG       Length,
-    IN  BOOLEAN     Cached,
-    IN  PVOID       Context)
-{
-  PLOGICAL_ADAPTER Adapter = (PLOGICAL_ADAPTER)MiniportAdapterHandle;
-  PMINIPORT_SHARED_MEMORY Memory;
-
-  NDIS_DbgPrint(MAX_TRACE,("Called.\n"));
-
-  ASSERT(KeGetCurrentIrql() <= DISPATCH_LEVEL);
-
-  /* Must be NonpagedPool because by definition we're at DISPATCH_LEVEL */
-  Memory = ExAllocatePool(NonPagedPool, sizeof(MINIPORT_SHARED_MEMORY));
-
-  if(!Memory)
-    {
-      NDIS_DbgPrint(MIN_TRACE, ("Insufficient resources\n"));
-      return NDIS_STATUS_FAILURE;
-    }
-
-  Memory->AdapterObject = Adapter->NdisMiniportBlock.SystemAdapterObject;
-  Memory->Length = Length;
-  Memory->Cached = Cached;
-  Memory->Adapter = &Adapter->NdisMiniportBlock;
-  Memory->Context = Context;
-
-  Memory->WorkItem = IoAllocateWorkItem(Adapter->NdisMiniportBlock.DeviceObject);
-  if (!Memory->WorkItem)
-  {
-      NDIS_DbgPrint(MIN_TRACE, ("Insufficient resources\n"));
-      ExFreePool(Memory);
-      return NDIS_STATUS_FAILURE;
-  }
-
-  IoQueueWorkItem(Memory->WorkItem,
-                  NdisMAllocateSharedMemoryPassive,
-                  DelayedWorkQueue,
-                  Memory);
-
-  return NDIS_STATUS_PENDING;
-}
-
-/*
- * @implemented
- */
-VOID
-EXPORT
-NdisAllocateSharedMemory(
-    IN  NDIS_HANDLE             NdisAdapterHandle,
-    IN  ULONG                   Length,
-    IN  BOOLEAN                 Cached,
-    OUT PVOID                   *VirtualAddress,
-    OUT PNDIS_PHYSICAL_ADDRESS  PhysicalAddress)
-{
-    NdisMAllocateSharedMemory(NdisAdapterHandle,
-                              Length,
-                              Cached,
-                              VirtualAddress,
-                              PhysicalAddress);
-}
-
-
-/*
- * @implemented
- */
-VOID
-EXPORT
-NdisFreeSharedMemory(
-    IN NDIS_HANDLE              NdisAdapterHandle,
-    IN ULONG                    Length,
-    IN BOOLEAN                  Cached,
-    IN PVOID                    VirtualAddress,
-    IN NDIS_PHYSICAL_ADDRESS    PhysicalAddress)
-/*
- * FUNCTION:
- * ARGUMENTS:
- * NOTES:
- *    NDIS 4.0
- */
-{
-    NdisMFreeSharedMemory(NdisAdapterHandle,
-                          Length,
-                          Cached,
-                          VirtualAddress,
-                          PhysicalAddress);
-}
-
-
-/* EOF */