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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
打印的max used百分比信息不变,是只打印最大的使用率,不打印实时的?程序不响应任何事件,线程60%,响应事件后75%;然后线程回到不响应的状态。但是打印的还是75%4 ^1 d5 B6 d* U! k

该用户从未签到

2#
发表于 2022-8-16 14:27 | 只看该作者
计算代码如下( P6 h7 Q- M! `+ Q$ G
' [) B/ j: }, i! N2 Y
                    while (*ptr == '#')ptr ++;
) `- b2 {( P; Y8 e& Z                    rt_kprintf(" 0x%08x 0x%08x    %02d%%   0x%08x %03d\n",6 o7 E, y! ^0 U# L' b9 _
                            thread->stack_size + ((rt_ubase_t)thread->stack_addr - (rt_ubase_t)thread->sp),
5 i& p+ L, b, H( ]( ?                            thread->stack_size,; R5 ?' X" L, w
                            (thread->stack_size - ((rt_ubase_t) ptr - (rt_ubase_t) thread->stack_addr)) * 100; x# Z) N2 u! N# L
                            / thread->stack_size,, H; @8 N/ n5 O9 m
                            thread->remaining_tick,* {. b# a' Q# {1 ^1 Q3 i
                            thread->error);9 Y9 O0 L5 {: O# m4 m8 d
(thread->stack_size - ((rt_ubase_t) ptr - (rt_ubase_t) thread->stack_addr)) * 100 可以看出是线程栈的大小 减去 ptr 相对于 栈起始地址的大小 然后得到一个 百分比。( e3 c7 X  O  ~1 s+ p! m

9 X# g$ F/ \# {5 |! v. O进一步分析 ptr 的位置在哪里,通过上面的代码第一行可以看到,通过 # 来进行的判断。
8 v% S7 D1 u) B! V1 L0 X
% X! K# \9 b- f$ \3 c4 h8 k  b! C, r在进一步分析 # 从何而来
& y/ S7 i+ H& T
! L! s- ^( `" E( hstatic rt_err_t _rt_thread_init(struct rt_thread *thread,
8 X1 a- j6 u. d  C& q! w                                const char       *name,
1 v7 {0 s7 F+ w4 l' S4 B7 g                                void (*entry)(void *parameter),
- f2 `. E* v' R+ B! [3 n2 O2 T, ]                                void             *parameter,) u" A( {# V) M+ N; W
                                void             *stack_start,+ |1 ~( o' P# v! A
                                rt_uint32_t       stack_size,, `3 a9 D; f6 ]2 v* `
                                rt_uint8_t        priority,8 U- t, K) I5 e3 p" `$ x" M
                                rt_uint32_t       tick)
. B  u6 d2 d) h, ]+ E; G: M. H{4 L1 P$ G- r" @
    /* init thread list */
& j  i/ C+ T6 x. D    rt_list_init(&(thread->tlist));
2 H) Z, v& ^- t! k, M2 E1 O: `* a2 f    thread->entry = (void *)entry;
1 y) l; h* R. a- @    thread->parameter = parameter;
( L; ~2 L" t9 r. l& p    /* stack init */
$ j  s' K; M. F5 o0 D" Q: f7 q7 Q    thread->stack_addr = stack_start;4 W6 y( x" _( V3 r, r
    thread->stack_size = stack_size;
0 C1 _6 T$ v) N$ h% p* Y6 m    /* init thread stack */1 V) s6 e+ ^! D# u% h6 E
    rt_memset(thread->stack_addr, '#', thread->stack_size);
  s+ _' z4 Y  {7 u可以看到每个线程在初始化的会将整个栈空间设置为 #。' H5 K% @* h$ l

该用户从未签到

3#
发表于 2022-8-16 15:21 | 只看该作者
同问,求结果( I( ~6 Q8 R( Y2 e( F

该用户从未签到

4#
发表于 2022-8-16 15:36 | 只看该作者
再看看别人是怎么说的2 a: q9 f# X/ v4 l9 P6 e
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

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

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

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

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