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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
打印的max used百分比信息不变,是只打印最大的使用率,不打印实时的?程序不响应任何事件,线程60%,响应事件后75%;然后线程回到不响应的状态。但是打印的还是75%
) Q5 r9 m2 B. D0 P$ f! i+ }

该用户从未签到

4#
发表于 2022-8-16 15:36 | 只看该作者
再看看别人是怎么说的+ c" f5 j; H9 c2 D8 ^7 T! I" J  b

该用户从未签到

3#
发表于 2022-8-16 15:21 | 只看该作者
同问,求结果" K4 k# ?: e( Q  j. N, A

该用户从未签到

2#
发表于 2022-8-16 14:27 | 只看该作者
计算代码如下8 i. r" Y  ^. _* Z/ a* u: r
9 _! G! |/ _- z) z( E* Y) V1 x
                    while (*ptr == '#')ptr ++;  m8 r5 N6 s$ T- J4 r: S
                    rt_kprintf(" 0x%08x 0x%08x    %02d%%   0x%08x %03d\n",
7 T2 Y. e/ j* U3 w                            thread->stack_size + ((rt_ubase_t)thread->stack_addr - (rt_ubase_t)thread->sp),  M+ [1 p7 e& f4 Q* P# T2 I, P9 G1 R
                            thread->stack_size,) N0 E4 i; C" J1 Y* g% w
                            (thread->stack_size - ((rt_ubase_t) ptr - (rt_ubase_t) thread->stack_addr)) * 100: M$ _9 p. l+ p* P+ H
                            / thread->stack_size,4 n  y# I( s8 a5 f7 L
                            thread->remaining_tick,
" s9 o# M5 {( n# I% M( M) I                            thread->error);
9 C. |1 P# w) ~/ [& E( B7 k9 _(thread->stack_size - ((rt_ubase_t) ptr - (rt_ubase_t) thread->stack_addr)) * 100 可以看出是线程栈的大小 减去 ptr 相对于 栈起始地址的大小 然后得到一个 百分比。. l6 a& V/ _! l

1 a% E. s: c6 `* r; J, o进一步分析 ptr 的位置在哪里,通过上面的代码第一行可以看到,通过 # 来进行的判断。
' }4 P% H# G9 y- Q( A' P: R9 X* F) w, k
在进一步分析 # 从何而来
9 b- M! m6 Q  k: h6 L. O! D5 e$ v- C6 w
static rt_err_t _rt_thread_init(struct rt_thread *thread," Z3 ?! L0 o) X) z" u
                                const char       *name,
4 g4 ^8 h& Y  H0 U  \                                void (*entry)(void *parameter),* I) {) ~; H) X9 n5 J" S" R8 Z8 T2 }
                                void             *parameter,
5 d* X( Y6 I& |6 G4 d8 [2 q                                void             *stack_start,
* g; W: S/ h0 E4 M5 Q7 z* E! _                                rt_uint32_t       stack_size,
! S# R+ k. u1 r" E" q% k" P                                rt_uint8_t        priority,
) v8 F# u% B3 i5 C7 b# h                                rt_uint32_t       tick)
; Z+ j3 ^+ w$ |  c7 W{; i+ R6 K7 S/ c' C
    /* init thread list */% w; b! C' L0 l4 Z
    rt_list_init(&(thread->tlist));
- p9 s9 ^% n5 K) ^7 a/ I    thread->entry = (void *)entry;( [1 f. U: H# w' r3 `) P! a! @, r
    thread->parameter = parameter;9 I: w4 Y; I: ~4 f3 p
    /* stack init */
8 f7 K4 [/ _# o; a, v    thread->stack_addr = stack_start;
. a3 [$ j1 r! i# L    thread->stack_size = stack_size;
2 M) X0 x. F3 N* A6 C1 _    /* init thread stack */. D1 P3 I4 R. w& i! \% D, T
    rt_memset(thread->stack_addr, '#', thread->stack_size);: @8 {" E+ ^+ t0 x, a6 O
可以看到每个线程在初始化的会将整个栈空间设置为 #。
& H0 O7 X) _" _" }( |
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

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

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

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

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