Manual browser: proc_compare(3)
PROC_COMPARE(3) | Library Functions Manual | PROC_COMPARE(3) |
NAME
proc_compare — compare two processes' interactivityLIBRARY
System Utilities Library (libutil, -lutil)SYNOPSIS
#include <sys/sysctl.h>
int
proc_compare(const struct kinfo_proc2 *p1, const struct kinfo_lwp *l1, const struct kinfo_proc2 *p2, const struct kinfo_lwp *l2);
DESCRIPTION
The proc_compare() function compares two processes that are on the same terminal for their interactivity. This means that the process returned is the one that has a better chance being the active foreground process on that tty. This algorithm is used in the kernel for SIGINFO reporting and in userland by w(1).The algorithm used is as follows:
- If one of them is runnable, it is preferred.
- If both are runnable, the one with the largest CPU percent is preferred.
- In a CPU percent tie, the one started more recently wins.
- If none are runnable, and one of them is a zombie, the non-zombie is preferred
- If both are zombies, the one started more recently wins.
- If neither is a zombie, the one with the smaller sleep time wins.
- In a tie, and one is sleeping in non-interruptible sleep, prefer that one.
- If both are in the same state, the one started more recently is preferred.
RETURN VALUES
The proc_compare() function returns 0 if p1 is to be preferred and 1 if p2 is to be preferred.SEE ALSO
w(1)HISTORY
The proc_compare() was extracted from src/sys/kern/tty.c and src/usr.bin/w/proc_compare.c and merged in NetBSD 6.0.October 20, 2011 | NetBSD 7.0 |