From ac0d27186310041af90c2c0c164f5b09cc123c2d Mon Sep 17 00:00:00 2001 From: Bernard Xiong Date: Wed, 2 Jun 2021 10:32:34 +0800 Subject: [PATCH] [shell] Remove top command --- components/finsh/cmd.c | 185 ----------------------------------------- 1 file changed, 185 deletions(-) diff --git a/components/finsh/cmd.c b/components/finsh/cmd.c index 1af66f8eeb..2d136814e8 100644 --- a/components/finsh/cmd.c +++ b/components/finsh/cmd.c @@ -893,189 +893,4 @@ long list(void) } MSH_CMD_EXPORT(list, list all symbol in system) -#ifdef RT_USING_LWP -#include -#ifdef RT_USING_USERSPACE -#include -#endif - -#ifdef RT_USING_HEAP -extern void list_mem(void); -extern long list_memheap(void); -#endif - -static rt_ubase_t rt_tick_mark = 0; -static char top_ch; - -static void top_tick_hook(void) -{ - rt_base_t level; - struct rt_thread *thread; - - level = rt_hw_interrupt_disable(); - thread = rt_thread_self(); - if (thread) - { - if (thread->tick_mark != rt_tick_mark) - { - thread->run_tick = 0; - thread->tick_mark = rt_tick_mark; - } - thread->run_tick++; - } - rt_hw_interrupt_enable(level); -} - -static void top_getchar_entry(void* parameter) -{ - rt_sem_t sem = (rt_sem_t)parameter; - while (1) - { - top_ch = getchar(); - rt_sem_release(sem); - if (top_ch == 'q') - { - break; - } - } -} - -long top(void) -{ - rt_thread_t tid; - list_get_next_t find_arg; - rt_list_t *next = (rt_list_t*)RT_NULL; - rt_list_t *obj_list[LIST_FIND_OBJ_NR]; - const char *item_title = "THREAD"; - int maxlen; - rt_sem_t top_char_sem; - - rt_base_t level; - - top_ch = 0; - top_char_sem = rt_sem_create("top_char", 0, RT_IPC_FLAG_FIFO); - tid = rt_thread_create("top_getchar", top_getchar_entry, top_char_sem, - 1024, 2, 10); - if (tid) - { - rt_thread_startup(tid); - } - - while (1) - { - rt_ubase_t tick_diff; - rt_ubase_t wait_tick; - - level = rt_hw_interrupt_disable(); - rt_tick_mark = rt_tick_get(); - rt_tick_sethook(top_tick_hook); - rt_hw_interrupt_enable(level); - - wait_tick = RT_TICK_PER_SECOND + rt_tick_mark; - - while (rt_tick_get() < wait_tick) - { - rt_sem_take(top_char_sem, wait_tick - rt_tick_get()); - if (top_ch == 'q') - { - rt_sem_delete(top_char_sem); - level = rt_hw_interrupt_disable(); - rt_tick_sethook(0); - rt_hw_interrupt_enable(level); - return 0; - } - } - - level = rt_hw_interrupt_disable(); - rt_tick_sethook(0); - rt_hw_interrupt_enable(level); - - tick_diff = rt_tick_get() - rt_tick_mark; - - list_find_init(&find_arg, RT_Object_Class_Thread, obj_list, sizeof(obj_list)/sizeof(obj_list[0])); - maxlen = RT_NAME_MAX; - rt_kprintf("\033[2J"); - -#ifdef RT_USING_HEAP -#ifdef RT_USING_MEMHEAP_AS_HEAP - list_memheap(); -#else - list_mem(); -#endif -#endif - object_split(maxlen); - rt_kprintf( "----------------\n"); - rt_kprintf("%-*.s PID PRI A %%CPU VIRT\n", maxlen, item_title); object_split(maxlen); - rt_kprintf( " ----- --- - ---- ----\n"); - do - { - next = list_get_next(next, &find_arg); - { - int i; - for (i = 0; i < find_arg.nr_out; i++) - { - struct rt_object *obj; - struct rt_thread thread_info, *thread; - - obj = rt_list_entry(obj_list[i], struct rt_object, list); - level = rt_hw_interrupt_disable(); - - if ((obj->type & ~RT_Object_Class_Static) != find_arg.type) - { - rt_hw_interrupt_enable(level); - continue; - } - /* copy info */ - memcpy(&thread_info, obj, sizeof thread_info); - rt_hw_interrupt_enable(level); - - thread = (struct rt_thread*)obj; - { - if (thread->tick_mark != rt_tick_mark) - { - thread->run_tick = 0; - } - - level = rt_hw_interrupt_disable(); - if (thread->lwp) - { - pid_t pid; - struct rt_lwp *lwp; - - lwp = (struct rt_lwp*)thread->lwp; - lwp_ref_inc(lwp); - rt_hw_interrupt_enable(level); - pid = lwp_to_pid(lwp); - rt_kprintf("%-*.*s %5d %3d ", maxlen, RT_NAME_MAX, thread->name, pid, thread->current_priority); -#ifdef RT_USING_USERSPACE - { - size_t virt; - - level = rt_hw_interrupt_disable(); - virt = lwp_vmem_count(lwp->map_area); - rt_hw_interrupt_enable(level); - rt_kprintf(" U %3d 0x%08x\n", thread->run_tick * 100/tick_diff, virt); - } -#else - rt_kprintf(" U %3d\n", thread->run_tick * 100/tick_diff); -#endif - lwp_ref_dec(lwp); - } - else - { - rt_hw_interrupt_enable(level); - rt_kprintf("%-*.*s %3d ", maxlen, RT_NAME_MAX, thread->name, thread->current_priority); - rt_kprintf(" K %3d\n", thread->run_tick * 100/tick_diff); - } - } - } - } - } - while (next != (rt_list_t*)RT_NULL); - } - return 0; -} -MSH_CMD_EXPORT(top, disaplay system info); -#endif /* end of RT_USING_LWP */ - #endif /* RT_USING_FINSH */ -- Gitee