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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
打印的max used百分比信息不变,是只打印最大的使用率,不打印实时的?程序不响应任何事件,线程60%,响应事件后75%;然后线程回到不响应的状态。但是打印的还是75%* [% P/ H7 M/ f# Z7 _4 [3 `: \

该用户从未签到

2#
发表于 2022-8-16 14:27 | 只看该作者
计算代码如下" {5 |2 S' [$ j0 Y# e8 L9 r7 i. C
+ H3 K) v7 [6 i, _
                    while (*ptr == '#')ptr ++;
6 J+ S0 z- a$ V; K/ Q) H. `2 z" w+ h                    rt_kprintf(" 0x%08x 0x%08x    %02d%%   0x%08x %03d\n",
2 c( U0 V$ @& t5 I4 W7 p- D                            thread->stack_size + ((rt_ubase_t)thread->stack_addr - (rt_ubase_t)thread->sp),
0 m- }! S: y4 P                            thread->stack_size,% ]- I2 Z) e, z3 Z  L4 D4 `# K5 i- c
                            (thread->stack_size - ((rt_ubase_t) ptr - (rt_ubase_t) thread->stack_addr)) * 100$ R! u9 H/ M) S6 _+ y$ F
                            / thread->stack_size,
  I% i% [) P; ?" G  f4 Y; b+ [& d                            thread->remaining_tick,
, D- ~$ Q: P# H. {& O                            thread->error);* X) @+ z7 s  N
(thread->stack_size - ((rt_ubase_t) ptr - (rt_ubase_t) thread->stack_addr)) * 100 可以看出是线程栈的大小 减去 ptr 相对于 栈起始地址的大小 然后得到一个 百分比。$ I. K2 O( c# R+ b% ?( f% c- _) c
, o1 N. g/ h5 S8 U% i: a5 H
进一步分析 ptr 的位置在哪里,通过上面的代码第一行可以看到,通过 # 来进行的判断。& }! \) A! q' Y0 u# p9 V, {1 r

, A! l% N% s! P在进一步分析 # 从何而来
, R# |, Y$ x1 W/ L2 x0 `
3 z9 n; h8 T; c! B3 F" Qstatic rt_err_t _rt_thread_init(struct rt_thread *thread,6 O" p" u2 Q) w( _2 y
                                const char       *name,
; J# E0 a8 c3 J2 K6 ]                                void (*entry)(void *parameter),/ z. a  B- w$ x# |& H! y1 E
                                void             *parameter,( S* I* u1 Y9 k
                                void             *stack_start,
. A  J$ [. k' m3 W: w+ X                                rt_uint32_t       stack_size,! W, T" C4 H4 V. c1 v
                                rt_uint8_t        priority,
3 L2 `, ~/ s% n+ k                                rt_uint32_t       tick)
. Q; n+ I$ |' M: R! g0 z{
  b2 |$ o! L! F    /* init thread list */3 y7 G4 Q  V* W, u) d, U6 s/ X
    rt_list_init(&(thread->tlist));- }+ g/ y# U7 v: l
    thread->entry = (void *)entry;
! O# _/ X2 C1 P% U* x4 Q3 l    thread->parameter = parameter;, K% E6 D3 p3 \* b1 i; _
    /* stack init */
/ e0 ]3 K3 |' k. b6 }( A& Z    thread->stack_addr = stack_start;
: T, p6 |9 i  ]6 j2 B$ M! |    thread->stack_size = stack_size;2 J% }8 U2 S9 E, k" s" f0 i, i) z
    /* init thread stack */
0 O3 w' f3 z6 o. O    rt_memset(thread->stack_addr, '#', thread->stack_size);) j# B) Q2 A/ O6 W% L4 k. T
可以看到每个线程在初始化的会将整个栈空间设置为 #。  d, B* i$ n% O; U

该用户从未签到

3#
发表于 2022-8-16 15:21 | 只看该作者
同问,求结果* V2 `; {# b% ]  C( M

该用户从未签到

4#
发表于 2022-8-16 15:36 | 只看该作者
再看看别人是怎么说的4 g( g" \2 |$ P& h
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-7-29 22:34 , Processed in 0.109375 second(s), 23 queries , Gzip On.

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

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

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