diff options
author | Nicholas Marriott <nicm@openbsd.org> | 2009-07-26 19:42:26 +0000 |
---|---|---|
committer | Nicholas Marriott <nicm@openbsd.org> | 2009-07-26 19:42:26 +0000 |
commit | 6b3b852ebcaa61d3a03b918370939cfd6af8c191 (patch) | |
tree | c29b6f29728bdb39d67548bfd8b4c96820093a96 | |
parent | 34a82e7629073b8a6bb3474862d5f36b670338a3 (diff) | |
download | rtmux-6b3b852ebcaa61d3a03b918370939cfd6af8c191.tar.gz rtmux-6b3b852ebcaa61d3a03b918370939cfd6af8c191.tar.bz2 rtmux-6b3b852ebcaa61d3a03b918370939cfd6af8c191.zip |
Go to the next if the current best process is replaced, don't keep comparing it
with itself. Also fix process name comparison.
-rw-r--r-- | procname.c | 35 |
1 files changed, 21 insertions, 14 deletions
@@ -82,41 +82,48 @@ retry: continue; } - if (is_runnable(p) && !is_runnable(bestp)) + if (is_runnable(p) && !is_runnable(bestp)) { bestp = p; - else if (!is_runnable(p) && is_runnable(bestp)) + continue; + } else if (!is_runnable(p) && is_runnable(bestp)) continue; - if (!is_stopped(p) && is_stopped(bestp)) + if (!is_stopped(p) && is_stopped(bestp)) { bestp = p; - else if (is_stopped(p) && !is_stopped(bestp)) + continue; + } else if (is_stopped(p) && !is_stopped(bestp)) continue; - if (p->p_estcpu > bestp->p_estcpu) + if (p->p_estcpu > bestp->p_estcpu) { bestp = p; - else if (p->p_estcpu < bestp->p_estcpu) + continue; + } else if (p->p_estcpu < bestp->p_estcpu) continue; - if (p->p_slptime < bestp->p_slptime) + if (p->p_slptime < bestp->p_slptime) { bestp = p; - else if (p->p_slptime > bestp->p_slptime) + continue; + } else if (p->p_slptime > bestp->p_slptime) continue; - if (p->p_flag & P_SINTR && !(bestp->p_flag & P_SINTR)) + if (p->p_flag & P_SINTR && !(bestp->p_flag & P_SINTR)) { bestp = p; - else if (!(p->p_flag & P_SINTR) && bestp->p_flag & P_SINTR) + continue; + } else if (!(p->p_flag & P_SINTR) && bestp->p_flag & P_SINTR) continue; if (LIST_FIRST(&p->p_children) == NULL && - LIST_FIRST(&bestp->p_children) != NULL) /* XXX ugh */ + LIST_FIRST(&bestp->p_children) != NULL) { /* XXX ugh */ bestp = p; - else if (LIST_FIRST(&p->p_children) != NULL && + continue; + } else if (LIST_FIRST(&p->p_children) != NULL && LIST_FIRST(&bestp->p_children) == NULL) continue; - if (strcmp(p->p_comm, p->p_comm) < 0) + if (strcmp(p->p_comm, bestp->p_comm) < 0) { bestp = p; - else if (strcmp(p->p_comm, p->p_comm) > 0) + continue; + } else if (strcmp(p->p_comm, bestp->p_comm) > 0) continue; if (p->p_pid > bestp->p_pid) |