EDA365电子论坛网
标题:
list_thread()打印的是历史最大使用率还是实时的?
[打印本页]
作者:
three
时间:
2022-8-16 13:48
标题:
list_thread()打印的是历史最大使用率还是实时的?
打印的max used百分比信息不变,是只打印最大的使用率,不打印实时的?程序不响应任何事件,线程60%,响应事件后75%;然后线程回到不响应的状态。但是打印的还是75%
6 w6 f! k- |" P1 F, {! W8 K r
作者:
rergr
时间:
2022-8-16 14:27
计算代码如下
/ s+ [) i$ w* }
( [( Z: I2 @" X O; M# r2 J4 w" Z- z! |4 q
while (*ptr == '#')ptr ++;
+ C# b: G0 `2 K) P5 J J \& F
rt_kprintf(" 0x%08x 0x%08x %02d%% 0x%08x %03d\n",
+ S5 j6 D2 `! P
thread->stack_size + ((rt_ubase_t)thread->stack_addr - (rt_ubase_t)thread->sp),
1 q( z/ a# k6 R+ G
thread->stack_size,
" H W9 e9 A9 r1 J. a! Y
(thread->stack_size - ((rt_ubase_t) ptr - (rt_ubase_t) thread->stack_addr)) * 100
! v, E, z% a5 z' c( M8 V
/ thread->stack_size,
1 ?. b9 [* g+ |2 ^" j
thread->remaining_tick,
% W6 `' [* X% }( [! u7 H5 y& ^" `
thread->error);
& q* O% u" Z2 K4 m0 O
(thread->stack_size - ((rt_ubase_t) ptr - (rt_ubase_t) thread->stack_addr)) * 100 可以看出是线程栈的大小 减去 ptr 相对于 栈起始地址的大小 然后得到一个 百分比。
! v3 g( `- A3 c; i% k
1 z( f5 o% \, X
进一步分析 ptr 的位置在哪里,通过上面的代码第一行可以看到,通过 # 来进行的判断。
/ [3 F( z$ T9 N. B, ] }- I8 N
( V, C) L' d" v. L
在进一步分析 # 从何而来
; Q( ]5 s3 Z$ C
2 L; u q/ G3 l, p
static rt_err_t _rt_thread_init(struct rt_thread *thread,
% V a0 R. o0 P) ~8 h
const char *name,
7 i/ C8 E2 j" @/ e4 O1 h: t v
void (*entry)(void *parameter),
. K/ v) q& Z+ D
void *parameter,
& ]5 K5 N5 V! J0 F/ g
void *stack_start,
6 ]0 K( n6 e6 l6 f* g m$ f8 Q
rt_uint32_t stack_size,
% t! [3 ~) g0 U6 I8 t1 _
rt_uint8_t priority,
8 e, ]- @! S2 g! j5 S3 D
rt_uint32_t tick)
" k W1 k9 ~' {- h
{
+ _0 ]4 _2 q9 G( y' A
/* init thread list */
, u! r2 v: [0 `8 M, g3 J
rt_list_init(&(thread->tlist));
( n4 f+ V, c+ o) O5 \
thread->entry = (void *)entry;
/ r( o, Z0 L$ K# U! W
thread->parameter = parameter;
+ d) h, o4 i" o7 S6 g( u
/* stack init */
& g! _3 X: a3 I7 r: Y. ^) R
thread->stack_addr = stack_start;
8 a5 f1 ]7 O2 {+ z [; J
thread->stack_size = stack_size;
7 I6 [0 z& o, j3 Q" X
/* init thread stack */
8 o. C [4 \* J" y
rt_memset(thread->stack_addr, '#', thread->stack_size);
) g& j1 i+ r$ @% G Z
可以看到每个线程在初始化的会将整个栈空间设置为 #。
! w( u# _8 j" h0 o4 e; `
作者:
芦根苏木
时间:
2022-8-16 15:21
同问,求结果
9 l# K- ~7 g# \
作者:
Memory00
时间:
2022-8-16 15:36
再看看别人是怎么说的
6 z. }! S# E0 M4 ~3 V5 i3 u5 F
欢迎光临 EDA365电子论坛网 (https://bbs.eda365.com/)
Powered by Discuz! X3.2