/***************************************************************************** * 函 数 名 : BSP_SMalloc * * 功能描述 : BSP 动态内存分配(加spin lock保护,多核场景使用) * * 输入参数 : u32Size: 分配的大小(byte) * enFlags: 内存属性(暂不使用,预留) * 输出参数 : 无 * 返 回 值 : 分配出来的内存指针 *****************************************************************************/ void* bsp_smalloc(u32 u32Size, MEM_POOL_TYPE enFlags) { u8 *pItem; if(0 == *g_mem_init_mark) { return NULL; } /* 分配内存 */ pItem = bsp_memory_alloc((u32)enFlags, u32Size); return (void*)pItem; }
/***************************************************************************** * 函 数 名 : bsp_malloc * * 功能描述 : BSP 动态内存分配 * * 输入参数 : u32Size: 分配的大小(byte) * enFlags: 内存属性(暂不使用,预留) * 输出参数 : 无 * 返 回 值 : 分配出来的内存指针 *****************************************************************************/ void* bsp_malloc(u32 u32Size, MEM_POOL_TYPE enFlags) { u8 *pItem; #if 1 pItem = (u8 *)kmalloc(u32Size, GFP_KERNEL); #else if(MEM_NORM_DDR_POOL == enFlags) { return kmalloc(u32Size, GFP_KERNEL); } /* 分配内存 */ pItem = bsp_memory_alloc(enFlags, u32Size); #endif return (void*)pItem; }
/***************************************************************************** * 函 数 名 : bsp_malloc_dbg * * 功能描述 : BSP 动态内存分配(Debug接口) * * 输入参数 : u32Size: 分配的大小(byte) * enFlags: 内存属性(暂不使用,预留) * pFileName: 使用的源文件 * u32Line: 所在文件的行号 * 输出参数 : 无 * 返 回 值 : 成功/失败 *****************************************************************************/ void* bsp_malloc_dbg(u32 u32Size, MEM_POOL_TYPE enFlags, u8* pFileName, u32 u32Line) { u8 *pItem; /* 分配内存 */ pItem = bsp_memory_alloc((u32)enFlags, (u32)u32Size); #ifdef __BSP_MEM_DEBUG__ if (NULL != pItem) { /* Debug模式要更新MGR 信息 */ MEM_ITEM_LINE(pItem) = u32Line; MEM_ITEM_FILE_NAME(pItem) = (u32)pFileName; } #endif return (void*)pItem; }
/***************************************************************************** * 函 数 名 : bsp_smalloc_dbg * * 功能描述 : BSP 动态内存分配(加spin lock保护,多核场景使用)(Debug接口) * * 输入参数 : u32Size: 分配的大小(byte) * enFlags: 内存属性(暂不使用,预留) * pFileName: 使用的源文件 * u32Line: 所在文件的行号 * 输出参数 : 无 * 返 回 值 : 成功/失败 *****************************************************************************/ void* bsp_smalloc_dbg(u32 u32Size, MEM_POOL_TYPE enFlags, u8* pFileName, u32 u32Line) { u8 *pItem; if(0 == *g_mem_init_mark) { return NULL; } #ifdef __BSP_MEM_DEBUG__ if ((u32)enFlags >= MEM_POOL_MAX) { printk("invalid mem enFlags:%d, line:%d\n", (u32)enFlags, __LINE__); return NULL; } #endif /* 分配内存 */ pItem = bsp_memory_alloc((u32)enFlags, u32Size); return (void*)pItem; }