diff options
Diffstat (limited to 'osdep-freebsd.c')
-rw-r--r-- | osdep-freebsd.c | 15 |
1 files changed, 8 insertions, 7 deletions
diff --git a/osdep-freebsd.c b/osdep-freebsd.c index 66a9e48f..556235e6 100644 --- a/osdep-freebsd.c +++ b/osdep-freebsd.c @@ -1,4 +1,4 @@ -/* $Id: osdep-freebsd.c,v 1.6 2009-02-07 19:24:50 nicm Exp $ */ +/* $Id: osdep-freebsd.c,v 1.7 2009-02-07 19:27:11 nicm Exp $ */ /* * Copyright (c) 2009 Nicholas Marriott <nicm@users.sourceforge.net> @@ -22,6 +22,7 @@ #include <sys/proc.h> #include <sys/stat.h> #include <sys/sysctl.h> +#include <sys/time.h> #include <sys/user.h> #include <err.h> @@ -87,12 +88,12 @@ retry: bestp = p; if (!is_stopped(p) && is_stopped(bestp)) bestp = p; - - if (p->ki_estcpu < bestp->ki_estcpu) - continue; - if (p->ki_slptime > bestp->ki_slptime) - continue; - bestp = p; + if (p->ki_estcpu > bestp->ki_estcpu) + bestp = p; + if (p->ki_slptime < bestp->ki_slptime) + bestp = p; + if (timercmp(&p->ki_rusage_ch, &bestp->ki_rusage_ch, <)) + bestp = p; } if (bestp != NULL) { procname = get_proc_argv0(bestp->ki_pid); |