木子剑
生命不熄,学习不止!


//-- 消费者信息队列中的项目数量
#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);
}

}

上面是代码片段,简单明了。

posted on 2022-04-04 21:26  木子剑  阅读(72)  评论(0编辑  收藏  举报