From 8454a2931257fa47b04159028ae5bd3cdc707562 Mon Sep 17 00:00:00 2001 From: "Todd C. Miller" Date: Mon, 19 Jan 2015 18:01:14 +0000 Subject: Kill loadavg.h and just use the fscale value directly. There's no need for crazy casts of p_pctcpu in ORDERKEY_PCTCPU since kinfo_proc exports it as uint32_t. OK deraadt@ --- usr.bin/top/loadavg.h | 92 --------------------------------------------------- usr.bin/top/machine.c | 15 ++------- 2 files changed, 3 insertions(+), 104 deletions(-) delete mode 100644 usr.bin/top/loadavg.h diff --git a/usr.bin/top/loadavg.h b/usr.bin/top/loadavg.h deleted file mode 100644 index af1b692a91c..00000000000 --- a/usr.bin/top/loadavg.h +++ /dev/null @@ -1,92 +0,0 @@ -/* $OpenBSD: loadavg.h,v 1.4 2015/01/19 01:53:18 deraadt Exp $ */ - -/* - * Top users/processes display for Unix - * Version 3 - * - * Copyright (c) 1984, 1989, William LeFebvre, Rice University - * Copyright (c) 1989, 1990, 1992, William LeFebvre, Northwestern University - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR - * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE AUTHOR OR HIS EMPLOYER BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -/* - * Top - a top users display for Berkeley Unix - * - * Defines required to access load average figures. - * - * This include file sets up everything we need to access the load average - * values in the kernel in a machine independent way. First, it sets the - * typedef "load_avg" to be either double or long (depending on what is - * needed), then it defines these macros appropriately: - * - * loaddouble(la) - convert load_avg to double. - * intload(i) - convert integer to load_avg. - */ - -/* - * We assume that if FSCALE is defined, then avenrun and ccpu are type long. - * If your machine is an exception (mips, perhaps?) then make adjustments - * here. - * - * Defined types: load_avg for load averages, pctcpu for cpu percentages. - */ -#if defined(mips) && !defined(__OpenBSD__) -# include -# if defined(FBITS) && !defined(FSCALE) -# define FSCALE (1 << FBITS) /* mips */ -# endif -#endif - -#ifdef __OpenBSD__ -#undef FSCALE -#define FSCALE fscale /* fetched via sysctl(3) */ -#endif - -#ifdef FSCALE -# define FIXED_LOADAVG FSCALE -# define FIXED_PCTCPU FSCALE -#endif - -#ifdef ibm032 -# undef FIXED_LOADAVG -# undef FIXED_PCTCPU -# define FIXED_PCTCPU PCT_SCALE -#endif - - -#ifdef FIXED_PCTCPU - typedef long pctcpu; -# define pctdouble(p) ((double)(p) / FIXED_PCTCPU) -#else -typedef double pctcpu; -# define pctdouble(p) (p) -#endif - -#ifdef FIXED_LOADAVG - typedef long load_avg; -# define loaddouble(la) ((double)(la) / FIXED_LOADAVG) -# define intload(i) ((int)((i) * FIXED_LOADAVG)) -#else - typedef double load_avg; -# define loaddouble(la) (la) -# define intload(i) ((double)(i)) -#endif diff --git a/usr.bin/top/machine.c b/usr.bin/top/machine.c index 88969f8ebd0..c973bc96325 100644 --- a/usr.bin/top/machine.c +++ b/usr.bin/top/machine.c @@ -1,4 +1,4 @@ -/* $OpenBSD: machine.c,v 1.82 2015/01/19 01:53:18 deraadt Exp $ */ +/* $OpenBSD: machine.c,v 1.83 2015/01/19 18:01:13 millert Exp $ */ /*- * Copyright (c) 1994 Thorsten Lockert @@ -53,7 +53,6 @@ #include "display.h" #include "machine.h" #include "utils.h" -#include "loadavg.h" static int swapmode(int *, int *); static char *state_abbr(struct kinfo_proc *); @@ -506,7 +505,7 @@ format_next_process(caddr_t handle, char *(*get_userid)(uid_t), pid_t *pid) cputime = pp->p_rtime_sec + ((pp->p_rtime_usec + 500000) / 1000000); /* calculate the base for cpu percentages */ - pct = pctdouble(pp->p_pctcpu); + pct = (double)pp->p_pctcpu / fscale; if (pp->p_wmesg[0]) p_wait = pp->p_wmesg; @@ -551,8 +550,7 @@ static unsigned char sorted_state[] = */ #define ORDERKEY_PCTCPU \ - if (lresult = (pctcpu)p2->p_pctcpu - (pctcpu)p1->p_pctcpu, \ - (result = lresult > 0 ? 1 : lresult < 0 ? -1 : 0) == 0) + if ((result = (int)(p2->p_pctcpu - p1->p_pctcpu)) == 0) #define ORDERKEY_CPUTIME \ if ((result = p2->p_rtime_sec - p1->p_rtime_sec) == 0) \ if ((result = p2->p_rtime_usec - p1->p_rtime_usec) == 0) @@ -577,7 +575,6 @@ compare_cpu(const void *v1, const void *v2) struct proc **pp1 = (struct proc **) v1; struct proc **pp2 = (struct proc **) v2; struct kinfo_proc *p1, *p2; - pctcpu lresult; int result; /* remove one level of indirection */ @@ -601,7 +598,6 @@ compare_size(const void *v1, const void *v2) struct proc **pp1 = (struct proc **) v1; struct proc **pp2 = (struct proc **) v2; struct kinfo_proc *p1, *p2; - pctcpu lresult; int result; /* remove one level of indirection */ @@ -625,7 +621,6 @@ compare_res(const void *v1, const void *v2) struct proc **pp1 = (struct proc **) v1; struct proc **pp2 = (struct proc **) v2; struct kinfo_proc *p1, *p2; - pctcpu lresult; int result; /* remove one level of indirection */ @@ -649,7 +644,6 @@ compare_time(const void *v1, const void *v2) struct proc **pp1 = (struct proc **) v1; struct proc **pp2 = (struct proc **) v2; struct kinfo_proc *p1, *p2; - pctcpu lresult; int result; /* remove one level of indirection */ @@ -673,7 +667,6 @@ compare_prio(const void *v1, const void *v2) struct proc **pp1 = (struct proc **) v1; struct proc **pp2 = (struct proc **) v2; struct kinfo_proc *p1, *p2; - pctcpu lresult; int result; /* remove one level of indirection */ @@ -696,7 +689,6 @@ compare_pid(const void *v1, const void *v2) struct proc **pp1 = (struct proc **) v1; struct proc **pp2 = (struct proc **) v2; struct kinfo_proc *p1, *p2; - pctcpu lresult; int result; /* remove one level of indirection */ @@ -720,7 +712,6 @@ compare_cmd(const void *v1, const void *v2) struct proc **pp1 = (struct proc **) v1; struct proc **pp2 = (struct proc **) v2; struct kinfo_proc *p1, *p2; - pctcpu lresult; int result; /* remove one level of indirection */ -- cgit v1.2.3