示例#1
0
/**
 * @brief	Memory copy funtion
 * @param	"void *Des" : destination address
 * @param	"void *Src" : source address
 * @param	"int size" : size
 * @return	0 : success ; -1 : fail
 */
int CacheMng_MemCpy( void *Des, void *Src, int size )
{
    if( Des == NULL || Src == NULL )
    {
        return CACHE_PARM_ERR;
    }

#if	CACHEMNG_DMA

    DRV_DmaCopy1D copy1D;

    Sem_lock( STREAM_SEM_CACHECPY);

    copy1D.srcPhysAddr 	= (unsigned long)DRV_dmaGetPhysAddr((unsigned long)Src);
    copy1D.dstPhysAddr 	= (unsigned long)DRV_dmaGetPhysAddr((unsigned long)Des);
    copy1D.size 				=	size;
    DRV_dmaCopy1D(&dmaHndl, &copy1D, 1);

    Sem_unlock( STREAM_SEM_CACHECPY);

#else
    memcpy( Des, Src , size );
#endif

    return 0;
}
示例#2
0
文件: mem_mng.c 项目: lubing521/ipnc
/**
 * @brief	Do memory copy
 * @param	"void *pDes" : destination address
 * @param	"void *pSrc" : source address
 * @param	"int size" : size
 * @return	0 : success ; others : fail
 */
int MemMng_memcpy(void *pDes, void *pSrc, int size )
{
#if	MEMMNG_DMA

	DRV_DmaCopy1D copy1D;

	Sem_lock( STREAM_SEM_MEMCPY);

	copy1D.srcPhysAddr 	= (unsigned long)DRV_dmaGetPhysAddr((unsigned long)pSrc);
	copy1D.dstPhysAddr 	= (unsigned long)DRV_dmaGetPhysAddr((unsigned long)pDes);
	copy1D.size 				=	size ;
	DRV_dmaCopy1D(&dmaHndl, &copy1D, 1);

	Sem_unlock( STREAM_SEM_MEMCPY);

#else

	memcpy( pDes, pSrc, size );
#endif

	return 0;
}