找回密码
 注册
关于网站域名变更的通知
查看: 163|回复: 3
打印 上一主题 下一主题

list_thread()打印的是历史最大使用率还是实时的?

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2022-8-16 13:48 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
打印的max used百分比信息不变,是只打印最大的使用率,不打印实时的?程序不响应任何事件,线程60%,响应事件后75%;然后线程回到不响应的状态。但是打印的还是75%% H% [9 J1 f0 b: q4 H. m$ p

该用户从未签到

2#
发表于 2022-8-16 14:27 | 只看该作者
计算代码如下. d6 c% a6 i& V& U+ ~' r0 y* \! a
% g( ?! v2 _+ `2 u- o2 W
                    while (*ptr == '#')ptr ++;& o, k7 f$ r2 z: l& u
                    rt_kprintf(" 0x%08x 0x%08x    %02d%%   0x%08x %03d\n",
1 |/ d/ v3 U, ?$ u; ^                            thread->stack_size + ((rt_ubase_t)thread->stack_addr - (rt_ubase_t)thread->sp),, ^0 v+ k1 H8 }' L0 N
                            thread->stack_size,2 I( Q; p+ X* I7 G
                            (thread->stack_size - ((rt_ubase_t) ptr - (rt_ubase_t) thread->stack_addr)) * 100
- R' g5 W! @6 ^  [3 O# t                            / thread->stack_size,
% s+ I( H! |: A3 O, @" \0 B6 j                            thread->remaining_tick,6 @5 l, j7 y' ^9 k
                            thread->error);
/ M0 Q! K7 d$ W' m/ v(thread->stack_size - ((rt_ubase_t) ptr - (rt_ubase_t) thread->stack_addr)) * 100 可以看出是线程栈的大小 减去 ptr 相对于 栈起始地址的大小 然后得到一个 百分比。
' B- E" v5 f& F
8 n7 O7 N: h4 v8 Q. W( E进一步分析 ptr 的位置在哪里,通过上面的代码第一行可以看到,通过 # 来进行的判断。. }& I2 Z7 J) `
9 X# k3 J! @$ m$ y, c5 ]9 J
在进一步分析 # 从何而来" l" O  M# S3 [
7 w1 z- i+ Q3 ?6 P; X7 A( m
static rt_err_t _rt_thread_init(struct rt_thread *thread,
8 c! V' t0 o1 u9 o( }+ k, ]' y                                const char       *name,
! a9 @/ S3 m1 x' q+ C& E                                void (*entry)(void *parameter),
: v& z0 b( `* m/ T5 ?2 l                                void             *parameter,6 _. K1 b6 W5 \% h4 F
                                void             *stack_start,1 _3 U* f1 p7 l6 G6 U& o
                                rt_uint32_t       stack_size,+ I! S4 g8 }2 ^7 p& r
                                rt_uint8_t        priority,
4 U6 ], T( W: m" u( e8 t                                rt_uint32_t       tick)$ A5 H# d& P6 w1 d( Y
{. q  R$ Y/ ^5 j% b
    /* init thread list */: j9 w5 C. S0 A/ J: ]
    rt_list_init(&(thread->tlist));
" R$ J* U5 l! _+ d$ l& ]    thread->entry = (void *)entry;) U( W' m5 w$ P5 u- O
    thread->parameter = parameter;
& \. y$ R0 p5 y/ o' A. I9 H    /* stack init */6 O: L8 W0 G) I3 y
    thread->stack_addr = stack_start;( R  }' z1 A/ ]" W0 t
    thread->stack_size = stack_size;; Y% c0 s  s$ }. I  l7 S
    /* init thread stack */0 ?6 H' ^& c! ?; j( {
    rt_memset(thread->stack_addr, '#', thread->stack_size);. u' g9 F5 Y& ~1 z+ ]& D! o8 e% y1 K
可以看到每个线程在初始化的会将整个栈空间设置为 #。
# V# U, M9 N" r% h

该用户从未签到

3#
发表于 2022-8-16 15:21 | 只看该作者
同问,求结果
7 W$ f, R' f* L3 P. V

该用户从未签到

4#
发表于 2022-8-16 15:36 | 只看该作者
再看看别人是怎么说的
' Z- c. T% i& t# s
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-9-9 06:41 , Processed in 0.093750 second(s), 23 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表