diff --git a/nshlib/nsh_command.c b/nshlib/nsh_command.c index 0e3eb593b..22156b941 100644 --- a/nshlib/nsh_command.c +++ b/nshlib/nsh_command.c @@ -474,7 +474,8 @@ static const struct cmdmap_s g_cmdmap[] = #endif #ifndef CONFIG_NSH_DISABLE_PS - CMD_MAP("ps", cmd_ps, 1, 1, NULL), + CMD_MAP("ps", cmd_ps, 1, CONFIG_NSH_MAXARGUMENTS, + ""), #endif #ifdef CONFIG_NET_UDP diff --git a/nshlib/nsh_proccmds.c b/nshlib/nsh_proccmds.c index ab02f38f5..cfcb1190c 100644 --- a/nshlib/nsh_proccmds.c +++ b/nshlib/nsh_proccmds.c @@ -620,9 +620,6 @@ int cmd_exec(FAR struct nsh_vtbl_s *vtbl, int argc, FAR char **argv) #ifndef CONFIG_NSH_DISABLE_PS int cmd_ps(FAR struct nsh_vtbl_s *vtbl, int argc, FAR char **argv) { - UNUSED(argc); - UNUSED(argv); - nsh_output(vtbl, "%5s %5s " #ifdef CONFIG_SMP "%3s " @@ -665,6 +662,20 @@ int cmd_ps(FAR struct nsh_vtbl_s *vtbl, int argc, FAR char **argv) "COMMAND" ); + if (argc > 1) + { + int i; + for (i = 1; i < argc; i++) + { + struct dirent entry; + entry.d_type = DT_DIR; + strcpy(entry.d_name, argv[i]); + ps_callback(vtbl, CONFIG_NSH_PROC_MOUNTPOINT, &entry, NULL); + } + + return 0; + } + return nsh_foreach_direntry(vtbl, "ps", CONFIG_NSH_PROC_MOUNTPOINT, ps_callback, NULL); }