ThreadX:打印字节内存池信息的方法

0 源码实现

void printf_tx_bytepool(void)
{
	ULONG i;
    TX_BYTE_POOL *tx_bytepool_ptr;
    double usage_rate;

    if (_tx_byte_pool_created_count == 0)
    {
        printf("don't have any byte pool!\r\n");
        return 0;
    }

    tx_bytepool_ptr = _tx_byte_pool_created_ptr;
    printf("idx  pool_start    pool_search    pool_seg    buff_size    pool_avl    usage_rate(%%)    pool_name\r\n");
    for (i = 0; i < _tx_byte_pool_created_count; i++)
    {
        usage_rate = 100.0f * (double)(tx_bytepool_ptr->tx_byte_pool_size - tx_bytepool_ptr->tx_byte_pool_available) / tx_bytepool_ptr->tx_byte_pool_size;
        printf("%-3d  0x%08X    0x%08X     %-10d  %-10d   %-10d  %-8.4f         %s\r\n",
                   i + 1,
                   tx_bytepool_ptr->tx_byte_pool_start,
                   tx_bytepool_ptr->tx_byte_pool_search,
                   tx_bytepool_ptr->tx_byte_pool_fragments,
                   tx_bytepool_ptr->tx_byte_pool_size,
                   tx_bytepool_ptr->tx_byte_pool_available,
                   usage_rate,
                   tx_bytepool_ptr->tx_byte_pool_name);
        tx_bytepool_ptr = tx_bytepool_ptr->tx_byte_pool_created_next;
    }
}

说明:
ThreadX使用双向链表管理字节内存池,头尾相连。这里根据字节内存池数量_tx_byte_pool_created_count,从链表头遍历_tx_byte_pool_created_count次打印所有的字节内存池信息。
tx_byte_pool_start:内存池传入buffer起始地址
tx_byte_pool_search:内存池当前搜索地址
tx_byte_pool_fragments:内存池当前段数量
tx_byte_pool_size:内存池总字节大小(传入buffer大小)
tx_byte_pool_available:内存池可用字节数
usage_rate:内存池使用率
tx_byte_pool_name:内存池名称

1 测试结果

在这里插入图片描述
正确显示了内存池各项信息,测试OK。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

NW嵌入式开发

感谢您的支持,让我们一起进步!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值