diff options
author | agc <agc@pkgsrc.org> | 1999-12-08 16:18:48 +0000 |
---|---|---|
committer | agc <agc@pkgsrc.org> | 1999-12-08 16:18:48 +0000 |
commit | d9a9305b62cc50c4f0950152e1355116fcf4e4e7 (patch) | |
tree | 94005585c079a24a4778053dfc177bfdf4f81122 /sysutils/top | |
parent | 3a906a59098a520af911d320327c4995e95af03e (diff) | |
download | pkgsrc-d9a9305b62cc50c4f0950152e1355116fcf4e4e7.tar.gz |
Split patch-aa into multiple files.
Make the patch to util.c apply without fuzz.
Diffstat (limited to 'sysutils/top')
-rw-r--r-- | sysutils/top/files/patch-sum | 8 | ||||
-rw-r--r-- | sysutils/top/patches/patch-aa | 602 | ||||
-rw-r--r-- | sysutils/top/patches/patch-af | 570 | ||||
-rw-r--r-- | sysutils/top/patches/patch-ag | 9 | ||||
-rw-r--r-- | sysutils/top/patches/patch-ah | 13 | ||||
-rw-r--r-- | sysutils/top/patches/patch-ai | 8 |
6 files changed, 607 insertions, 603 deletions
diff --git a/sysutils/top/files/patch-sum b/sysutils/top/files/patch-sum index 1a297d7c4ec..d5ac6dc5dd9 100644 --- a/sysutils/top/files/patch-sum +++ b/sysutils/top/files/patch-sum @@ -1,6 +1,10 @@ -$NetBSD: patch-sum,v 1.2 1999/09/29 14:04:35 agc Exp $ +$NetBSD: patch-sum,v 1.3 1999/12/08 16:18:48 agc Exp $ -MD5 (patch-aa) = 844e706c26ce094c0620ae0d44ae51eb +MD5 (patch-aa) = 233a2cce23bbbc15181093662c27e2e1 MD5 (patch-ab) = 71a6230b5eb767d8cd1a9366339d66f3 MD5 (patch-ac) = cff80f7b4ce2067d12d0b306a1f62b90 MD5 (patch-ae) = 3edecc1bc00be6512c21b7320fd6aa5f +MD5 (patch-af) = af572aee1b594fff3f66c815d2538f56 +MD5 (patch-ag) = d844db470a4f8e935a577a5cd5cff61f +MD5 (patch-ah) = c1c0e385a2b912e960a9303fbc23abce +MD5 (patch-ai) = ed0af1479f0f18d6ecb51738cbff9702 diff --git a/sysutils/top/patches/patch-aa b/sysutils/top/patches/patch-aa index 70a932fd649..b492fbe0c73 100644 --- a/sysutils/top/patches/patch-aa +++ b/sysutils/top/patches/patch-aa @@ -1,6 +1,5 @@ -$NetBSD: patch-aa,v 1.6 1998/12/03 20:02:53 thorpej Exp $ +$NetBSD: patch-aa,v 1.7 1999/12/08 16:18:49 agc Exp $ -diff -1 -uBbNr commands.c commands.c --- commands.c Tue Aug 27 16:13:57 1996 +++ commands.c Sat Oct 4 03:25:02 1997 @@ -25,4 +25,7 @@ @@ -31,602 +30,3 @@ diff -1 -uBbNr commands.c commands.c + puts(")"); + } #endif -diff -1 -uBbNr machine/m_netbsd10.c machine/m_netbsd10.c ---- machine/m_netbsd10.c Fri Jan 26 06:27:18 1996 -+++ machine/m_netbsd10.c Sat Oct 4 03:27:03 1997 -@@ -3,3 +3,3 @@ - * -- * SYNOPSIS: For a NetBSD-1.0 (4.4BSD) system -+ * SYNOPSIS: For a NetBSD-1.0 through NetBSD-1.2.1 system - * Note process resident sizes could be wrong, but ps shows -@@ -9,5 +9,5 @@ - * Originally written for BSD4.4 system by Christos Zoulas. -- * Based on the FreeBSD 2.0 version by Steven Wallace && Wolfram Schneider -- * NetBSD-1.0 port by Arne Helme -- * . -+ * Based on the FreeBSD 2.0 version by Steven Wallace && Wolfram Schneider. -+ * NetBSD-1.0 port by Arne Helme. Process ordering added by Luke Mewburn. -+ * - * This is the machine-dependent module for NetBSD-1.0 -@@ -15,2 +15,5 @@ - * NetBSD-1.0 -+ * NetBSD-1.1 -+ * NetBSD-1.2 -+ * NetBSD-1.2.1 - * -@@ -18,3 +21,3 @@ - * -- * CFLAGS: -DHAVE_GETOPT -+ * CFLAGS: -DHAVE_GETOPT -DORDER - * -@@ -24,2 +27,4 @@ - * Arne Helme <arne@acm.org> -+ * Luke Mewburn <lukem@netbsd.org> -+ * - * -@@ -30,4 +35,4 @@ - --#define LASTPID /**/ /* use last pid, compiler depended */ --/* #define LASTPID_FIXED /**/ -+/* #define LASTPID */ /* use last pid, compiler depended */ -+/* #define LASTPID_FIXED */ - #define VM_REAL /**/ /* use the same values as vmstat -s */ -@@ -53,2 +58,11 @@ - -+#include "os.h" -+ -+#include <err.h> -+#include <kvm.h> -+#include <math.h> -+#include <nlist.h> -+#include <stdio.h> -+#include <unistd.h> -+ - #ifdef USE_SWAP -@@ -87,3 +101,4 @@ - /* what we consider to be process size: */ --#define PROCSIZE(pp) (VP((pp), vm_tsize) + VP((pp), vm_dsize) + VP((pp), vm_ssize)) -+#define PROCSIZE(pp) \ -+ (VP((pp), vm_tsize) + VP((pp), vm_dsize) + VP((pp), vm_ssize)) - -@@ -171,3 +186,3 @@ - { -- "", "start", "run\0\0\0", "sleep", "stop", "zomb", "WAIT" -+ "", "start", "run\0\0\0", "sleep", "stop", "zomb" - }; -@@ -196,3 +211,2 @@ - static unsigned long cnt_offset; --static long cnt; - #endif -@@ -239,2 +253,33 @@ - -+ -+/* these are names given to allowed sorting orders -- first is default */ -+char *ordernames[] = { -+ "cpu", -+ "pri", -+ "res", -+ "size", -+ "state", -+ "time", -+ NULL -+}; -+ -+/* forward definitions for comparison functions */ -+int compare_cpu(); -+int compare_prio(); -+int compare_res(); -+int compare_size(); -+int compare_state(); -+int compare_time(); -+ -+int (*proc_compares[])() = { -+ compare_cpu, -+ compare_prio, -+ compare_res, -+ compare_size, -+ compare_state, -+ compare_time, -+ NULL -+}; -+ -+ - /* these are for keeping track of the proc array */ -@@ -260,8 +305,6 @@ - machine_init(statics) -- --struct statics *statics; -- -+ struct statics *statics; - { -- register int i = 0; -- register int pagesize; -+ int i = 0; -+ int pagesize; - -@@ -293,6 +336,2 @@ - --#if (defined DEBUG) -- fprintf(stderr, "Hertz: %d\n", hz); --#endif -- - (void) getkval(nlst[X_CCPU].n_value, (int *)(&ccpu), sizeof(ccpu), -@@ -333,2 +372,3 @@ - statics->memory_names = memorynames; -+ statics->order_names = ordernames; - -@@ -338,8 +378,7 @@ - --char *format_header(uname_field) -- --register char *uname_field; -- -+char * -+format_header(uname_field) -+ char *uname_field; - { -- register char *ptr; -+ char *ptr; - -@@ -360,8 +399,5 @@ - get_system_info(si) -- --struct system_info *si; -- -+ struct system_info *si; - { - long total; -- load_avg avenrun[3]; - -@@ -370,31 +406,13 @@ - nlst[X_CP_TIME].n_name); -- (void) getkval(avenrun_offset, (int *)avenrun, sizeof(avenrun), -- nlst[X_AVENRUN].n_name); - - #ifdef LASTPID -- (void) getkval(lastpid_offset, (int *)(&lastpid), sizeof(lastpid), -- "!"); -+ (void) getkval(lastpid_offset, (int *)(&lastpid), sizeof(lastpid), "!"); - #endif - -- /* convert load averages to doubles */ -- { -- register int i; -- register double *infoloadp; -- load_avg *avenrunp; -+ if (getloadavg(si->load_avg, NUM_AVERAGES) < 0) { -+ int i; - --#ifdef notyet -- struct loadavg sysload; -- int size; -- getkerninfo(KINFO_LOADAVG, &sysload, &size, 0); --#endif -- -- infoloadp = si->load_avg; -- avenrunp = avenrun; -- for (i = 0; i < 3; i++) -- { --#ifdef notyet -- *infoloadp++ = ((double) sysload.ldavg[i]) / sysload.fscale; --#endif -- *infoloadp++ = loaddouble(*avenrunp++); -- } -+ warn("can't getloadavg"); -+ for (i = 0; i < NUM_AVERAGES; i++) -+ si->load_avg[i] = 0.0; - } -@@ -426,4 +444,4 @@ - memory_stats[7] = pagetok(total.t_free); -- } --#else -+ -+#else /* !VM_REAL */ - struct vmmeter sum; -@@ -455,5 +473,5 @@ - /* swap_delay++; XXX Arne */ --#else -+#else /* !USE_SWAP */ - memory_stats[4] = 0; --#endif -+#endif /* !USE_SWAP */ - -@@ -461,4 +479,5 @@ - memory_stats[7] = -1; -+#endif /* !VM_REAL */ - } --#endif -+ - /* set arrays and strings */ -@@ -480,14 +498,13 @@ - --caddr_t get_process_info(si, sel, compare) -- --struct system_info *si; --struct process_select *sel; --int (*compare)(); -- -+caddr_t -+get_process_info(si, sel, compare) -+ struct system_info *si; -+ struct process_select *sel; -+ int (*compare)(); - { -- register int i; -- register int total_procs; -- register int active_procs; -- register struct kinfo_proc **prefp; -- register struct kinfo_proc *pp; -+ int i; -+ int total_procs; -+ int active_procs; -+ struct kinfo_proc **prefp; -+ struct kinfo_proc *pp; - -@@ -564,11 +581,10 @@ - --char *format_next_process(handle, get_userid) -- --caddr_t handle; --char *(*get_userid)(); -- -+char * -+format_next_process(handle, get_userid) -+ caddr_t handle; -+ char *(*get_userid)(); - { -- register struct kinfo_proc *pp; -- register long cputime; -- register double pct; -+ struct kinfo_proc *pp; -+ long cputime; -+ double pct; - struct handle *hp; -@@ -633,8 +649,7 @@ - --static int check_nlist(nlst) -- --register struct nlist *nlst; -- -+static int -+check_nlist(nlst) -+ struct nlist *nlst; - { -- register int i; -+ int i; - -@@ -672,9 +687,8 @@ - --static int getkval(offset, ptr, size, refstr) -- --unsigned long offset; --int *ptr; --int size; --char *refstr; -- -+static int -+getkval(offset, ptr, size, refstr) -+ unsigned long offset; -+ int *ptr; -+ int size; -+ char *refstr; - { -@@ -696,12 +710,13 @@ - --/* comparison routine for qsort */ -+/* comparison routines for qsort */ - - /* -- * proc_compare - comparison function for "qsort" -- * Compares the resource consumption of two processes using five -- * distinct keys. The keys (in descending order of importance) are: -- * percent cpu, cpu ticks, state, resident set size, total virtual -- * memory usage. The process states are ordered as follows (from least -- * to most important): WAIT, zombie, sleep, stop, start, run. The -- * array declaration below maps a process state index into a number -+ * There are currently four possible comparison routines. main selects -+ * one of these by indexing in to the array proc_compares. -+ * -+ * Possible keys are defined as macros below. Currently these keys are -+ * defined: percent cpu, cpu ticks, process state, resident set size, -+ * total virtual memory usage. The process states are ordered as follows -+ * (from least to most important): WAIT, zombie, sleep, stop, start, run. -+ * The array declaration below maps a process state index into a number - * that reflects this ordering. -@@ -709,24 +724,79 @@ - --static unsigned char sorted_state[] = --{ -- 0, /* not used */ -- 3, /* sleep */ -- 1, /* ABANDONED (WAIT) */ -- 6, /* run */ -- 5, /* start */ -- 2, /* zombie */ -- 4 /* stop */ -+/* -+ * First, the possible comparison keys. These are defined in such a way -+ * that they can be merely listed in the source code to define the actual -+ * desired ordering. -+ */ -+ -+#define ORDERKEY_PCTCPU \ -+ if (lresult = PP(p2, p_pctcpu) - PP(p1, p_pctcpu),\ -+ (result = lresult > 0 ? 1 : lresult < 0 ? -1 : 0) == 0) -+ -+#define ORDERKEY_CPTICKS \ -+ if (lresult = PP(p2, p_rtime).tv_sec - PP(p1, p_rtime).tv_sec,\ -+ (result = lresult > 0 ? 1 : lresult < 0 ? -1 : 0) == 0) -+ -+#define ORDERKEY_STATE \ -+ if ((result = sorted_state[(int)PP(p2, p_stat)] - \ -+ sorted_state[(int)PP(p1, p_stat)] ) == 0) -+ -+#define ORDERKEY_PRIO \ -+ if ((result = PP(p2, p_priority) - PP(p1, p_priority)) == 0) -+ -+#define ORDERKEY_RSSIZE \ -+ if ((result = VP(p2, vm_rssize) - VP(p1, vm_rssize)) == 0) -+ -+#define ORDERKEY_MEM \ -+ if ((result = (PROCSIZE(p2) - PROCSIZE(p1))) == 0) -+ -+/* -+ * Now the array that maps process state to a weight. -+ * The order of the elements should match those in state_abbrev[] -+ */ -+ -+static int sorted_state[] = { -+ 0, /* (not used) ? */ -+ 4, /* "start" SIDL */ -+ 5, /* "run" SRUN */ -+ 2, /* "sleep" SSLEEP */ -+ 3, /* "stop" SSTOP */ -+ 1, /* "zomb" SZOMB */ - }; - -+/* compare_cpu - the comparison function for sorting by cpu percentage */ -+ - int --proc_compare(pp1, pp2) -+compare_cpu(pp1, pp2) -+ struct proc **pp1, **pp2; -+{ -+ struct kinfo_proc *p1; -+ struct kinfo_proc *p2; -+ int result; -+ pctcpu lresult; -+ -+ /* remove one level of indirection */ -+ p1 = *(struct kinfo_proc **) pp1; -+ p2 = *(struct kinfo_proc **) pp2; - --struct proc **pp1; --struct proc **pp2; -+ ORDERKEY_PCTCPU -+ ORDERKEY_CPTICKS -+ ORDERKEY_STATE -+ ORDERKEY_PRIO -+ ORDERKEY_RSSIZE -+ ORDERKEY_MEM -+ ; - -+ return (result); -+} -+ -+/* compare_prio - the comparison function for sorting by process priority */ -+ -+int -+compare_prio(pp1, pp2) -+ struct proc **pp1, **pp2; - { -- register struct kinfo_proc *p1; -- register struct kinfo_proc *p2; -- register int result; -- register pctcpu lresult; -+ struct kinfo_proc *p1; -+ struct kinfo_proc *p2; -+ int result; -+ pctcpu lresult; - -@@ -736,31 +806,115 @@ - -- /* compare percent cpu (pctcpu) */ -- if ((lresult = PP(p2, p_pctcpu) - PP(p1, p_pctcpu)) == 0) -- { -- /* use cpticks to break the tie */ -- if ((result = PP(p2, p_cpticks) - PP(p1, p_cpticks)) == 0) -- { -- /* use process state to break the tie */ -- if ((result = sorted_state[(unsigned char) PP(p2, p_stat)] - -- sorted_state[(unsigned char) PP(p1, p_stat)]) == 0) -- { -- /* use priority to break the tie */ -- if ((result = PP(p2, p_priority) - PP(p1, p_priority)) == 0) -- { -- /* use resident set size (rssize) to break the tie */ -- if ((result = VP(p2, vm_rssize) - VP(p1, vm_rssize)) == 0) -- { -- /* use total memory to break the tie */ -- result = PROCSIZE(p2) - PROCSIZE(p1); -- } -- } -- } -- } -- } -- else -- { -- result = lresult < 0 ? -1 : 1; -- } -+ ORDERKEY_PRIO -+ ORDERKEY_PCTCPU -+ ORDERKEY_CPTICKS -+ ORDERKEY_STATE -+ ORDERKEY_RSSIZE -+ ORDERKEY_MEM -+ ; - -- return(result); -+ return (result); -+} -+ -+/* compare_res - the comparison function for sorting by resident set size */ -+ -+int -+compare_res(pp1, pp2) -+ struct proc **pp1, **pp2; -+{ -+ struct kinfo_proc *p1; -+ struct kinfo_proc *p2; -+ int result; -+ pctcpu lresult; -+ -+ /* remove one level of indirection */ -+ p1 = *(struct kinfo_proc **) pp1; -+ p2 = *(struct kinfo_proc **) pp2; -+ -+ ORDERKEY_RSSIZE -+ ORDERKEY_MEM -+ ORDERKEY_PCTCPU -+ ORDERKEY_CPTICKS -+ ORDERKEY_STATE -+ ORDERKEY_PRIO -+ ; -+ -+ return (result); -+} -+ -+/* compare_size - the comparison function for sorting by total memory usage */ -+ -+int -+compare_size(pp1, pp2) -+ struct proc **pp1, **pp2; -+{ -+ struct kinfo_proc *p1; -+ struct kinfo_proc *p2; -+ int result; -+ pctcpu lresult; -+ -+ /* remove one level of indirection */ -+ p1 = *(struct kinfo_proc **) pp1; -+ p2 = *(struct kinfo_proc **) pp2; -+ -+ ORDERKEY_MEM -+ ORDERKEY_RSSIZE -+ ORDERKEY_PCTCPU -+ ORDERKEY_CPTICKS -+ ORDERKEY_STATE -+ ORDERKEY_PRIO -+ ; -+ -+ return (result); -+} -+ -+/* compare_state - the comparison function for sorting by process state */ -+ -+int -+compare_state(pp1, pp2) -+ struct proc **pp1, **pp2; -+{ -+ struct kinfo_proc *p1; -+ struct kinfo_proc *p2; -+ int result; -+ pctcpu lresult; -+ -+ /* remove one level of indirection */ -+ p1 = *(struct kinfo_proc **) pp1; -+ p2 = *(struct kinfo_proc **) pp2; -+ -+ ORDERKEY_STATE -+ ORDERKEY_PCTCPU -+ ORDERKEY_CPTICKS -+ ORDERKEY_PRIO -+ ORDERKEY_RSSIZE -+ ORDERKEY_MEM -+ ; -+ -+ return (result); -+} -+ -+/* compare_time - the comparison function for sorting by total cpu time */ -+ -+int -+compare_time(pp1, pp2) -+ struct proc **pp1, **pp2; -+{ -+ struct kinfo_proc *p1; -+ struct kinfo_proc *p2; -+ int result; -+ pctcpu lresult; -+ -+ /* remove one level of indirection */ -+ p1 = *(struct kinfo_proc **) pp1; -+ p2 = *(struct kinfo_proc **) pp2; -+ -+ ORDERKEY_CPTICKS -+ ORDERKEY_PCTCPU -+ ORDERKEY_STATE -+ ORDERKEY_PRIO -+ ORDERKEY_MEM -+ ORDERKEY_RSSIZE -+ ; -+ -+ return (result); - } -@@ -778,10 +932,9 @@ - --int proc_owner(pid) -- --int pid; -- -+int -+proc_owner(pid) -+ int pid; - { -- register int cnt; -- register struct kinfo_proc **prefp; -- register struct kinfo_proc *pp; -+ int cnt; -+ struct kinfo_proc **prefp; -+ struct kinfo_proc *pp; - -@@ -832,2 +985,3 @@ - -+ l = 0; - KGET(VM_NSWAP, nswap); -@@ -938,4 +1092,2 @@ - -- --#endif -- -+#endif /* USE_SWAP */ -diff -1 -uBbNr top.c top.c ---- top.c Thu Sep 12 21:50:53 1996 -+++ top.c Sat Oct 4 03:25:02 1997 -@@ -716,3 +716,3 @@ - clear(); -- show_help(); -+ show_help(&statics); - standout("Hit any key to continue: "); -diff -1 -uBbNr utils.c utils.c ---- utils.c Tue Sep 10 22:15:14 1996 -+++ utils.c Sat Oct 4 03:25:02 1997 -@@ -18,2 +18,4 @@ - -+#include <errno.h> -+ - int atoiwi(str) -@@ -334,5 +336,5 @@ - extern char *sys_errlist[]; --#endif - - extern int sys_nerr; -+#endif - -diff -1 -uBbNr Configure Configure ---- Configure Thu Dec 3 11:56:33 1998 -+++ Configure Thu Dec 3 11:57:30 1998 -@@ -355,3 +355,2 @@ - set t_mode = 4711 -- set mode = 4711 - endif diff --git a/sysutils/top/patches/patch-af b/sysutils/top/patches/patch-af new file mode 100644 index 00000000000..c5f80df7b6d --- /dev/null +++ b/sysutils/top/patches/patch-af @@ -0,0 +1,570 @@ +$NetBSD: patch-af,v 1.1 1999/12/08 16:18:49 agc Exp $ + +--- machine/m_netbsd10.c Fri Jan 26 06:27:18 1996 ++++ machine/m_netbsd10.c Sat Oct 4 03:27:03 1997 +@@ -3,3 +3,3 @@ + * +- * SYNOPSIS: For a NetBSD-1.0 (4.4BSD) system ++ * SYNOPSIS: For a NetBSD-1.0 through NetBSD-1.2.1 system + * Note process resident sizes could be wrong, but ps shows +@@ -9,5 +9,5 @@ + * Originally written for BSD4.4 system by Christos Zoulas. +- * Based on the FreeBSD 2.0 version by Steven Wallace && Wolfram Schneider +- * NetBSD-1.0 port by Arne Helme +- * . ++ * Based on the FreeBSD 2.0 version by Steven Wallace && Wolfram Schneider. ++ * NetBSD-1.0 port by Arne Helme. Process ordering added by Luke Mewburn. ++ * + * This is the machine-dependent module for NetBSD-1.0 +@@ -15,2 +15,5 @@ + * NetBSD-1.0 ++ * NetBSD-1.1 ++ * NetBSD-1.2 ++ * NetBSD-1.2.1 + * +@@ -18,3 +21,3 @@ + * +- * CFLAGS: -DHAVE_GETOPT ++ * CFLAGS: -DHAVE_GETOPT -DORDER + * +@@ -24,2 +27,4 @@ + * Arne Helme <arne@acm.org> ++ * Luke Mewburn <lukem@netbsd.org> ++ * + * +@@ -30,4 +35,4 @@ + +-#define LASTPID /**/ /* use last pid, compiler depended */ +-/* #define LASTPID_FIXED /**/ ++/* #define LASTPID */ /* use last pid, compiler depended */ ++/* #define LASTPID_FIXED */ + #define VM_REAL /**/ /* use the same values as vmstat -s */ +@@ -53,2 +58,11 @@ + ++#include "os.h" ++ ++#include <err.h> ++#include <kvm.h> ++#include <math.h> ++#include <nlist.h> ++#include <stdio.h> ++#include <unistd.h> ++ + #ifdef USE_SWAP +@@ -87,3 +101,4 @@ + /* what we consider to be process size: */ +-#define PROCSIZE(pp) (VP((pp), vm_tsize) + VP((pp), vm_dsize) + VP((pp), vm_ssize)) ++#define PROCSIZE(pp) \ ++ (VP((pp), vm_tsize) + VP((pp), vm_dsize) + VP((pp), vm_ssize)) + +@@ -171,3 +186,3 @@ + { +- "", "start", "run\0\0\0", "sleep", "stop", "zomb", "WAIT" ++ "", "start", "run\0\0\0", "sleep", "stop", "zomb" + }; +@@ -196,3 +211,2 @@ + static unsigned long cnt_offset; +-static long cnt; + #endif +@@ -239,2 +253,33 @@ + ++ ++/* these are names given to allowed sorting orders -- first is default */ ++char *ordernames[] = { ++ "cpu", ++ "pri", ++ "res", ++ "size", ++ "state", ++ "time", ++ NULL ++}; ++ ++/* forward definitions for comparison functions */ ++int compare_cpu(); ++int compare_prio(); ++int compare_res(); ++int compare_size(); ++int compare_state(); ++int compare_time(); ++ ++int (*proc_compares[])() = { ++ compare_cpu, ++ compare_prio, ++ compare_res, ++ compare_size, ++ compare_state, ++ compare_time, ++ NULL ++}; ++ ++ + /* these are for keeping track of the proc array */ +@@ -260,8 +305,6 @@ + machine_init(statics) +- +-struct statics *statics; +- ++ struct statics *statics; + { +- register int i = 0; +- register int pagesize; ++ int i = 0; ++ int pagesize; + +@@ -293,6 +336,2 @@ + +-#if (defined DEBUG) +- fprintf(stderr, "Hertz: %d\n", hz); +-#endif +- + (void) getkval(nlst[X_CCPU].n_value, (int *)(&ccpu), sizeof(ccpu), +@@ -333,2 +372,3 @@ + statics->memory_names = memorynames; ++ statics->order_names = ordernames; + +@@ -338,8 +378,7 @@ + +-char *format_header(uname_field) +- +-register char *uname_field; +- ++char * ++format_header(uname_field) ++ char *uname_field; + { +- register char *ptr; ++ char *ptr; + +@@ -360,8 +399,5 @@ + get_system_info(si) +- +-struct system_info *si; +- ++ struct system_info *si; + { + long total; +- load_avg avenrun[3]; + +@@ -370,31 +406,13 @@ + nlst[X_CP_TIME].n_name); +- (void) getkval(avenrun_offset, (int *)avenrun, sizeof(avenrun), +- nlst[X_AVENRUN].n_name); + + #ifdef LASTPID +- (void) getkval(lastpid_offset, (int *)(&lastpid), sizeof(lastpid), +- "!"); ++ (void) getkval(lastpid_offset, (int *)(&lastpid), sizeof(lastpid), "!"); + #endif + +- /* convert load averages to doubles */ +- { +- register int i; +- register double *infoloadp; +- load_avg *avenrunp; ++ if (getloadavg(si->load_avg, NUM_AVERAGES) < 0) { ++ int i; + +-#ifdef notyet +- struct loadavg sysload; +- int size; +- getkerninfo(KINFO_LOADAVG, &sysload, &size, 0); +-#endif +- +- infoloadp = si->load_avg; +- avenrunp = avenrun; +- for (i = 0; i < 3; i++) +- { +-#ifdef notyet +- *infoloadp++ = ((double) sysload.ldavg[i]) / sysload.fscale; +-#endif +- *infoloadp++ = loaddouble(*avenrunp++); +- } ++ warn("can't getloadavg"); ++ for (i = 0; i < NUM_AVERAGES; i++) ++ si->load_avg[i] = 0.0; + } +@@ -426,4 +444,4 @@ + memory_stats[7] = pagetok(total.t_free); +- } +-#else ++ ++#else /* !VM_REAL */ + struct vmmeter sum; +@@ -455,5 +473,5 @@ + /* swap_delay++; XXX Arne */ +-#else ++#else /* !USE_SWAP */ + memory_stats[4] = 0; +-#endif ++#endif /* !USE_SWAP */ + +@@ -461,4 +479,5 @@ + memory_stats[7] = -1; ++#endif /* !VM_REAL */ + } +-#endif ++ + /* set arrays and strings */ +@@ -480,14 +498,13 @@ + +-caddr_t get_process_info(si, sel, compare) +- +-struct system_info *si; +-struct process_select *sel; +-int (*compare)(); +- ++caddr_t ++get_process_info(si, sel, compare) ++ struct system_info *si; ++ struct process_select *sel; ++ int (*compare)(); + { +- register int i; +- register int total_procs; +- register int active_procs; +- register struct kinfo_proc **prefp; +- register struct kinfo_proc *pp; ++ int i; ++ int total_procs; ++ int active_procs; ++ struct kinfo_proc **prefp; ++ struct kinfo_proc *pp; + +@@ -564,11 +581,10 @@ + +-char *format_next_process(handle, get_userid) +- +-caddr_t handle; +-char *(*get_userid)(); +- ++char * ++format_next_process(handle, get_userid) ++ caddr_t handle; ++ char *(*get_userid)(); + { +- register struct kinfo_proc *pp; +- register long cputime; +- register double pct; ++ struct kinfo_proc *pp; ++ long cputime; ++ double pct; + struct handle *hp; +@@ -633,8 +649,7 @@ + +-static int check_nlist(nlst) +- +-register struct nlist *nlst; +- ++static int ++check_nlist(nlst) ++ struct nlist *nlst; + { +- register int i; ++ int i; + +@@ -672,9 +687,8 @@ + +-static int getkval(offset, ptr, size, refstr) +- +-unsigned long offset; +-int *ptr; +-int size; +-char *refstr; +- ++static int ++getkval(offset, ptr, size, refstr) ++ unsigned long offset; ++ int *ptr; ++ int size; ++ char *refstr; + { +@@ -696,12 +710,13 @@ + +-/* comparison routine for qsort */ ++/* comparison routines for qsort */ + + /* +- * proc_compare - comparison function for "qsort" +- * Compares the resource consumption of two processes using five +- * distinct keys. The keys (in descending order of importance) are: +- * percent cpu, cpu ticks, state, resident set size, total virtual +- * memory usage. The process states are ordered as follows (from least +- * to most important): WAIT, zombie, sleep, stop, start, run. The +- * array declaration below maps a process state index into a number ++ * There are currently four possible comparison routines. main selects ++ * one of these by indexing in to the array proc_compares. ++ * ++ * Possible keys are defined as macros below. Currently these keys are ++ * defined: percent cpu, cpu ticks, process state, resident set size, ++ * total virtual memory usage. The process states are ordered as follows ++ * (from least to most important): WAIT, zombie, sleep, stop, start, run. ++ * The array declaration below maps a process state index into a number + * that reflects this ordering. +@@ -709,24 +724,79 @@ + +-static unsigned char sorted_state[] = +-{ +- 0, /* not used */ +- 3, /* sleep */ +- 1, /* ABANDONED (WAIT) */ +- 6, /* run */ +- 5, /* start */ +- 2, /* zombie */ +- 4 /* stop */ ++/* ++ * First, the possible comparison keys. These are defined in such a way ++ * that they can be merely listed in the source code to define the actual ++ * desired ordering. ++ */ ++ ++#define ORDERKEY_PCTCPU \ ++ if (lresult = PP(p2, p_pctcpu) - PP(p1, p_pctcpu),\ ++ (result = lresult > 0 ? 1 : lresult < 0 ? -1 : 0) == 0) ++ ++#define ORDERKEY_CPTICKS \ ++ if (lresult = PP(p2, p_rtime).tv_sec - PP(p1, p_rtime).tv_sec,\ ++ (result = lresult > 0 ? 1 : lresult < 0 ? -1 : 0) == 0) ++ ++#define ORDERKEY_STATE \ ++ if ((result = sorted_state[(int)PP(p2, p_stat)] - \ ++ sorted_state[(int)PP(p1, p_stat)] ) == 0) ++ ++#define ORDERKEY_PRIO \ ++ if ((result = PP(p2, p_priority) - PP(p1, p_priority)) == 0) ++ ++#define ORDERKEY_RSSIZE \ ++ if ((result = VP(p2, vm_rssize) - VP(p1, vm_rssize)) == 0) ++ ++#define ORDERKEY_MEM \ ++ if ((result = (PROCSIZE(p2) - PROCSIZE(p1))) == 0) ++ ++/* ++ * Now the array that maps process state to a weight. ++ * The order of the elements should match those in state_abbrev[] ++ */ ++ ++static int sorted_state[] = { ++ 0, /* (not used) ? */ ++ 4, /* "start" SIDL */ ++ 5, /* "run" SRUN */ ++ 2, /* "sleep" SSLEEP */ ++ 3, /* "stop" SSTOP */ ++ 1, /* "zomb" SZOMB */ + }; + ++/* compare_cpu - the comparison function for sorting by cpu percentage */ ++ + int +-proc_compare(pp1, pp2) ++compare_cpu(pp1, pp2) ++ struct proc **pp1, **pp2; ++{ ++ struct kinfo_proc *p1; ++ struct kinfo_proc *p2; ++ int result; ++ pctcpu lresult; ++ ++ /* remove one level of indirection */ ++ p1 = *(struct kinfo_proc **) pp1; ++ p2 = *(struct kinfo_proc **) pp2; + +-struct proc **pp1; +-struct proc **pp2; ++ ORDERKEY_PCTCPU ++ ORDERKEY_CPTICKS ++ ORDERKEY_STATE ++ ORDERKEY_PRIO ++ ORDERKEY_RSSIZE ++ ORDERKEY_MEM ++ ; + ++ return (result); ++} ++ ++/* compare_prio - the comparison function for sorting by process priority */ ++ ++int ++compare_prio(pp1, pp2) ++ struct proc **pp1, **pp2; + { +- register struct kinfo_proc *p1; +- register struct kinfo_proc *p2; +- register int result; +- register pctcpu lresult; ++ struct kinfo_proc *p1; ++ struct kinfo_proc *p2; ++ int result; ++ pctcpu lresult; + +@@ -736,31 +806,115 @@ + +- /* compare percent cpu (pctcpu) */ +- if ((lresult = PP(p2, p_pctcpu) - PP(p1, p_pctcpu)) == 0) +- { +- /* use cpticks to break the tie */ +- if ((result = PP(p2, p_cpticks) - PP(p1, p_cpticks)) == 0) +- { +- /* use process state to break the tie */ +- if ((result = sorted_state[(unsigned char) PP(p2, p_stat)] - +- sorted_state[(unsigned char) PP(p1, p_stat)]) == 0) +- { +- /* use priority to break the tie */ +- if ((result = PP(p2, p_priority) - PP(p1, p_priority)) == 0) +- { +- /* use resident set size (rssize) to break the tie */ +- if ((result = VP(p2, vm_rssize) - VP(p1, vm_rssize)) == 0) +- { +- /* use total memory to break the tie */ +- result = PROCSIZE(p2) - PROCSIZE(p1); +- } +- } +- } +- } +- } +- else +- { +- result = lresult < 0 ? -1 : 1; +- } ++ ORDERKEY_PRIO ++ ORDERKEY_PCTCPU ++ ORDERKEY_CPTICKS ++ ORDERKEY_STATE ++ ORDERKEY_RSSIZE ++ ORDERKEY_MEM ++ ; + +- return(result); ++ return (result); ++} ++ ++/* compare_res - the comparison function for sorting by resident set size */ ++ ++int ++compare_res(pp1, pp2) ++ struct proc **pp1, **pp2; ++{ ++ struct kinfo_proc *p1; ++ struct kinfo_proc *p2; ++ int result; ++ pctcpu lresult; ++ ++ /* remove one level of indirection */ ++ p1 = *(struct kinfo_proc **) pp1; ++ p2 = *(struct kinfo_proc **) pp2; ++ ++ ORDERKEY_RSSIZE ++ ORDERKEY_MEM ++ ORDERKEY_PCTCPU ++ ORDERKEY_CPTICKS ++ ORDERKEY_STATE ++ ORDERKEY_PRIO ++ ; ++ ++ return (result); ++} ++ ++/* compare_size - the comparison function for sorting by total memory usage */ ++ ++int ++compare_size(pp1, pp2) ++ struct proc **pp1, **pp2; ++{ ++ struct kinfo_proc *p1; ++ struct kinfo_proc *p2; ++ int result; ++ pctcpu lresult; ++ ++ /* remove one level of indirection */ ++ p1 = *(struct kinfo_proc **) pp1; ++ p2 = *(struct kinfo_proc **) pp2; ++ ++ ORDERKEY_MEM ++ ORDERKEY_RSSIZE ++ ORDERKEY_PCTCPU ++ ORDERKEY_CPTICKS ++ ORDERKEY_STATE ++ ORDERKEY_PRIO ++ ; ++ ++ return (result); ++} ++ ++/* compare_state - the comparison function for sorting by process state */ ++ ++int ++compare_state(pp1, pp2) ++ struct proc **pp1, **pp2; ++{ ++ struct kinfo_proc *p1; ++ struct kinfo_proc *p2; ++ int result; ++ pctcpu lresult; ++ ++ /* remove one level of indirection */ ++ p1 = *(struct kinfo_proc **) pp1; ++ p2 = *(struct kinfo_proc **) pp2; ++ ++ ORDERKEY_STATE ++ ORDERKEY_PCTCPU ++ ORDERKEY_CPTICKS ++ ORDERKEY_PRIO ++ ORDERKEY_RSSIZE ++ ORDERKEY_MEM ++ ; ++ ++ return (result); ++} ++ ++/* compare_time - the comparison function for sorting by total cpu time */ ++ ++int ++compare_time(pp1, pp2) ++ struct proc **pp1, **pp2; ++{ ++ struct kinfo_proc *p1; ++ struct kinfo_proc *p2; ++ int result; ++ pctcpu lresult; ++ ++ /* remove one level of indirection */ ++ p1 = *(struct kinfo_proc **) pp1; ++ p2 = *(struct kinfo_proc **) pp2; ++ ++ ORDERKEY_CPTICKS ++ ORDERKEY_PCTCPU ++ ORDERKEY_STATE ++ ORDERKEY_PRIO ++ ORDERKEY_MEM ++ ORDERKEY_RSSIZE ++ ; ++ ++ return (result); + } +@@ -778,10 +932,9 @@ + +-int proc_owner(pid) +- +-int pid; +- ++int ++proc_owner(pid) ++ int pid; + { +- register int cnt; +- register struct kinfo_proc **prefp; +- register struct kinfo_proc *pp; ++ int cnt; ++ struct kinfo_proc **prefp; ++ struct kinfo_proc *pp; + +@@ -832,2 +985,3 @@ + ++ l = 0; + KGET(VM_NSWAP, nswap); +@@ -938,4 +1092,2 @@ + +- +-#endif +- ++#endif /* USE_SWAP */ diff --git a/sysutils/top/patches/patch-ag b/sysutils/top/patches/patch-ag new file mode 100644 index 00000000000..adf490a4203 --- /dev/null +++ b/sysutils/top/patches/patch-ag @@ -0,0 +1,9 @@ +$NetBSD: patch-ag,v 1.1 1999/12/08 16:18:50 agc Exp $ + +--- top.c Thu Sep 12 21:50:53 1996 ++++ top.c Sat Oct 4 03:25:02 1997 +@@ -716,3 +716,3 @@ + clear(); +- show_help(); ++ show_help(&statics); + standout("Hit any key to continue: "); diff --git a/sysutils/top/patches/patch-ah b/sysutils/top/patches/patch-ah new file mode 100644 index 00000000000..9500ada5d66 --- /dev/null +++ b/sysutils/top/patches/patch-ah @@ -0,0 +1,13 @@ +$NetBSD: patch-ah,v 1.1 1999/12/08 16:18:50 agc Exp $ + +--- utils.c.orig Mon Jun 1 18:58:17 1998 ++++ utils.c Wed Dec 8 16:09:50 1999 +@@ -16,6 +16,8 @@ + #include "top.h" + #include "os.h" + ++#include <errno.h> ++ + int atoiwi(str) + + char *str; diff --git a/sysutils/top/patches/patch-ai b/sysutils/top/patches/patch-ai new file mode 100644 index 00000000000..68d73077646 --- /dev/null +++ b/sysutils/top/patches/patch-ai @@ -0,0 +1,8 @@ +$NetBSD: patch-ai,v 1.1 1999/12/08 16:18:50 agc Exp $ + +--- Configure Thu Dec 3 11:56:33 1998 ++++ Configure Thu Dec 3 11:57:30 1998 +@@ -355,3 +355,2 @@ + set t_mode = 4711 +- set mode = 4711 + endif |