创建内存字节池 tx_bytc.c

该博客详细介绍了内存池创建的步骤,包括内存对齐、参数初始化、内存链表设置、mutex初始化、内存大小分配策略以及内存块的首尾初始化。过程中涉及到内存管理、中断处理和内存池的有效性设置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

UINT  _tx_byte_pool_create(

        //指向内存池控制块的指针

        TX_BYTE_POOL *pool_ptr

        //指向内存池名称的指针

        CHAR *name_ptr

        //内存池的起始地址。 起始地址必须与 ULONG 数据类型的大小一致

        VOID *pool_start

        //内存池可用的总字节数

        ULONG pool_size);

局部变量:

        

 初始化内存池,把内存池插入created list


流程:

1.内存池大小 4字节对齐

2.初始化参数,保存内存池起始地址和内存大小

3.设置内存链表首地址,内存池搜索起始地址

4.

        

         

5.初始化mutex指针

6.huge memory water mark = pool size

        //当内存大小大于这个值,就从底部开始分配内存,否则从顶部开始分配内存

7.设置可用内存大小,总的大小减去控制字段

        内存池最开始初始化为两块,一个大的块用于分配内存,一个小的固定块仅用于内存分配算法计算

8.内存池最后一块

        (1) block_ptr指向内存池尾部,huge_memory_start指向内存池尾部

        (2) 最后4字节存储TX_BYTE_BLOCK_ALLOC

                

        (3) 前4字节存储pool_start内存池起始地址

                 

9.内存池第一块

        最前面4字节存储第二块内存的首地址,随后4字节存储TX_BLOCK_FREE,指示为空闲块

        

10.清除owner

11.禁止中断

12.设置内存池ID使内存池有效

13.把内存池插入_tx_byte_pool_created_ptr list

14.created count++

15.恢复中断

16.返回SUCCESS

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值