summaryrefslogtreecommitdiff
path: root/components/finsh/cmd.c
diff options
context:
space:
mode:
Diffstat (limited to 'components/finsh/cmd.c')
-rw-r--r--components/finsh/cmd.c93
1 files changed, 92 insertions, 1 deletions
diff --git a/components/finsh/cmd.c b/components/finsh/cmd.c
index c3b0760f6a..4dc21f404f 100644
--- a/components/finsh/cmd.c
+++ b/components/finsh/cmd.c
@@ -39,6 +39,7 @@
#ifdef RT_USING_FINSH
#include <finsh.h>
+#define LIST_DFS_OPT_ID 0x100
#define LIST_FIND_OBJ_NR 8
static long clear(void)
@@ -903,6 +904,7 @@ long list_device(void)
}
#endif /* RT_USING_DEVICE */
+#ifndef FINSH_USING_OPTION_COMPLETION
int cmd_list(int argc, char **argv)
{
if(argc == 2)
@@ -1013,6 +1015,95 @@ _usage:
return 0;
}
-MSH_CMD_EXPORT_ALIAS(cmd_list, list, list objects);
+
+#else
+CMD_OPTIONS_STATEMENT(cmd_list)
+int cmd_list(int argc, char **argv)
+{
+ if (argc == 2)
+ {
+ switch (MSH_OPT_ID_GET(cmd_list))
+ {
+ case RT_Object_Class_Thread: list_thread(); break;
+ case RT_Object_Class_Timer: list_timer(); break;
+#ifdef RT_USING_SEMAPHORE
+ case RT_Object_Class_Semaphore: list_sem(); break;
+#endif /* RT_USING_SEMAPHORE */
+#ifdef RT_USING_EVENT
+ case RT_Object_Class_Event: list_event(); break;
+#endif /* RT_USING_EVENT */
+#ifdef RT_USING_MUTEX
+ case RT_Object_Class_Mutex: list_mutex(); break;
+#endif /* RT_USING_MUTEX */
+#ifdef RT_USING_MAILBOX
+ case RT_Object_Class_MailBox: list_mailbox(); break;
+#endif /* RT_USING_MAILBOX */
+#ifdef RT_USING_MESSAGEQUEUE
+ case RT_Object_Class_MessageQueue: list_msgqueue(); break;
+#endif /* RT_USING_MESSAGEQUEUE */
+#ifdef RT_USING_MEMHEAP
+ case RT_Object_Class_MemHeap: list_memheap(); break;
+#endif /* RT_USING_MEMHEAP */
+#ifdef RT_USING_MEMPOOL
+ case RT_Object_Class_MemPool: list_mempool(); break;
+#endif /* RT_USING_MEMPOOL */
+#ifdef RT_USING_DEVICE
+ case RT_Object_Class_Device: list_device(); break;
+#endif /* RT_USING_DEVICE */
+#ifdef RT_USING_DFS
+ case LIST_DFS_OPT_ID:
+ {
+ extern int list_fd(void);
+ list_fd();
+ break;
+ }
+#endif /* RT_USING_DFS */
+ default:
+ goto _usage;
+ break;
+ };
+
+ return 0;
+ }
+
+_usage:
+ rt_kprintf("Usage: list [options]\n");
+ rt_kprintf("[options]:\n");
+ MSH_OPT_DUMP(cmd_list);
+ return 0;
+}
+CMD_OPTIONS_NODE_START(cmd_list)
+CMD_OPTIONS_NODE(RT_Object_Class_Thread, thread, list threads)
+CMD_OPTIONS_NODE(RT_Object_Class_Timer, timer, list timers)
+#ifdef RT_USING_SEMAPHORE
+CMD_OPTIONS_NODE(RT_Object_Class_Semaphore, sem, list semaphores)
+#endif /* RT_USING_SEMAPHORE */
+#ifdef RT_USING_EVENT
+CMD_OPTIONS_NODE(RT_Object_Class_Event, event, list events)
+#endif /* RT_USING_EVENT */
+#ifdef RT_USING_MUTEX
+CMD_OPTIONS_NODE(RT_Object_Class_Mutex, mutex, list mutexs)
+#endif /* RT_USING_MUTEX */
+#ifdef RT_USING_MAILBOX
+CMD_OPTIONS_NODE(RT_Object_Class_MailBox, mailbox, list mailboxs)
+#endif /* RT_USING_MAILBOX */
+#ifdef RT_USING_MESSAGEQUEUE
+CMD_OPTIONS_NODE(RT_Object_Class_MessageQueue, msgqueue, list message queues)
+#endif /* RT_USING_MESSAGEQUEUE */
+#ifdef RT_USING_MEMHEAP
+CMD_OPTIONS_NODE(RT_Object_Class_MemHeap, memheap, list memory heaps)
+#endif /* RT_USING_MEMHEAP */
+#ifdef RT_USING_MEMPOOL
+CMD_OPTIONS_NODE(RT_Object_Class_MemPool, mempool, list memory pools)
+#endif /* RT_USING_MEMPOOL */
+#ifdef RT_USING_DEVICE
+CMD_OPTIONS_NODE(RT_Object_Class_Device, device, list devices)
+#endif /* RT_USING_DEVICE */
+#ifdef RT_USING_DFS
+CMD_OPTIONS_NODE(LIST_DFS_OPT_ID, fd, list file descriptors)
+#endif /* RT_USING_DFS */
+CMD_OPTIONS_NODE_END
+#endif /* FINSH_USING_OPTION_COMPLETION */
+MSH_CMD_EXPORT_ALIAS(cmd_list, list, list objects, optenable);
#endif /* RT_USING_FINSH */