//-- 消费者信息队列中的项目数量 #define CONS_QUE_BUF_SIZE 50
//-- 内存池及长度定义 struct TN_FMem cons_fmem; TN_FMEM_BUF_DEF(cons_fmem_buf, uint32_t, CONS_QUE_BUF_SIZE); //cons_fmem_buf是一个字符串,一个名字
//-- 创建内存池 tn_fmem_create( &cons_fmem,
cons_fmem_buf,
TN_MAKE_ALIG_SIZE(sizeof(uint32_t)),
CONS_QUE_BUF_SIZE );
//-- d task 待用任务
void task_d_body(void *par)
{
printf("New task d is OK!\n");
uint32_t *p_data = NULL;
enum TN_RCode tn_rc; //-- 从内存池中获取内存块
tn_rc = tn_is_task_context() // 当前系统上下文返回
? tn_fmem_get(&cons_fmem, (void *)&p_data, WAIT_TIMEOUT) // 正常分配内存
: tn_fmem_iget_polling(&cons_fmem, (void *)&p_data); // 中断分配内存
*p_data = 5000; // 向内存放一些无聊的数据
printf("Number of used1:%d\n",tn_fmem_used_blocks_cnt_get(&cons_fmem)); // 已用内存数量1
printf("data:%d ddr:0x%X\n",*p_data,p_data); // 已用内存数量2
tn_is_task_context() // 释放内存块
? tn_fmem_release(&cons_fmem, (void *)p_data)
: tn_fmem_irelease(&cons_fmem, (void *)p_data);
printf("Number of free:%d\n",tn_fmem_used_blocks_cnt_get(&cons_fmem)); // 已用内存数量3
printf("data:%d ddr:0x%X\n",*p_data,p_data); // 已用内存数量2
for(;;)
{
tn_task_sleep(50);
}
}
上面是代码片段,简单明了。