windows-nt/Source/XPSP1/NT/drivers/net/irda/sigmatel/sys/resource.c
2020-09-26 16:20:57 +08:00

138 lines
2.9 KiB
C

/**************************************************************************************************************************
* RESOURCE.C SigmaTel STIR4200 memory allocation module
**************************************************************************************************************************
* (C) Unpublished Copyright of Sigmatel, Inc. All Rights Reserved.
*
*
* Created: 04/06/2000
* Version 0.9
*
*
**************************************************************************************************************************/
#define DOBREAKS // enable debug breaks
#include <ndis.h>
#include <ntddndis.h> // defines OID's
#include <usbdi.h>
#include <usbdlib.h>
#include "debug.h"
#include "ircommon.h"
#include "irndis.h"
/*****************************************************************************
*
* Function: MyMemAlloc
*
* Synopsis: allocates a block of memory using NdisAllocateMemory
*
* Arguments: size - size of the block to allocate
*
* Returns: a pointer to the allocated block of memory
*
*
*****************************************************************************/
PVOID
MyMemAlloc(
UINT size
)
{
PVOID pMem;
NDIS_STATUS status;
status = NdisAllocateMemoryWithTag( &pMem, size, IRUSB_TAG );
if( status != NDIS_STATUS_SUCCESS )
{
DEBUGMSG(DBG_ERR, (" Memory allocation failed\n"));
pMem = NULL;
}
return pMem;
}
/*****************************************************************************
*
* Function: MyMemFree
*
* Synopsis: frees a block of memory allocated by MyMemAlloc
*
* Arguments: memptr - memory to free
* size - size of the block to free
*
*
*****************************************************************************/
VOID
MyMemFree(
PVOID pMem,
UINT size
)
{
NdisFreeMemory( pMem, size, 0 );
}
/*****************************************************************************
*
* Function: NewDevice
*
* Synopsis: allocates an IR device and zeros the memory
*
* Arguments: none
*
* Returns: initialized IR device or NULL (if alloc failed)
*
*
*****************************************************************************/
PIR_DEVICE
NewDevice()
{
PIR_DEVICE pNewDev;
pNewDev = MyMemAlloc( sizeof(IR_DEVICE) );
if( pNewDev != NULL )
{
NdisZeroMemory( (PVOID)pNewDev, sizeof(IR_DEVICE) );
if( !AllocUsbInfo( pNewDev ) )
{
MyMemFree( pNewDev, sizeof(IR_DEVICE) );
pNewDev = NULL;
}
}
return pNewDev;
}
/*****************************************************************************
*
* Function: FreeDevice
*
* Synopsis: frees an IR device structure
*
* Arguments: pThisDev - pointer to device to free
*
* Returns: none
*
*
*****************************************************************************/
VOID
FreeDevice(
IN OUT PIR_DEVICE pThisDev
)
{
FreeUsbInfo( pThisDev );
MyMemFree( (PVOID)pThisDev, sizeof(IR_DEVICE) );
}