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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
打印的max used百分比信息不变,是只打印最大的使用率,不打印实时的?程序不响应任何事件,线程60%,响应事件后75%;然后线程回到不响应的状态。但是打印的还是75%
3 m& l+ Y% F) l6 J% N

该用户从未签到

2#
发表于 2022-8-16 14:27 | 只看该作者
计算代码如下7 E4 `) }/ s: D  I6 n
4 o3 V4 z6 A7 \  M) {
                    while (*ptr == '#')ptr ++;
6 H1 n) z0 z- o3 `# C4 A# r                    rt_kprintf(" 0x%08x 0x%08x    %02d%%   0x%08x %03d\n",
4 q9 s  j, v! K  i; V8 `& G                            thread->stack_size + ((rt_ubase_t)thread->stack_addr - (rt_ubase_t)thread->sp),
5 ]" q, E, T# ~8 O; O% \                            thread->stack_size,, Y0 t. o! g5 F/ d4 F9 \
                            (thread->stack_size - ((rt_ubase_t) ptr - (rt_ubase_t) thread->stack_addr)) * 100
3 p0 A! }3 y. m* g) H                            / thread->stack_size,
' u% v% J# `2 l2 h) L' V. Y                            thread->remaining_tick,2 t  h0 Z' A% c9 W4 b7 d
                            thread->error);
! N+ e+ ^% d; b, U# S& p! C(thread->stack_size - ((rt_ubase_t) ptr - (rt_ubase_t) thread->stack_addr)) * 100 可以看出是线程栈的大小 减去 ptr 相对于 栈起始地址的大小 然后得到一个 百分比。
- Z  W+ h. E' V
/ K, }0 j9 k8 e9 L+ _进一步分析 ptr 的位置在哪里,通过上面的代码第一行可以看到,通过 # 来进行的判断。
5 G- X* N9 N7 m+ y6 A# M6 {
* a$ c7 t' L0 f, a6 I3 p在进一步分析 # 从何而来
  K6 u: M- E; v0 j+ [* t. D- M
' ]) t1 d" R! w4 T) e* u& Hstatic rt_err_t _rt_thread_init(struct rt_thread *thread,
; o/ v  m6 e) k! Z8 N                                const char       *name,, z' H; H. n& u' z) q( ^7 w
                                void (*entry)(void *parameter),
( H, X  y! k* H7 f. r                                void             *parameter,3 W- ]& H' E4 l9 n
                                void             *stack_start,
1 z9 C& F: g4 n0 X# \% f                                rt_uint32_t       stack_size,
- l' L# ^6 J3 q5 q: i% e% f                                rt_uint8_t        priority,
+ O8 s4 v* Y# k* x# o2 b9 Q; h" `                                rt_uint32_t       tick)* x! b- G  O4 j  G9 i
{
8 I7 h2 X: k9 d6 C    /* init thread list */
! W+ |7 n& A; L/ E" B7 L' v    rt_list_init(&(thread->tlist));3 X4 h* b. t/ ^" J  M0 Q
    thread->entry = (void *)entry;( K( I" S4 D* C8 ]' U
    thread->parameter = parameter;
6 Q3 J$ N7 r5 o8 h5 V* P8 p    /* stack init */1 G2 Y4 S8 t' O" ^  O1 H9 E5 `8 |
    thread->stack_addr = stack_start;
6 y, ~9 O) e% y2 y    thread->stack_size = stack_size;
9 C, @2 L+ q% R: c' ~7 W- f    /* init thread stack */
* H3 L: [4 p: h$ ]0 z/ |7 `    rt_memset(thread->stack_addr, '#', thread->stack_size);
2 ?" k9 M3 g: O; [0 e可以看到每个线程在初始化的会将整个栈空间设置为 #。; T8 y* i5 y+ h, A

该用户从未签到

3#
发表于 2022-8-16 15:21 | 只看该作者
同问,求结果- i% X0 [% y$ ^0 B# j5 f$ S

该用户从未签到

4#
发表于 2022-8-16 15:36 | 只看该作者
再看看别人是怎么说的
/ L$ v0 _% y! i$ F
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-11-23 20:09 , Processed in 0.140625 second(s), 23 queries , Gzip On.

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

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

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