From 5fe9bcb21c61dc998fc7eff79951ed7409cff8f8 Mon Sep 17 00:00:00 2001 From: fraggerfox Date: Sun, 13 Jun 2021 05:28:50 +0530 Subject: [PATCH] Adds support for counting user and kernel threads. --- netbsd/NetBSDProcessList.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/netbsd/NetBSDProcessList.c b/netbsd/NetBSDProcessList.c index 6b080e50..ea6c8d3e 100644 --- a/netbsd/NetBSDProcessList.c +++ b/netbsd/NetBSDProcessList.c @@ -122,7 +122,7 @@ static void NetBSDProcessList_updateExe(const struct kinfo_proc2* kproc, Process Process_updateExe(proc, NULL); return; } - printf("%s\n", buffer); + /* Kernel threads return an empty buffer */ if (buffer[0] == '\0') { Process_updateExe(proc, NULL); @@ -227,6 +227,7 @@ static void NetBSDProcessList_scanProcs(NetBSDProcessList* this) { proc->show = ! ((hideKernelThreads && Process_isKernelThread(proc)) || (hideUserlandThreads && Process_isUserlandThread(proc))); if (!preExisting) { + proc->pid = kproc->p_pid; proc->ppid = kproc->p_ppid; proc->tpgid = kproc->p_tpgid; proc->tgid = kproc->p_pid; @@ -291,6 +292,12 @@ static void NetBSDProcessList_scanProcs(NetBSDProcessList* this) { default: proc->state = '?'; } + if (Process_isKernelThread(proc)) { + this->super.kernelThreads++; + } else if (Process_isUserlandThread(proc)) { + this->super.userlandThreads++; + } + this->super.totalTasks++; // SRUN ('R') means runnable, not running if (proc->state == 'P') {