diff options
Diffstat (limited to 'components/finsh/cmd.c')
| -rw-r--r-- | components/finsh/cmd.c | 93 |
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 */ |
