1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-25 19:47:44 +00:00

Improve ps output.

This commit is contained in:
Andreas Kling 2018-10-29 23:02:07 +01:00
parent b1ff62f605
commit 4259ffb080

View file

@ -178,19 +178,35 @@ ByteBuffer procfs$kmalloc()
return buffer; return buffer;
} }
static const char* toString(Task::State state)
{
switch (state) {
case Task::Invalid: return "Invalid";
case Task::Runnable: return "Runnable";
case Task::Running: return "Running";
case Task::Terminated: return "Term";
case Task::Crashing: return "Crash";
case Task::Exiting: return "Exit";
case Task::BlockedSleep: return "Sleep";
case Task::BlockedWait: return "Wait";
case Task::BlockedRead: return "Read";
}
ASSERT_NOT_REACHED();
return nullptr;
}
ByteBuffer procfs$summary() ByteBuffer procfs$summary()
{ {
InterruptDisabler disabler; InterruptDisabler disabler;
auto tasks = Task::allTasks(); auto tasks = Task::allTasks();
auto buffer = ByteBuffer::createUninitialized(tasks.size() * 256); auto buffer = ByteBuffer::createUninitialized(tasks.size() * 256);
char* ptr = (char*)buffer.pointer(); char* ptr = (char*)buffer.pointer();
ptr += ksprintf(ptr, "PID OWNER STATE PPID NSCHED FDS NAME\n"); ptr += ksprintf(ptr, "PID OWNER STATE PPID NSCHED FDS NAME\n");
for (auto* task : tasks) { for (auto* task : tasks) {
ptr += ksprintf(ptr, "%w %w:%w %b %w %x %w %s\n", ptr += ksprintf(ptr, "% 5u % 4u % 8s % 5u % 10u % 3u %s\n",
task->pid(), task->pid(),
task->uid(), task->uid(),
task->gid(), toString(task->state()),
task->state(),
task->parentPID(), task->parentPID(),
task->timesScheduled(), task->timesScheduled(),
task->fileHandleCount(), task->fileHandleCount(),