栈利用率的获取

栈利用率的计算对于防止栈溢出和优化资源利用至关重要。RT-THREAD通过填充线程栈并检查是否被修改来统计利用率。初始化时不应填充全部栈空间,以免影响函数返回。建议在未启动操作系统时初始化MSP,以获得更准确的利用率。
摘要由CSDN通过智能技术生成

栈用于保存变量, 随着函数调用深度和变量的数量而变化. 设置小了会出现栈溢出, 设置大了会浪费.

利用率获取

RT-THREAD的统计方法是将线程栈都填充为’#’, 当需要的时候, 检查是否被修改为其他值.

在这里插入图片描述
利用率 = 已使用 / 栈大小.

#if defined(ARCH_CPU_STACK_GROWS_UPWARD)
                    ptr = (rt_uint8_t *)thread->stack_addr + thread->stack_size - 1;
                    while (*ptr == '#')ptr --;

                    rt_kprintf(" 0x%08x 0x%08x    %02d%%   0x%08x %03d\n",
                            ((rt_ubase_t)thread->sp - (rt_ubase_t)thread->stack_addr),
                            thread->stack_size,
                            ((rt_ubase_t)ptr - (rt_ubase_t)thread->stack_addr) * 100 / thread->stack_size,
                            thread->remaining_tick,
                            thread->error);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值