diff --git a/user/pctl/ls.c b/user/pctl/ls.c new file mode 100644 index 0000000..6e36cbd --- /dev/null +++ b/user/pctl/ls.c @@ -0,0 +1,19 @@ +#include +#include +#include +#include +#include +#include +#include + +void pctl_ls(void) { + uint64_t procslen = processctl(-1, PCTL_PLS_SZ, 0, 0, 0); + uprintf("%-80s %s %-6s\n", "NAME", "PID", "TYPE"); + for (size_t i = 0; i < procslen; i++) { + ProcStat stat = ZERO(&stat); + int32_t r = processctl(-1, PCTL_PLS_STAT, i, (uint64_t)&stat, 0); + if (r == E_OK) { + uprintf("%-80s %3lu %-6s\n", stat.name, stat.pid, stat.kern ? "KERNEL" : "USER"); + } + } +} diff --git a/user/pctl/ls.h b/user/pctl/ls.h new file mode 100644 index 0000000..5423c4b --- /dev/null +++ b/user/pctl/ls.h @@ -0,0 +1,6 @@ +#ifndef PCTL_LS_H_ +#define PCTL_LS_H_ + +void pctl_ls(void); + +#endif // PCTL_LS_H_ diff --git a/user/pctl/main.c b/user/pctl/main.c index ec0eb95..8edf89e 100644 --- a/user/pctl/main.c +++ b/user/pctl/main.c @@ -1,12 +1,9 @@ #include #include -#include -#include #include #include #include -#include -#include +#include "ls.h" void main(void) { if (argslen() == 0) { @@ -16,14 +13,7 @@ void main(void) { char *cmd = args()[0]; if (string_strcmp(cmd, "ls") == 0) { - uint64_t procslen = processctl(-1, PCTL_PLS_SZ, 0, 0, 0); - for (size_t i = 0; i < procslen; i++) { - ProcStat stat = ZERO(&stat); - int32_t r = processctl(-1, PCTL_PLS_STAT, i, (uint64_t)&stat, 0); - if (r == E_OK) { - uprintf("%-30s %lu %-6s\n", stat.name, stat.pid, stat.kern ? "KERNEL" : "USER"); - } - } + pctl_ls(); } else { uprintf("pctl: unknown command\n"); }