You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
188 lines
4.0 KiB
188 lines
4.0 KiB
/**************************************************************************************************************************
|
|
* 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: MyUrbAlloc
|
|
*
|
|
* Synopsis: allocates an URB using NdisAllocateMemory
|
|
*
|
|
* Arguments: size - size of urb to allocate
|
|
*
|
|
* Returns: a pointer to the urb
|
|
*
|
|
*****************************************************************************/
|
|
PURB
|
|
MyUrbAlloc(
|
|
UINT size
|
|
)
|
|
{
|
|
PURB pUrb = NULL;
|
|
|
|
pUrb = MyMemAlloc( size );
|
|
|
|
if( NULL == pUrb )
|
|
{
|
|
DEBUGMSG(DBG_ERR, (" IrUsb failed to alloc urb\n"));
|
|
}
|
|
else
|
|
{
|
|
NdisZeroMemory( pUrb, size );
|
|
}
|
|
|
|
return pUrb;
|
|
}
|
|
|
|
/*****************************************************************************
|
|
*
|
|
* Function: MyUrbFree
|
|
*
|
|
* Synopsis: frees an Urb allocated by MyUrbAlloc
|
|
*
|
|
* Arguments: pUrb - urb to free
|
|
* size - size of the urb to free
|
|
*
|
|
*
|
|
*****************************************************************************/
|
|
VOID
|
|
MyUrbFree(
|
|
PURB pUrb,
|
|
UINT size
|
|
)
|
|
{
|
|
MyMemFree(pUrb, size);
|
|
}
|
|
|
|
/*****************************************************************************
|
|
*
|
|
* 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) );
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|