BUF 管理器中可添加多个缓冲池,每个缓冲池可单独指定:可以被申请的最小单元大小(单位为MADUS),包含的最小单元数目及对齐方式。
通过调用BUF_alloc. BUF_create.BUF_delete.BUF_free. BUF_maxbuff. BUF_stat. 函数来操作BUFObjs,只能分配固定大小的空间,当动态建立时占用的是MEM中的堆空间,当需要分配多尺寸空间时,可以建立多个BUFObjs。
相对于从MEM动态堆中分配,从BUFObjs中分配有如下优点:
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整数倍的最小数字。
文章评论(0条评论)
登录后参与讨论