删除内存块池 tx_bpd.c

内存管理:内存块池删除与线程恢复
该流程详细描述了如何安全地从createdlist中删除内存块池,并恢复挂起在suspensionlist中的线程。操作包括禁止中断、设置无效标识、遍历并恢复挂起线程的状态,最后检查并处理可能的抢占情况,确保线程安全。整个过程体现了操作系统内核级别的内存管理和线程调度机制。

UINT  _tx_block_pool_delete(

        TX_BLOCK_POOL *pool_ptr);

局部变量:

        

 将内存块池从created list中删除,并且恢复挂起在suspension list中的线程


流程:

1.禁止中断 //为了进行删除内存块池的操作

2.标记内存块池为无效 //id=0

3.从created list中删除内存块池

4.禁止抢占

5.恢复中断

6.遍历suspension list

        (1) thread_ptr指向suspension list挂起的第一个线程

        (2) 循环操作 //直到suspended count为0时退出

                1) 禁止中断

                2) cleanup设为NULL //禁止timeout

                3) 禁止抢占

                4) 恢复中断

                5) 关闭timer

                6) 设置当前挂起线程返回状态为TX_DELETED

                7) thread_ptr指向下一个挂起线程

                8) 恢复当前线程

                9) suspended count--

7.禁止中断,恢复抢占

8.恢复中断

9.检查抢占,若当前线程不是执行线程,控制返回系统

        //恢复线程后,可能有高优先级线程,需要切换

10.返回TX_SUCCESS

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值