@@ -165,6 +165,7 @@ long list_thread(void)
165165 rt_list_t * next = (rt_list_t * )RT_NULL ;
166166 const char * item_title = "thread" ;
167167 const size_t tcb_strlen = sizeof (void * ) * 2 + 2 ;
168+ const size_t usage_strlen = sizeof (void * ) + 1 ;
168169 int maxlen ;
169170
170171 list_find_init (& find_arg , RT_Object_Class_Thread , obj_list , sizeof (obj_list ) / sizeof (obj_list [0 ]));
@@ -173,18 +174,22 @@ long list_thread(void)
173174 maxlen = RT_NAME_MAX ;
174175
175176#ifdef RT_USING_SMP
176- rt_kprintf ("%-*.*s cpu bind pri status sp stack size max used left tick error tcb addr\n" , maxlen , maxlen , item_title );
177+ rt_kprintf ("%-*.*s cpu bind pri status sp stack size max used left tick error tcb addr usage \n" , maxlen , maxlen , item_title );
177178 object_split (maxlen );
178179 rt_kprintf (" --- ---- --- ------- ---------- ---------- ------ ---------- -------" );
179180 rt_kprintf (" " );
180181 object_split (tcb_strlen );
182+ rt_kprintf (" " );
183+ object_split (usage_strlen );
181184 rt_kprintf ("\n" );
182185#else
183- rt_kprintf ("%-*.*s pri status sp stack size max used left tick error tcb addr\n" , maxlen , maxlen , item_title );
186+ rt_kprintf ("%-*.*s pri status sp stack size max used left tick error tcb addr usage \n" , maxlen , maxlen , item_title );
184187 object_split (maxlen );
185188 rt_kprintf (" --- ------- ---------- ---------- ------ ---------- -------" );
186189 rt_kprintf (" " );
187190 object_split (tcb_strlen );
191+ rt_kprintf (" " );
192+ object_split (usage_strlen );
188193 rt_kprintf ("\n" );
189194#endif /*RT_USING_SMP*/
190195
@@ -243,24 +248,34 @@ long list_thread(void)
243248 ptr = (rt_uint8_t * )thread -> stack_addr + thread -> stack_size - 1 ;
244249 while (* ptr == '#' )ptr -- ;
245250
246- rt_kprintf (" 0x%08x 0x%08x %02d%% 0x%08x %s %p\n " ,
251+ rt_kprintf (" 0x%08x 0x%08x %02d%% 0x%08x %s %p" ,
247252 ((rt_ubase_t )thread -> sp - (rt_ubase_t )thread -> stack_addr ),
248253 thread -> stack_size ,
249254 ((rt_ubase_t )ptr - (rt_ubase_t )thread -> stack_addr ) * 100 / thread -> stack_size ,
250255 thread -> remaining_tick ,
251256 rt_strerror (thread -> error ),
252257 thread );
258+ #ifdef RT_USING_CPU_USAGE_TRACER
259+ rt_kprintf (" %3d%%\n" , rt_thread_get_usage (thread ));
260+ #else
261+ rt_kprintf (" N/A\n" );
262+ #endif
253263#else
254264 ptr = (rt_uint8_t * )thread -> stack_addr ;
255265 while (* ptr == '#' ) ptr ++ ;
256- rt_kprintf (" 0x%08x 0x%08x %02d%% 0x%08x %s %p\n " ,
266+ rt_kprintf (" 0x%08x 0x%08x %02d%% 0x%08x %s %p" ,
257267 thread -> stack_size + ((rt_ubase_t )thread -> stack_addr - (rt_ubase_t )thread -> sp ),
258268 thread -> stack_size ,
259269 (thread -> stack_size - ((rt_ubase_t ) ptr - (rt_ubase_t ) thread -> stack_addr )) * 100
260270 / thread -> stack_size ,
261271 RT_SCHED_PRIV (thread ).remaining_tick ,
262272 rt_strerror (thread -> error ),
263273 thread );
274+ #ifdef RT_USING_CPU_USAGE_TRACER
275+ rt_kprintf (" %3d%%\n" , rt_thread_get_usage (thread ));
276+ #else
277+ rt_kprintf (" N/A\n" );
278+ #endif
264279#endif
265280 }
266281 }
0 commit comments