summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStanley Lwin <[email protected]>2022-07-03 18:38:50 -0700
committerGitHub <[email protected]>2022-07-04 09:38:50 +0800
commit02a0da51c3add6ac1448e1eb023699d57d67f477 (patch)
tree28f027ce220a0e0190324e1fe1c92295112810a5
parent9623706effd3f2e3dd1315daa13bc8d0eea168c3 (diff)
List command (#6134)
* initial commit for list cmd
-rw-r--r--components/finsh/cmd.c106
1 files changed, 105 insertions, 1 deletions
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 <rthw.h>
@@ -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 */