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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
打印的max used百分比信息不变,是只打印最大的使用率,不打印实时的?程序不响应任何事件,线程60%,响应事件后75%;然后线程回到不响应的状态。但是打印的还是75%
8 y5 D8 A& l/ F1 [" _) I

该用户从未签到

2#
发表于 2022-8-16 14:27 | 只看该作者
计算代码如下
# B* J6 U  I; L$ e7 J, ?! ]7 Q- c; p  Q' P
                    while (*ptr == '#')ptr ++;# s, H. |& |: z, @3 W* b
                    rt_kprintf(" 0x%08x 0x%08x    %02d%%   0x%08x %03d\n",
/ ~! ?1 a7 p# f2 }                            thread->stack_size + ((rt_ubase_t)thread->stack_addr - (rt_ubase_t)thread->sp),5 x4 s/ k) G9 U
                            thread->stack_size,
& q" d0 L, c# \3 A. ]# ]3 s. S$ x( |8 X                            (thread->stack_size - ((rt_ubase_t) ptr - (rt_ubase_t) thread->stack_addr)) * 100& x& b) U* t1 |% t5 O! M: a5 Y' J
                            / thread->stack_size,
0 r1 X% \! G. L) l, \2 S                            thread->remaining_tick,. V0 r' ?9 n4 x5 w8 ]! ^
                            thread->error);$ ]3 v. }" w$ R9 q( U- K
(thread->stack_size - ((rt_ubase_t) ptr - (rt_ubase_t) thread->stack_addr)) * 100 可以看出是线程栈的大小 减去 ptr 相对于 栈起始地址的大小 然后得到一个 百分比。% ~: Q* s: U% [9 g3 ^; r1 ?) Q

! {3 V/ Y$ a6 C& B进一步分析 ptr 的位置在哪里,通过上面的代码第一行可以看到,通过 # 来进行的判断。
9 }" e' @: Q" s$ l& `( m; B# F  g+ U/ N! ~: \: o* f. B
在进一步分析 # 从何而来
1 |6 p2 {. z& N9 H# ^% n! I2 g& {( w7 X( S
static rt_err_t _rt_thread_init(struct rt_thread *thread,
1 A0 R1 m+ V& }0 X, |/ x) W4 r                                const char       *name,
: I0 w7 y( }; t" l; Y# Y* R                                void (*entry)(void *parameter),8 L$ E1 ^3 O# ^! |& R
                                void             *parameter,
; }5 O8 f% e4 I6 D/ `& F                                void             *stack_start,
: X" \4 G1 O8 ]0 Y3 F8 n                                rt_uint32_t       stack_size,
  t" q, j& l, `5 T" O                                rt_uint8_t        priority,2 x" ^8 F( O9 P' F( F8 E- h8 Z, }
                                rt_uint32_t       tick)# h$ n; S1 a$ \8 z2 b
{* w: p1 h' o+ u$ J) i
    /* init thread list */
+ l' o; P/ T; X  `. H- v7 g. ?1 K    rt_list_init(&(thread->tlist));
/ W+ G1 _# A, |3 ?4 S" J; E4 f    thread->entry = (void *)entry;
3 v/ O' r8 M0 V# k4 |( @    thread->parameter = parameter;
1 ]. w; B; z+ I& a) p8 |    /* stack init */( E9 g+ b/ h# ]! Q* |
    thread->stack_addr = stack_start;  |1 Z8 h, w3 n; X8 I/ d5 P
    thread->stack_size = stack_size;
: X6 O% I2 S  n7 i+ |. W: Q    /* init thread stack */
* R+ G* p$ `0 a4 H    rt_memset(thread->stack_addr, '#', thread->stack_size);8 j  E2 L: E: }" W7 _) m( {% c+ ~
可以看到每个线程在初始化的会将整个栈空间设置为 #。( `1 q0 @5 k/ c# r+ ]) d( E

该用户从未签到

3#
发表于 2022-8-16 15:21 | 只看该作者
同问,求结果
" H+ K+ |% M1 K/ c& |% R

该用户从未签到

4#
发表于 2022-8-16 15:36 | 只看该作者
再看看别人是怎么说的
! t1 O' w7 X8 i. N& O: P
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-11-23 17:00 , Processed in 0.156250 second(s), 23 queries , Gzip On.

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

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

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