From 02a0da51c3add6ac1448e1eb023699d57d67f477 Mon Sep 17 00:00:00 2001 From: Stanley Lwin <98496195+byte-me-stan@users.noreply.github.com> Date: Sun, 3 Jul 2022 18:38:50 -0700 Subject: [PATCH] List command (#6134) * initial commit for list cmd --- components/finsh/cmd.c | 106 ++++++++++++++++++++++++++++++++++++++++- 1 file changed, 105 insertions(+), 1 deletion(-) diff --git a/components/finsh/cmd.c b/components/finsh/cmd.c index 70cd934f64..799d7b3d51 100644 --- a/components/finsh/cmd.c +++ b/components/finsh/cmd.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2006-2021, RT-Thread Development Team + * Copyright (c) 2006-2022, RT-Thread Development Team * * SPDX-License-Identifier: Apache-2.0 * @@ -29,6 +29,7 @@ * 2018-12-27 Jesven Fix the problem that disable interrupt too long in list_thread * Provide protection for the "first layer of objects" when list_* * 2020-04-07 chenhui add clear + * 2022-07-02 Stanley Lwin add list command */ #include @@ -887,4 +888,107 @@ long list_device(void) MSH_CMD_EXPORT(list_device, list device in system); #endif +int cmd_list(int argc, char **argv) +{ + if(argc == 2) + { + if(strcmp(argv[1], "thread") == 0) + { + list_thread(); + } + else if(strcmp(argv[1], "timer") == 0) + { + list_timer(); + } +#ifdef RT_USING_SEMAPHORE + else if(strcmp(argv[1], "sem") == 0) + { + list_sem(); + } +#endif /* RT_USING_SEMAPHORE */ +#ifdef RT_USING_EVENT + else if(strcmp(argv[1], "event") == 0) + { + list_event(); + } +#endif /* RT_USING_EVENT */ +#ifdef RT_USING_MUTEX + else if(strcmp(argv[1], "mutex") == 0) + { + list_mutex(); + } +#endif /* RT_USING_MUTEX */ +#ifdef RT_USING_MAILBOX + else if(strcmp(argv[1], "mailbox") == 0) + { + list_mailbox(); + } +#endif /* RT_USING_MAILBOX */ +#ifdef RT_USING_MESSAGEQUEUE + else if(strcmp(argv[1], "msgqueue") == 0) + { + list_msgqueue(); + } +#endif /* RT_USING_MESSAGEQUEUE */ +#ifdef RT_USING_MEMPOOL + else if(strcmp(argv[1], "mempool") == 0) + { + list_mempool(); + } +#endif /* RT_USING_MEMPOOL */ +#ifdef RT_USING_DEVICE + else if(strcmp(argv[1], "device") == 0) + { + list_device(); + } +#endif /* RT_USING_DEVICE */ +#ifdef RT_USING_DFS + else if(strcmp(argv[1], "fd") == 0) + { + extern int list_fd(void); + list_fd(); + } +#endif /* RT_USING_DFS */ + else + { + goto _usage; + } + + return 0; + } + +_usage: + rt_kprintf("Usage: list [options]\n"); + rt_kprintf("[options]:\n"); + rt_kprintf(" thread - list threads\n"); + rt_kprintf(" timer - list timers\n"); +#ifdef RT_USING_SEMAPHORE + rt_kprintf(" sem - list semaphores\n"); +#endif /* RT_USING_SEMAPHORE */ +#ifdef RT_USING_MUTEX + rt_kprintf(" mutex - list mutexs\n"); +#endif /* RT_USING_MUTEX */ +#ifdef RT_USING_EVENT + rt_kprintf(" event - list events\n"); +#endif /* RT_USING_EVENT */ +#ifdef RT_USING_MAILBOX + rt_kprintf(" mailbox - list mailboxs\n"); +#endif /* RT_USING_MAILBOX */ +#ifdef RT_USING_MESSAGEQUEUE + rt_kprintf(" msgqueue - list message queues\n"); +#endif /* RT_USING_MESSAGEQUEUE */ +#ifdef RT_USING_MEMPOOL + rt_kprintf(" mempool - list memory pools\n"); +#endif /* RT_USING_MEMPOOL */ +#ifdef RT_USING_DEVICE + rt_kprintf(" device - list devices\n"); +#endif /* RT_USING_DEVICE */ +#ifdef RT_USING_DFS + rt_kprintf(" fd - list file descriptors\n"); +#endif /* RT_USING_DFS */ + + return 0; +} +MSH_CMD_EXPORT_ALIAS(cmd_list, list, list objects); + #endif /* RT_USING_FINSH */ -- GitLab