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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
打印的max used百分比信息不变,是只打印最大的使用率,不打印实时的?程序不响应任何事件,线程60%,响应事件后75%;然后线程回到不响应的状态。但是打印的还是75%
9 p1 w4 p0 |& x

该用户从未签到

2#
发表于 2022-8-16 14:27 | 只看该作者
计算代码如下
7 N; R: |; e, |. G: ^
! ?; F8 o* \6 c1 t9 H1 S. C1 P% t                    while (*ptr == '#')ptr ++;& o8 s  `% d% p- w5 H  [
                    rt_kprintf(" 0x%08x 0x%08x    %02d%%   0x%08x %03d\n",
) J0 w9 |, v* `4 F  e                            thread->stack_size + ((rt_ubase_t)thread->stack_addr - (rt_ubase_t)thread->sp),
- d; |* b% G% ?; k7 x/ ~                            thread->stack_size,
& A; ]0 a6 Y1 }# |% t4 `' [4 Z                            (thread->stack_size - ((rt_ubase_t) ptr - (rt_ubase_t) thread->stack_addr)) * 100
3 M: E8 |: p& C. x) f! j* l/ E0 T                            / thread->stack_size,( o+ C" N3 _3 ~
                            thread->remaining_tick,
9 O/ ?. n; u9 L7 r  F8 f                            thread->error);3 P. f9 \" F# n/ w
(thread->stack_size - ((rt_ubase_t) ptr - (rt_ubase_t) thread->stack_addr)) * 100 可以看出是线程栈的大小 减去 ptr 相对于 栈起始地址的大小 然后得到一个 百分比。% w; G( b7 _+ d' ?5 q- }

( E* s, W" ]3 Z进一步分析 ptr 的位置在哪里,通过上面的代码第一行可以看到,通过 # 来进行的判断。6 [) I  ~7 U2 `

0 X: r$ t3 Q4 y在进一步分析 # 从何而来+ }7 e- `* m- o1 Q* a; x

/ W$ i; W1 Y& ~; i* ?static rt_err_t _rt_thread_init(struct rt_thread *thread,
; p3 Z8 c6 w: M, `- V                                const char       *name,. J. \2 k5 M0 L" ~9 k7 m" N
                                void (*entry)(void *parameter),, Q5 U0 n. U- O- w
                                void             *parameter,& Z) J- g. c4 U2 p4 ]0 A
                                void             *stack_start,
1 d' i4 q4 w! p2 w! c1 y' j' C+ d5 h                                rt_uint32_t       stack_size,
2 ]$ B! w# `  |$ l                                rt_uint8_t        priority,1 E# w+ B; }; E1 T) J, U+ q
                                rt_uint32_t       tick)
3 q: _, o' }! |7 V* N; |{
' F4 f/ y8 \5 |8 |" @    /* init thread list */
! ]2 c# v1 t' E    rt_list_init(&(thread->tlist));8 o8 a1 [! b: s5 [( P
    thread->entry = (void *)entry;( }, Z: I8 v2 ?- V) W
    thread->parameter = parameter;
& ?1 j5 f" l* k) \, y    /* stack init */
& I6 p/ w/ ]  c0 N0 @. ~    thread->stack_addr = stack_start;8 X# A7 s7 ~4 @5 Z* k6 Y
    thread->stack_size = stack_size;
8 a  F! i5 y5 N# O8 m    /* init thread stack */8 o  r) M6 ?6 n+ l. Y( k6 I  z
    rt_memset(thread->stack_addr, '#', thread->stack_size);
& ^$ p; b# F0 C- H1 a可以看到每个线程在初始化的会将整个栈空间设置为 #。
9 e  e( J0 r! `

该用户从未签到

3#
发表于 2022-8-16 15:21 | 只看该作者
同问,求结果
# Y5 e, R* R1 v5 B8 W

该用户从未签到

4#
发表于 2022-8-16 15:36 | 只看该作者
再看看别人是怎么说的
) z9 s% q  g! t7 ~( ?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

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

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

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

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