From b42c441ee0c41d493dbf154713c69855cc2f74f5 Mon Sep 17 00:00:00 2001 From: Benny Baumann Date: Sun, 15 Aug 2021 10:15:16 +0200 Subject: [PATCH] Use proper metric to detect kernel threads Querying kernel threads with `ps -o pid,lid,flags,state,lname -sp 0` gives that kernel threads have state `K` and flags have mask `0x20000` set. This corresponds to `LW_SYSTEM` in kernel which is mapped as `L_SYSTEM`/`P_SYSTEM` for userspace. --- netbsd/NetBSDProcessList.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/netbsd/NetBSDProcessList.c b/netbsd/NetBSDProcessList.c index 3d3ba294..73c4f0f7 100644 --- a/netbsd/NetBSDProcessList.c +++ b/netbsd/NetBSDProcessList.c @@ -281,7 +281,7 @@ static void NetBSDProcessList_scanProcs(NetBSDProcessList* this) { proc->session = kproc->p_sid; proc->tty_nr = kproc->p_tdev; proc->pgrp = kproc->p__pgid; - proc->isKernelThread = proc->pgrp == 0; + proc->isKernelThread = !!(kproc->p_flag & P_SYSTEM); proc->isUserlandThread = proc->pid != proc->tgid; proc->starttime_ctime = kproc->p_ustart_sec; Process_fillStarttimeBuffer(proc);