原创 DSP/BIOS图形配置工具之BUF管理器

2009-7-16 23:08 2802 3 3 分类: 处理器与DSP

BUF 管理器中可添加多个缓冲池,每个缓冲池可单独指定:可以被申请的最小单元大小(单位为MADUS),包含的最小单元数目及对齐方式。


通过调用BUF_alloc.  BUF_create.BUF_delete.BUF_free. BUF_maxbuff. BUF_stat. 函数来操作BUFObjs,只能分配固定大小的空间,当动态建立时占用的是MEM中的堆空间,当需要分配多尺寸空间时,可以建立多个BUFObjs。


相对于从MEM动态堆中分配,从BUFObjs中分配有如下优点:



  1. 可以预测,分配和释放花费时间为常数
  2. 函数为原子类型,非阻塞,适用于各种线程里调用
  3. 针对固定长度申请,经过优化
  4. 更小的内存碎片,相对于从堆中分配,这一点类似ucos中的内存管理

typedef struct BUF_Obj {


  Ptr startaddr;    /* Start addr of buffer pool */


  MEM_sizep size;   /* Size before alignment */


  MEM_sizep postalignsize; /* Size after align */


  Ptr nextfree;     /* Ptr to next free buffer */


  Uns totalbuffers; /* # of buffers in pool*/


  Uns freebuffers;  /* # of free buffers in pool */


  Int segid;        /* Mem seg for buffer pool */


} BUF_Obj, *BUF_Handle;


Buffer size after alignment.:此选项主要受Buffer size和Buffer alignment影响,也就是实际缓冲池里最小单元的大小,必须是大于Buffer size且是Buffer alignment整数倍的最小数字。

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
我要评论
0
3
关闭 站长推荐上一条 /3 下一条