/***************************************************************************** * 函 数 名 : mdrv_sfree * * 功能描述 :释放由mdrv_smalloc分配的内存。 * * 输入参数 : pBuf:指向要释放的内存块的指针 * * 输出参数 : 无 * 返 回 值 : 0: 成功 * -1: 失败 ****************************************************************************/ int mdrv_sfree(void* pBuf) { #ifdef CONFIG_MEM bsp_sfree(pBuf); #endif return MDRV_OK; }
/***************************************************************************** * 函 数 名 : BSP_SFree * * 功能描述 : BSP 动态内存释放(加spin lock保护,多核场景使用)(Debug接口) * * 输入参数 : pMem: 动态内存指针 * pFileName: 使用的源文件 * u32Line: 所在文件的行号 * * 输出参数 : 无 * 返 回 值 : 无 *****************************************************************************/ void bsp_sfree_dbg(void* pMem, u8* pFileName, u32 u32Line) { if(0 == *g_mem_init_mark) { return; } bsp_sfree(pMem); return; }
STATIC u32 mem_smalloc_test(u32 size) { void * pret = bsp_smalloc(size, MEM_ICC_DDR_POOL); if(pret) { mem_print_dbg("sucess BSP_Malloc addr:%x size:%d", pret, size); bsp_sfree(pret); return MEM_TEST_OK; } else { mem_print_error("fail! BSP_Malloc addr:%x size:%d", pret, size); return MEM_TEST_ERROR; } }
STATIC s32 use_smem_test(int size) { u32* pret = (u32*)bsp_smalloc(size, MEM_ICC_DDR_POOL); u32* praw = pret; u32 rawsize = size; if(pret) { mem_print_dbg("sucess BSP_Malloc addr:%x size:%d", pret, size); while(size > 0) { size -= sizeof(u32); *pret = ACORE_MAGIC_NUM; pret++; } taskDelay(200); size = rawsize; pret = praw; while(size > 0) { size -= sizeof(u32); if(*pret != ACORE_MAGIC_NUM) { mem_print_error("fail! Use smalloc fail addr:%x size:%d", pret, size); return MEM_TEST_ERROR; } pret++; } bsp_sfree(praw); return MEM_TEST_OK; } else { mem_print_error("fail! BSP_Malloc addr:%x size:%d", pret, size); return MEM_TEST_ERROR; } }