[Midnightbsd-cvs] src [11079] trunk/contrib/top: update top
laffer1 at midnightbsd.org
laffer1 at midnightbsd.org
Tue Jun 19 10:14:34 EDT 2018
Revision: 11079
http://svnweb.midnightbsd.org/src/?rev=11079
Author: laffer1
Date: 2018-06-19 10:14:33 -0400 (Tue, 19 Jun 2018)
Log Message:
-----------
update top
Modified Paths:
--------------
trunk/contrib/top/commands.c
trunk/contrib/top/display.c
trunk/contrib/top/display.h
trunk/contrib/top/layout.h
trunk/contrib/top/machine.h
trunk/contrib/top/screen.c
trunk/contrib/top/screen.h
trunk/contrib/top/sigconv.awk
trunk/contrib/top/top.c
trunk/contrib/top/top.h
trunk/contrib/top/username.c
trunk/contrib/top/utils.c
trunk/contrib/top/utils.h
trunk/contrib/top/version.c
Added Paths:
-----------
trunk/contrib/top/MIDNIGHTBSD-upgrade
trunk/contrib/top/commands.h
trunk/contrib/top/top.local.hs
trunk/contrib/top/top.xs
trunk/contrib/top/username.h
Added: trunk/contrib/top/MIDNIGHTBSD-upgrade
===================================================================
--- trunk/contrib/top/MIDNIGHTBSD-upgrade (rev 0)
+++ trunk/contrib/top/MIDNIGHTBSD-upgrade 2018-06-19 14:14:33 UTC (rev 11079)
@@ -0,0 +1,17 @@
+$MidnightBSD$
+
+The upstream project pages for top(1) are:
+
+ http://www.unixtop.org/
+
+ https://sourceforge.net/projects/unixtop/
+
+contrib/top/machine.h specifies an interface that must be provided by the
+target OS. That interface is implemented in usr.bin/top/machine.c
+
+To enable building on case-insensitive filesystems, the following files were
+renamed:
+
+ contrib/top/top.X -> contrib/top/top.xs
+ contrib/top/top.local.H -> contrib/top/top.local.hs
+
Modified: trunk/contrib/top/commands.c
===================================================================
--- trunk/contrib/top/commands.c 2018-06-19 14:08:15 UTC (rev 11078)
+++ trunk/contrib/top/commands.c 2018-06-19 14:14:33 UTC (rev 11079)
@@ -8,7 +8,7 @@
* Copyright (c) 1984, 1989, William LeFebvre, Rice University
* Copyright (c) 1989, 1990, 1992, William LeFebvre, Northwestern University
*
- * $FreeBSD: releng/9.2/contrib/top/commands.c 223936 2011-07-11 16:48:52Z jhb $
+ * $FreeBSD: stable/10/contrib/top/commands.c 301836 2016-06-12 05:57:42Z ngie $
*/
/*
@@ -19,16 +19,21 @@
*/
#include "os.h"
-#include <ctype.h>
-#include <signal.h>
-#include <errno.h>
+
#include <sys/time.h>
#include <sys/resource.h>
+#include <ctype.h>
+#include <errno.h>
+#include <signal.h>
+#include <unistd.h>
+
+#include "commands.h"
#include "sigdesc.h" /* generated automatically */
#include "top.h"
#include "boolean.h"
#include "utils.h"
+#include "machine.h"
extern int errno;
@@ -39,6 +44,8 @@
int err_compar();
char *err_string();
+static int str_adderr(char *str, int len, int err);
+static int str_addarg(char *str, int len, char *arg, int first);
/*
* show_help() - display the help screen; invoked in response to
@@ -45,6 +52,7 @@
* either 'h' or '?'.
*/
+void
show_help()
{
@@ -74,6 +82,7 @@
H - toggle the displaying of threads\n\
i or I - toggle the displaying of idle processes\n\
j - toggle the displaying of jail ID\n\
+J - display processes for only one jail (+ selects all jails)\n\
k - kill processes; send a signal to a list of processes\n\
m - toggle the display between 'cpu' and 'io' modes\n\
n or # - change number of processes to display\n", stdout);
@@ -80,11 +89,11 @@
#ifdef ORDER
if (displaymode == DISP_CPU)
fputs("\
-o - specify sort order (pri, size, res, cpu, time, threads, jid)\n",
+o - specify sort order (pri, size, res, cpu, time, threads, jid, pid)\n",
stdout);
else
fputs("\
-o - specify sort order (vcsw, ivcsw, read, write, fault, total, jid)\n",
+o - specify sort order (vcsw, ivcsw, read, write, fault, total, jid, pid)\n",
stdout);
#endif
fputs("\
@@ -122,6 +131,7 @@
return(*str == '\0' ? NULL : str);
}
+int
scanint(str, intp)
char *str;
@@ -261,6 +271,7 @@
* the string "str".
*/
+static int
str_adderr(str, len, err)
char *str;
@@ -288,6 +299,7 @@
* is set (indicating that a comma should NOT be added to the front).
*/
+static int
str_addarg(str, len, arg, first)
char *str;
@@ -320,6 +332,7 @@
* for sorting errors.
*/
+int
err_compar(p1, p2)
register struct errs *p1, *p2;
@@ -338,6 +351,7 @@
* error_count() - return the number of errors currently logged.
*/
+int
error_count()
{
@@ -348,6 +362,7 @@
* show_errors() - display on stdout the current log of errors.
*/
+void
show_errors()
{
Added: trunk/contrib/top/commands.h
===================================================================
--- trunk/contrib/top/commands.h (rev 0)
+++ trunk/contrib/top/commands.h 2018-06-19 14:14:33 UTC (rev 11079)
@@ -0,0 +1,21 @@
+/*
+ * Top users/processes display for Unix
+ * Version 3
+ *
+ * This program may be freely redistributed,
+ * but this entire comment MUST remain intact.
+ *
+ * Copyright (c) 1984, 1989, William LeFebvre, Rice University
+ * Copyright (c) 1989, 1990, 1992, William LeFebvre, Northwestern University
+ * Copyright (c) 2016, Randy Westlund
+ *
+ * $FreeBSD: stable/10/contrib/top/commands.h 301836 2016-06-12 05:57:42Z ngie $
+ */
+#ifndef COMMANDS_H
+#define COMMANDS_H
+
+void show_errors(void);
+int error_count(void);
+void show_help(void);
+
+#endif /* COMMANDS_H */
Property changes on: trunk/contrib/top/commands.h
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+MidnightBSD=%H
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Modified: trunk/contrib/top/display.c
===================================================================
--- trunk/contrib/top/display.c 2018-06-19 14:08:15 UTC (rev 11078)
+++ trunk/contrib/top/display.c 2018-06-19 14:14:33 UTC (rev 11079)
@@ -8,7 +8,7 @@
* Copyright (c) 1984, 1989, William LeFebvre, Rice University
* Copyright (c) 1989, 1990, 1992, William LeFebvre, Northwestern University
*
- * $FreeBSD: releng/9.2/contrib/top/display.c 239750 2012-08-27 19:55:19Z jhb $
+ * $FreeBSD: stable/10/contrib/top/display.c 301836 2016-06-12 05:57:42Z ngie $
*/
/*
@@ -29,9 +29,12 @@
*/
#include "os.h"
+
+#include <sys/time.h>
+
#include <ctype.h>
#include <time.h>
-#include <sys/time.h>
+#include <unistd.h>
#include "screen.h" /* interface to screen package */
#include "layout.h" /* defines for screen position layout */
@@ -56,7 +59,6 @@
#define lineindex(l) ((l)*display_width)
-char *printable();
/* things initialized by display_init and used thruout */
@@ -239,6 +241,7 @@
return(lines);
}
+void
i_loadave(mpid, avenrun)
int mpid;
@@ -267,6 +270,7 @@
lmpid = mpid;
}
+void
u_loadave(mpid, avenrun)
int mpid;
@@ -306,6 +310,7 @@
}
}
+void
i_timeofday(tod)
time_t *tod;
@@ -351,6 +356,7 @@
* lastline is valid
*/
+void
i_procstates(total, brkdn)
int total;
@@ -378,6 +384,7 @@
memcpy(lprocstates, brkdn, num_procstates * sizeof(int));
}
+void
u_procstates(total, brkdn)
int total;
@@ -460,9 +467,10 @@
}
#endif
+void
i_cpustates(states)
-register int *states;
+int *states;
{
register int i = 0;
@@ -505,9 +513,10 @@
memcpy(lcpustates, states, num_cpustates * sizeof(int) * num_cpus);
}
+void
u_cpustates(states)
-register int *states;
+int *states;
{
register int value;
@@ -557,6 +566,7 @@
}
}
+void
z_cpustates()
{
@@ -606,6 +616,7 @@
char memory_buffer[MAX_COLS];
+void
i_memory(stats)
int *stats;
@@ -619,6 +630,7 @@
fputs(memory_buffer, stdout);
}
+void
u_memory(stats)
int *stats;
@@ -639,6 +651,7 @@
*/
char arc_buffer[MAX_COLS];
+void
i_arc(stats)
int *stats;
@@ -645,7 +658,7 @@
{
if (arc_names == NULL)
- return (0);
+ return;
fputs("\nARC: ", stdout);
lastline++;
@@ -655,6 +668,7 @@
fputs(arc_buffer, stdout);
}
+void
u_arc(stats)
int *stats;
@@ -663,7 +677,7 @@
static char new[MAX_COLS];
if (arc_names == NULL)
- return (0);
+ return;
/* format the new line */
summary_format(new, stats, arc_names);
@@ -680,6 +694,7 @@
char swap_buffer[MAX_COLS];
+void
i_swap(stats)
int *stats;
@@ -693,6 +708,7 @@
fputs(swap_buffer, stdout);
}
+void
u_swap(stats)
int *stats;
@@ -724,6 +740,7 @@
/* Invariant: msglen is always the length of the message currently displayed
on the screen (even when next_msg doesn't contain that message). */
+void
i_message()
{
@@ -745,6 +762,7 @@
}
}
+void
u_message()
{
@@ -786,6 +804,7 @@
* Assumptions: cursor is on the previous line and lastline is consistent
*/
+void
i_header(text)
char *text;
@@ -811,9 +830,10 @@
}
/*ARGSUSED*/
+void
u_header(text)
-char *text; /* ignored */
+char *text __unused; /* ignored */
{
@@ -832,6 +852,7 @@
* Assumptions: lastline is consistent
*/
+void
i_process(line, thisline)
int line;
@@ -862,6 +883,7 @@
memzero(p, display_width - (p - base));
}
+void
u_process(line, newline)
int line;
@@ -909,9 +931,10 @@
}
}
+void
u_endscreen(hi)
-register int hi;
+int hi;
{
register int screen_line = hi + Header_lines;
@@ -969,6 +992,7 @@
}
}
+void
display_header(t)
int t;
@@ -985,6 +1009,7 @@
}
/*VARARGS2*/
+void
new_message(type, msgfmt, a1, a2, a3)
int type;
@@ -1025,6 +1050,7 @@
}
}
+void
clear_message()
{
@@ -1034,6 +1060,7 @@
}
}
+int
readline(buffer, size, numeric)
char *buffer;
@@ -1336,6 +1363,7 @@
return(str);
}
+void
i_uptime(bt, tod)
struct timeval* bt;
Modified: trunk/contrib/top/display.h
===================================================================
--- trunk/contrib/top/display.h 2018-06-19 14:08:15 UTC (rev 11078)
+++ trunk/contrib/top/display.h 2018-06-19 14:14:33 UTC (rev 11079)
@@ -5,3 +5,37 @@
#define MT_standout 1
#define MT_delayed 2
+#include "machine.h"
+
+int display_updatecpus(struct statics *statics);
+void clear_message(void);
+int display_resize(void);
+void i_header(char *text);
+char *printable(char *string);
+char *cpustates_tag(void);
+void display_header(int t);
+int display_init(struct statics *statics);
+void i_arc(int *stats);
+void i_cpustates(int *states);
+void i_loadave(int mpid, double *avenrun);
+void i_memory(int *stats);
+void i_message(void);
+void i_process(int line, char *thisline);
+void i_procstates(int total, int *brkdn);
+void i_swap(int *stats);
+void i_timeofday(time_t *tod);
+void i_uptime(struct timeval *bt, time_t *tod);
+void new_message();
+int readline(char *buffer, int size, int numeric);
+char *trim_header(char *text);
+void u_arc(int *stats);
+void u_cpustates(int *states);
+void u_endscreen(int hi);
+void u_header(char *text);
+void u_loadave(int mpid, double *avenrun);
+void u_memory(int *stats);
+void u_message(void);
+void u_process(int line, char *newline);
+void u_procstates(int total, int *brkdn);
+void u_swap(int *stats);
+void z_cpustates(void);
Modified: trunk/contrib/top/layout.h
===================================================================
--- trunk/contrib/top/layout.h 2018-06-19 14:08:15 UTC (rev 11078)
+++ trunk/contrib/top/layout.h 2018-06-19 14:14:33 UTC (rev 11079)
@@ -5,7 +5,7 @@
* display. These definitions are used by the routines in "display.c" for
* cursor addressing.
*
- * $FreeBSD: releng/9.2/contrib/top/layout.h 239750 2012-08-27 19:55:19Z jhb $
+ * $FreeBSD: stable/10/contrib/top/layout.h 237656 2012-06-27 18:08:48Z jhb $
*/
extern int x_lastpid; /* 10 */
Modified: trunk/contrib/top/machine.h
===================================================================
--- trunk/contrib/top/machine.h 2018-06-19 14:08:15 UTC (rev 11078)
+++ trunk/contrib/top/machine.h 2018-06-19 14:14:33 UTC (rev 11079)
@@ -1,5 +1,5 @@
/*
- * $FreeBSD: releng/9.2/contrib/top/machine.h 239750 2012-08-27 19:55:19Z jhb $
+ * $FreeBSD: stable/10/contrib/top/machine.h 301836 2016-06-12 05:57:42Z ngie $
*/
/*
@@ -7,7 +7,11 @@
* module. It is NOT machine dependent and should not need to be changed
* for any specific machine.
*/
+#ifndef MACHINE_H
+#define MACHINE_H
+#include "top.h"
+
/*
* the statics struct is filled in by machine_init
*/
@@ -66,6 +70,7 @@
int thread; /* show threads */
int uid; /* only this uid (unless uid == -1) */
int wcpu; /* show weighted cpu */
+ int jid; /* only this jid (unless jid == -1) */
int jail; /* show jail ID */
int kidle; /* show per-CPU idle threads */
char *command; /* only this command (unless == NULL) */
@@ -73,8 +78,14 @@
/* routines defined by the machine dependent module */
-char *format_header();
-char *format_next_process();
+char *format_header();
+char *format_next_process();
+void toggle_pcpustats(void);
+void get_system_info(struct system_info *si);
+int machine_init(struct statics *statics, char do_unames);
+int proc_owner(int pid);
/* non-int routines typically used by the machine dependent module */
-char *printable();
+char *printable();
+
+#endif /* MACHINE_H */
Modified: trunk/contrib/top/screen.c
===================================================================
--- trunk/contrib/top/screen.c 2018-06-19 14:08:15 UTC (rev 11078)
+++ trunk/contrib/top/screen.c 2018-06-19 14:14:33 UTC (rev 11079)
@@ -8,7 +8,7 @@
* Copyright (c) 1984, 1989, William LeFebvre, Rice University
* Copyright (c) 1989, 1990, 1992, William LeFebvre, Northwestern University
*
- * $FreeBSD: releng/9.2/contrib/top/screen.c 210386 2010-07-22 18:52:29Z rpaulo $
+ * $FreeBSD: stable/10/contrib/top/screen.c 301836 2016-06-12 05:57:42Z ngie $
*/
/* This file contains the routines that interface to termcap and stty/gtty.
@@ -50,7 +50,6 @@
extern char *myname;
-int putstdout();
int overstrike;
int screen_length;
@@ -236,6 +235,7 @@
#endif
}
+void
init_screen()
{
@@ -326,6 +326,7 @@
}
}
+void
end_screen()
{
@@ -356,6 +357,7 @@
}
}
+void
reinit_screen()
{
@@ -383,6 +385,7 @@
}
}
+void
get_screensize()
{
@@ -428,6 +431,7 @@
lower_left[sizeof(lower_left) - 1] = '\0';
}
+void
standout(msg)
char *msg;
@@ -445,6 +449,7 @@
}
}
+void
clear()
{
@@ -454,6 +459,7 @@
}
}
+int
clear_eol(len)
int len;
@@ -478,6 +484,7 @@
return(-1);
}
+void
go_home()
{
@@ -489,6 +496,7 @@
/* This has to be defined as a subroutine for tputs (instead of a macro) */
+void
putstdout(ch)
char ch;
Modified: trunk/contrib/top/screen.h
===================================================================
--- trunk/contrib/top/screen.h 2018-06-19 14:08:15 UTC (rev 11078)
+++ trunk/contrib/top/screen.h 2018-06-19 14:14:33 UTC (rev 11079)
@@ -28,4 +28,14 @@
extern int screen_width;
/* a function that puts a single character on stdout */
-int putstdout();
+void putstdout(char ch);
+int clear_eol(int len);
+void standout(char *msg);
+void clear(void);
+void go_home(void);
+void reinit_screen(void);
+void get_screensize(void);
+void init_termcap(int interactive);
+void end_screen(void);
+void init_screen(void);
+
Modified: trunk/contrib/top/sigconv.awk
===================================================================
--- trunk/contrib/top/sigconv.awk 2018-06-19 14:08:15 UTC (rev 11078)
+++ trunk/contrib/top/sigconv.awk 2018-06-19 14:14:33 UTC (rev 11079)
@@ -1,4 +1,4 @@
-# $FreeBSD: releng/9.2/contrib/top/sigconv.awk 164784 2006-12-01 07:01:19Z keramida $
+# $FreeBSD: stable/10/contrib/top/sigconv.awk 164784 2006-12-01 07:01:19Z keramida $
BEGIN {
nsig = 0;
Modified: trunk/contrib/top/top.c
===================================================================
--- trunk/contrib/top/top.c 2018-06-19 14:08:15 UTC (rev 11078)
+++ trunk/contrib/top/top.c 2018-06-19 14:14:33 UTC (rev 11079)
@@ -13,7 +13,7 @@
* Copyright (c) 1994, 1995, William LeFebvre, Argonne National Laboratory
* Copyright (c) 1996, William LeFebvre, Group sys Consulting
*
- * $FreeBSD: releng/9.2/contrib/top/top.c 239750 2012-08-27 19:55:19Z jhb $
+ * $FreeBSD: stable/10/contrib/top/top.c 301836 2016-06-12 05:57:42Z ngie $
*/
/*
@@ -34,13 +34,19 @@
*/
#include "os.h"
+
+#include <sys/jail.h>
+#include <sys/time.h>
+
+#include <ctype.h>
#include <errno.h>
+#include <jail.h>
+#include <setjmp.h>
#include <signal.h>
-#include <setjmp.h>
-#include <ctype.h>
-#include <sys/time.h>
+#include <unistd.h>
/* includes specific to top */
+#include "commands.h"
#include "display.h" /* interface to display package */
#include "screen.h" /* interface to screen package */
#include "top.h"
@@ -48,6 +54,7 @@
#include "boolean.h"
#include "machine.h"
#include "utils.h"
+#include "username.h"
/* Size of the stdio buffer given to stdout */
#define Buffersize 2048
@@ -112,38 +119,21 @@
char *username();
char *itoa7();
-/* display routines that need to be predeclared */
-int i_loadave();
-int u_loadave();
-int i_procstates();
-int u_procstates();
-int i_cpustates();
-int u_cpustates();
-int i_memory();
-int u_memory();
-int i_arc();
-int u_arc();
-int i_swap();
-int u_swap();
-int i_message();
-int u_message();
-int i_header();
-int u_header();
-int i_process();
-int u_process();
-
/* pointers to display routines */
-int (*d_loadave)() = i_loadave;
-int (*d_procstates)() = i_procstates;
-int (*d_cpustates)() = i_cpustates;
-int (*d_memory)() = i_memory;
-int (*d_arc)() = i_arc;
-int (*d_swap)() = i_swap;
-int (*d_message)() = i_message;
-int (*d_header)() = i_header;
-int (*d_process)() = i_process;
+void (*d_loadave)() = i_loadave;
+void (*d_procstates)() = i_procstates;
+void (*d_cpustates)() = i_cpustates;
+void (*d_memory)() = i_memory;
+void (*d_arc)() = i_arc;
+void (*d_swap)() = i_swap;
+void (*d_message)() = i_message;
+void (*d_header)() = i_header;
+void (*d_process)() = i_process;
+void reset_display(void);
+
+int
main(argc, argv)
int argc;
@@ -198,9 +188,9 @@
fd_set readfds;
#ifdef ORDER
- static char command_chars[] = "\f qh?en#sdkriIutHmSCajzPo";
+ static char command_chars[] = "\f qh?en#sdkriIutHmSCajzPJo";
#else
- static char command_chars[] = "\f qh?en#sdkriIutHmSCajzP";
+ static char command_chars[] = "\f qh?en#sdkriIutHmSCajzPJ";
#endif
/* these defines enumerate the "strchr"s of the commands in command_chars */
#define CMD_redraw 0
@@ -228,8 +218,9 @@
#define CMD_jidtog 21
#define CMD_kidletog 22
#define CMD_pcputog 23
+#define CMD_jail 24
#ifdef ORDER
-#define CMD_order 24
+#define CMD_order 25
#endif
/* set the buffer for stdout */
@@ -261,6 +252,7 @@
ps.uid = -1;
ps.thread = No;
ps.wcpu = 1;
+ ps.jid = -1;
ps.jail = No;
ps.kidle = Yes;
ps.command = NULL;
@@ -288,7 +280,7 @@
optind = 1;
}
- while ((i = getopt(ac, av, "CSIHPabijnquvzs:d:U:m:o:t")) != EOF)
+ while ((i = getopt(ac, av, "CSIHPabijJ:nquvzs:d:U:m:o:t")) != EOF)
{
switch(i)
{
@@ -413,6 +405,15 @@
ps.jail = !ps.jail;
break;
+ case 'J': /* display only jail's processes */
+ if ((ps.jid = jail_getid(optarg)) == -1)
+ {
+ fprintf(stderr, "%s: unknown jail\n", optarg);
+ exit(1);
+ }
+ ps.jail = 1;
+ break;
+
case 'P':
pcpu_stats = !pcpu_stats;
break;
@@ -425,7 +426,7 @@
fprintf(stderr,
"Top version %s\n"
"Usage: %s [-abCHIijnPqStuvz] [-d count] [-m io | cpu] [-o field] [-s time]\n"
-" [-U username] [number]\n",
+" [-J jail] [-U username] [number]\n",
version_string(), myname);
exit(1);
}
@@ -994,7 +995,7 @@
case CMD_user:
new_message(MT_standout,
- "Username to show: ");
+ "Username to show (+ for all): ");
if (readline(tempbuf2, sizeof(tempbuf2), No) > 0)
{
if (tempbuf2[0] == '+' &&
@@ -1085,6 +1086,44 @@
reset_display();
putchar('\r');
break;
+
+ case CMD_jail:
+ new_message(MT_standout,
+ "Jail to show (+ for all): ");
+ if (readline(tempbuf2, sizeof(tempbuf2), No) > 0)
+ {
+ if (tempbuf2[0] == '+' &&
+ tempbuf2[1] == '\0')
+ {
+ ps.jid = -1;
+ }
+ else if ((i = jail_getid(tempbuf2)) == -1)
+ {
+ new_message(MT_standout,
+ " %s: unknown jail", tempbuf2);
+ no_command = Yes;
+ }
+ else
+ {
+ ps.jid = i;
+ }
+ if (ps.jail == 0) {
+ ps.jail = 1;
+ new_message(MT_standout |
+ MT_delayed, " Displaying jail "
+ "ID.");
+ header_text =
+ format_header(uname_field);
+ reset_display();
+ }
+ putchar('\r');
+ }
+ else
+ {
+ clear_message();
+ }
+ break;
+
case CMD_kidletog:
ps.kidle = !ps.kidle;
new_message(MT_standout | MT_delayed,
@@ -1127,6 +1166,7 @@
* screen will get redrawn.
*/
+void
reset_display()
{
Modified: trunk/contrib/top/top.h
===================================================================
--- trunk/contrib/top/top.h 2018-06-19 14:08:15 UTC (rev 11078)
+++ trunk/contrib/top/top.h 2018-06-19 14:14:33 UTC (rev 11079)
@@ -1,5 +1,5 @@
/*
- * $FreeBSD: releng/9.2/contrib/top/top.h 223342 2011-06-20 16:48:00Z delphij $
+ * $FreeBSD: stable/10/contrib/top/top.h 301836 2016-06-12 05:57:42Z ngie $
*/
/*
* Top - a top users display for Berkeley Unix
@@ -7,6 +7,9 @@
* General (global) definitions
*/
+#ifndef TOP_H
+#define TOP_H
+
/* Current major version number */
#define VERSION 3
@@ -14,7 +17,7 @@
extern int Header_lines; /* 7 */
/* Maximum number of columns allowed for display */
-#define MAX_COLS 128
+#define MAX_COLS 512
/* Log base 2 of 1024 is 10 (2^10 == 1024) */
#define LOG1024 10
@@ -47,3 +50,5 @@
extern enum displaymodes displaymode;
extern int pcpu_stats;
+
+#endif /* TOP_H */
Added: trunk/contrib/top/top.local.hs
===================================================================
--- trunk/contrib/top/top.local.hs (rev 0)
+++ trunk/contrib/top/top.local.hs 2018-06-19 14:14:33 UTC (rev 11079)
@@ -0,0 +1,68 @@
+/*
+ * Top - a top users display for Berkeley Unix
+ *
+ * Definitions for things that might vary between installations.
+ */
+
+/*
+ * The space command forces an immediate update. Sometimes, on loaded
+ * systems, this update will take a significant period of time (because all
+ * the output is buffered). So, if the short-term load average is above
+ * "LoadMax", then top will put the cursor home immediately after the space
+ * is pressed before the next update is attempted. This serves as a visual
+ * acknowledgement of the command. On Suns, "LoadMax" will get multiplied by
+ * "FSCALE" before being compared to avenrun[0]. Therefore, "LoadMax"
+ * should always be specified as a floating point number.
+ */
+#ifndef LoadMax
+#define LoadMax %LoadMax%
+#endif
+
+/*
+ * "Table_size" defines the size of the hash tables used to map uid to
+ * username. The number of users in /etc/passwd CANNOT be greater than
+ * this number. If the error message "table overflow: too many users"
+ * is printed by top, then "Table_size" needs to be increased. Things will
+ * work best if the number is a prime number that is about twice the number
+ * of lines in /etc/passwd.
+ */
+#ifndef Table_size
+#define Table_size %TableSize%
+#endif
+
+/*
+ * "Nominal_TOPN" is used as the default TOPN when Default_TOPN is Infinity
+ * and the output is a dumb terminal. If we didn't do this, then
+ * installations who use a default TOPN of Infinity will get every
+ * process in the system when running top on a dumb terminal (or redirected
+ * to a file). Note that Nominal_TOPN is a default: it can still be
+ * overridden on the command line, even with the value "infinity".
+ */
+#ifndef Nominal_TOPN
+#define Nominal_TOPN %NominalTopn%
+#endif
+
+#ifndef Default_TOPN
+#define Default_TOPN %topn%
+#endif
+
+#ifndef Default_DELAY
+#define Default_DELAY %delay%
+#endif
+
+/*
+ * If the local system's getpwnam interface uses random access to retrieve
+ * a record (i.e.: 4.3 systems, Sun "yellow pages"), then defining
+ * RANDOM_PW will take advantage of that fact. If RANDOM_PW is defined,
+ * then getpwnam is used and the result is cached. If not, then getpwent
+ * is used to read and cache the password entries sequentially until the
+ * desired one is found.
+ *
+ * We initially set RANDOM_PW to something which is controllable by the
+ * Configure script. Then if its value is 0, we undef it.
+ */
+
+#define RANDOM_PW %random%
+#if RANDOM_PW == 0
+#undef RANDOM_PW
+#endif
Added: trunk/contrib/top/top.xs
===================================================================
--- trunk/contrib/top/top.xs (rev 0)
+++ trunk/contrib/top/top.xs 2018-06-19 14:14:33 UTC (rev 11079)
@@ -0,0 +1,448 @@
+.\" NOTE: changes to the manual page for "top" should be made in the
+.\" file "top.X" and NOT in the file "top.1".
+.\" $FreeBSD: stable/10/contrib/top/top.xs 284484 2015-06-17 02:30:12Z marcel $
+.nr N %topn%
+.nr D %delay%
+.TH TOP 1 Local
+.UC 4
+.SH NAME
+top \- display and update information about the top cpu processes
+.SH SYNOPSIS
+.B top
+[
+.B \-abCHIijnPqStuvz
+] [
+.BI \-d count
+] [
+.BI \-m io | cpu
+] [
+.BI \-o field
+] [
+.BI \-s time
+] [
+.BI \-J jail
+] [
+.BI \-U username
+] [
+.I number
+]
+.SH DESCRIPTION
+.\" This defines appropriate quote strings for nroff and troff
+.ds lq \&"
+.ds rq \&"
+.if t .ds lq ``
+.if t .ds rq ''
+.\" Just in case these number registers aren't set yet...
+.if \nN==0 .nr N 10
+.if \nD==0 .nr D 2
+.I Top
+displays the top
+.if !\nN==-1 \nN
+processes on the system and periodically updates this information.
+.if \nN==-1 \
+\{\
+If standard output is an intelligent terminal (see below) then
+as many processes as will fit on the terminal screen are displayed
+by default. Otherwise, a good number of them are shown (around 20).
+.\}
+Raw cpu percentage is used to rank the processes. If
+.I number
+is given, then the top
+.I number
+processes will be displayed instead of the default.
+.PP
+.I Top
+makes a distinction between terminals that support advanced capabilities
+and those that do not. This
+distinction affects the choice of defaults for certain options. In the
+remainder of this document, an \*(lqintelligent\*(rq terminal is one that
+supports cursor addressing, clear screen, and clear to end of line.
+Conversely, a \*(lqdumb\*(rq terminal is one that does not support such
+features. If the output of
+.I top
+is redirected to a file, it acts as if it were being run on a dumb
+terminal.
+.SH OPTIONS
+.TP
+.B \-C
+Toggle CPU display mode.
+By default top displays the weighted CPU percentage in the WCPU column
+(this is the same value that
+.IR ps (1)
+displays as CPU).
+Each time
+.B \-C
+flag is passed it toggles between \*(lqraw cpu\*(rq mode
+and \*(lqweighted cpu\*(rq mode, showing the \*(lqCPU\*(rq or
+the \*(lqWCPU\*(rq column respectively.
+.TP
+.B \-S
+Show system processes in the display. Normally, system processes such as
+the pager and the swapper are not shown. This option makes them visible.
+.TP
+.B \-a
+Display command names derived from the argv[] vector, rather than real
+executable name. It's useful when you want to watch applications, that
+puts their status information there. If the real name differs from argv[0],
+it will be displayed in parenthesis.
+.TP
+.B \-b
+Use \*(lqbatch\*(rq mode. In this mode, all input from the terminal is
+ignored. Interrupt characters (such as ^C and ^\e) still have an effect.
+This is the default on a dumb terminal, or when the output is not a terminal.
+.TP
+.B \-H
+Display each thread for a multithreaded process individually.
+By default a single summary line is displayed for each process.
+.TP
+.B \-i
+Use \*(lqinteractive\*(rq mode. In this mode, any input is immediately
+read for processing. See the section on \*(lqInteractive Mode\*(rq
+for an explanation of
+which keys perform what functions. After the command is processed, the
+screen will immediately be updated, even if the command was not
+understood. This mode is the default when standard output is an
+intelligent terminal.
+.TP
+.B \-I
+Do not display idle processes.
+By default, top displays both active and idle processes.
+.TP
+.B \-j
+Display the
+.IR jail (8)
+ID.
+.TP
+.B \-t
+Do not display the
+.I top
+process.
+.TP
+.BI \-m display
+Display either 'cpu' or 'io' statistics. Default is 'cpu'.
+.TP
+.B \-n
+Use \*(lqnon-interactive\*(rq mode. This is identical to \*(lqbatch\*(rq
+mode.
+.TP
+.B \-P
+Display per-cpu CPU usage statistics.
+.TP
+.B \-q
+Renice
+.I top
+to -20 so that it will run faster. This can be used when the system is
+being very sluggish to improve the possibility of discovering the problem.
+This option can only be used by root.
+.TP
+.B \-u
+Do not take the time to map uid numbers to usernames. Normally,
+.I top
+will read as much of the file \*(lq/etc/passwd\*(rq as is necessary to map
+all the user id numbers it encounters into login names. This option
+disables all that, while possibly decreasing execution time. The uid
+numbers are displayed instead of the names.
+.TP
+.B \-v
+Write version number information to stderr then exit immediately.
+No other processing takes place when this option is used. To see current
+revision information while top is running, use the help command \*(lq?\*(rq.
+.TP
+.B \-z
+Do not display the system idle process.
+.TP
+.BI \-d count
+Show only
+.I count
+displays, then exit. A display is considered to be one update of the
+screen. This option allows the user to select the number of displays he
+wants to see before
+.I top
+automatically exits. For intelligent terminals, no upper limit
+is set. The default is 1 for dumb terminals.
+.TP
+.BI \-s time
+Set the delay between screen updates to
+.I time
+seconds. The default delay between updates is \nD seconds.
+.TP
+.BI \-o field
+Sort the process display area on the specified field. The field name is
+the name of the column as seen in the output, but in lower case. Likely
+values are \*(lqcpu\*(rq, \*(lqsize\*(rq, \*(lqres\*(rq, and \*(lqtime\*(rq,
+but may vary on different operating systems. Note that
+not all operating systems support this option.
+.TP
+.BI \-J jail
+Show only those processes owned by
+.IR jail .
+This may be either the
+.B jid
+or
+.B name
+of the jail.
+Use
+.B 0
+to limit to host processes.
+Using this option implies the
+.B \-j
+flag.
+.PP
+.BI \-U username
+Show only those processes owned by
+.IR username .
+This option currently only accepts usernames and will not understand
+uid numbers.
+.PP
+Both
+.I count
+and
+.I number
+fields can be specified as \*(lqinfinite\*(rq, indicating that they can
+stretch as far as possible. This is accomplished by using any proper
+prefix of the keywords
+\*(lqinfinity\*(rq,
+\*(lqmaximum\*(rq,
+or
+\*(lqall\*(rq.
+The default for
+.I count
+on an intelligent terminal is, in fact,
+.BI infinity .
+.PP
+The environment variable
+.B TOP
+is examined for options before the command line is scanned. This enables
+a user to set his or her own defaults. The number of processes to display
+can also be specified in the environment variable
+.BR TOP .
+The options
+.BR \-a ,
+.BR \-C ,
+.BR \-H ,
+.BR \-I ,
+.BR \-j ,
+.BR \-P ,
+.BR \-S ,
+.BR \-t ,
+.BR \-u ,
+and
+.B \-z
+are actually toggles. A second specification of any of these options
+will negate the first. Thus a user who has the environment variable
+.B TOP
+set to \*(lq\-I\*(rq may use the command \*(lqtop \-I\*(rq to see idle processes.
+.SH "INTERACTIVE MODE"
+When
+.I top
+is running in \*(lqinteractive mode\*(rq, it reads commands from the
+terminal and acts upon them accordingly. In this mode, the terminal is
+put in \*(lqCBREAK\*(rq, so that a character will be
+processed as soon as it is typed. Almost always, a key will be
+pressed when
+.I top
+is between displays; that is, while it is waiting for
+.I time
+seconds to elapse. If this is the case, the command will be
+processed and the display will be updated immediately thereafter
+(reflecting any changes that the command may have specified). This
+happens even if the command was incorrect. If a key is pressed while
+.I top
+is in the middle of updating the display, it will finish the update and
+then process the command. Some commands require additional information,
+and the user will be prompted accordingly. While typing this information
+in, the user's erase and kill keys (as set up by the command
+.IR stty )
+are recognized, and a newline terminates the input.
+.PP
+These commands are currently recognized (^L refers to control-L):
+.TP
+.B ^L
+Redraw the screen.
+.IP "\fBh\fP\ or\ \fB?\fP"
+Display a summary of the commands (help screen). Version information
+is included in this display.
+.TP
+.B q
+Quit
+.IR top.
+.TP
+.B d
+Change the number of displays to show (prompt for new number).
+Remember that the next display counts as one, so typing
+.B d1
+will make
+.I top
+show one final display and then immediately exit.
+.TP
+.B m
+Toggle the display between 'cpu' and 'io' modes.
+.TP
+.B n or #
+Change the number of processes to display (prompt for new number).
+.TP
+.B s
+Change the number of seconds to delay between displays
+(prompt for new number).
+.TP
+.B S
+Toggle the display of system processes.
+.TP
+.B a
+Toggle the display of process titles.
+.TP
+.B k
+Send a signal (\*(lqkill\*(rq by default) to a list of processes. This
+acts similarly to the command
+.IR kill (1)).
+.TP
+.B r
+Change the priority (the \*(lqnice\*(rq) of a list of processes.
+This acts similarly to the command
+.IR renice (8)).
+.TP
+.B u
+Display only processes owned by a specific username (prompt for username).
+If the username specified is simply \*(lq+\*(rq, then processes belonging
+to all users will be displayed.
+.TP
+.B o
+Change the order in which the display is sorted. This command is not
+available on all systems. The sort key names vary from system to system
+but usually include: \*(lqcpu\*(rq, \*(lqres\*(rq, \*(lqsize\*(rq,
+\*(lqtime\*(rq. The default is cpu.
+.TP
+.B e
+Display a list of system errors (if any) generated by the last
+.BR k ill
+or
+.BR r enice
+command.
+.TP
+.B H
+Toggle the display of threads.
+.TP
+.B i
+(or
+.BR I )
+Toggle the display of idle processes.
+.TP
+.B j
+Toggle the display of
+.IR jail (8)
+ID.
+.TP
+.B J
+Display only processes owned by a specific jail (prompt for jail).
+If the jail specified is simply \*(lq+\*(rq, then processes belonging
+to all jails and the host will be displayed.
+This will also enable the display of JID.
+.TP
+.B P
+Toggle the display of per-CPU statistics.
+.TP
+.B t
+Toggle the display of the
+.I top
+process.
+.TP
+.B z
+Toggle the display of the system idle process.
+.SH "THE DISPLAY"
+The actual display varies depending on the specific variant of Unix
+that the machine is running. This description may not exactly match
+what is seen by top running on this particular machine. Differences
+are listed at the end of this manual entry.
+.PP
+The top few lines of the display show general information
+about the state of the system, including
+the last process id assigned to a process (on most systems),
+the three load averages,
+the current time,
+the number of existing processes,
+the number of processes in each state
+(sleeping, running, starting, zombies, and stopped),
+and a percentage of time spent in each of the processor states
+(user, nice, system, and idle).
+It also includes information about physical and virtual memory allocation.
+.PP
+The remainder of the screen displays information about individual
+processes. This display is similar in spirit to
+.IR ps (1)
+but it is not exactly the same. PID is the process id,
+JID, when displayed, is the
+.IR jail (8)
+ID corresponding to the process,
+USERNAME is the name of the process's owner (if
+.B \-u
+is specified, a UID column will be substituted for USERNAME),
+PRI is the current priority of the process,
+NICE is the nice amount (in the range \-20 to 20),
+SIZE is the total size of the process (text, data, and stack),
+RES is the current amount of resident memory (both SIZE and RES are
+given in kilobytes),
+STATE is the current state (one of \*(lqSTART\*(rq, \*(lqRUN\*(rq
+(shown as \*(lqCPUn\*(rq on SMP systems), \*(lqSLEEP\*(rq, \*(lqSTOP\*(rq,
+\*(lqZOMB\*(rq, \*(lqWAIT\*(rq, \*(lqLOCK\*(rq or the event on which the
+process waits),
+C is the processor number on which the process is executing
+(visible only on SMP systems),
+TIME is the number of system and user cpu seconds that the process has used,
+WCPU, when displayed, is the weighted cpu percentage (this is the same
+value that
+.IR ps (1)
+displays as CPU),
+CPU is the raw percentage and is the field that is sorted to determine
+the order of the processes, and
+COMMAND is the name of the command that the process is currently running
+(if the process is swapped out, this column is marked \*(lq<swapped>\*(rq).
+.SH NOTES
+If a process is in the \*(lqSLEEP\*(rq or \*(lqLOCK\*(rq state,
+the state column will report the name of the event or lock on which the
+process is waiting.
+Lock names are prefixed with an asterisk \*(lq*\*(rq while sleep events
+are not.
+.SH AUTHOR
+William LeFebvre, EECS Department, Northwestern University
+.SH ENVIRONMENT
+.DT
+TOP user-configurable defaults for options.
+.SH FILES
+.DT
+/dev/kmem kernel memory
+.br
+/dev/mem physical memory
+.br
+/etc/passwd used to map uid numbers to user names
+.br
+/boot/kernel/kernel system image
+.SH BUGS
+Don't shoot me, but the default for
+.B \-I
+has changed once again. So many people were confused by the fact that
+.I top
+wasn't showing them all the processes that I have decided to make the
+default behavior show idle processes, just like it did in version 2.
+But to appease folks who can't stand that behavior, I have added the
+ability to set \*(lqdefault\*(rq options in the environment variable
+.B TOP
+(see the OPTIONS section). Those who want the behavior that version
+3.0 had need only set the environment variable
+.B TOP
+to \*(lq\-I\*(rq.
+.PP
+The command name for swapped processes should be tracked down, but this
+would make the program run slower.
+.PP
+As with
+.IR ps (1),
+things can change while
+.I top
+is collecting information for an update. The picture it gives is only a
+close approximation to reality.
+.SH "SEE ALSO"
+kill(1),
+ps(1),
+stty(1),
+mem(4),
+renice(8)
Modified: trunk/contrib/top/username.c
===================================================================
--- trunk/contrib/top/username.c 2018-06-19 14:08:15 UTC (rev 11078)
+++ trunk/contrib/top/username.c 2018-06-19 14:14:33 UTC (rev 11079)
@@ -8,7 +8,7 @@
* Copyright (c) 1984, 1989, William LeFebvre, Rice University
* Copyright (c) 1989, 1990, 1992, William LeFebvre, Northwestern University
*
- * $FreeBSD: releng/9.2/contrib/top/username.c 200979 2009-12-25 09:02:41Z ed $
+ * $FreeBSD: stable/10/contrib/top/username.c 301836 2016-06-12 05:57:42Z ngie $
*/
/*
@@ -32,11 +32,15 @@
#include <sys/param.h>
#include <sys/types.h>
+
+#include <pwd.h>
#include <stdio.h>
-#include <pwd.h>
+#include <stdlib.h>
+#include <string.h>
#include "top.local.h"
#include "utils.h"
+#include "username.h"
struct hash_el {
int uid;
@@ -55,6 +59,8 @@
/* We depend on that for hash_table and YOUR compiler had BETTER do it! */
struct hash_el hash_table[Table_size];
+
+void
init_hash()
{
@@ -67,7 +73,7 @@
char *username(uid)
-register int uid;
+int uid;
{
register int hashindex;
@@ -106,8 +112,8 @@
int enter_user(uid, name, wecare)
-register int uid;
-register char *name;
+int uid;
+char *name;
int wecare; /* 1 = enter it always, 0 = nice to have */
{
@@ -142,7 +148,7 @@
int get_user(uid)
-register int uid;
+int uid;
{
struct passwd *pwd;
Added: trunk/contrib/top/username.h
===================================================================
--- trunk/contrib/top/username.h (rev 0)
+++ trunk/contrib/top/username.h 2018-06-19 14:14:33 UTC (rev 11079)
@@ -0,0 +1,23 @@
+/*
+ * Top users/processes display for Unix
+ * Version 3
+ *
+ * This program may be freely redistributed,
+ * but this entire comment MUST remain intact.
+ *
+ * Copyright (c) 1984, 1989, William LeFebvre, Rice University
+ * Copyright (c) 1989, 1990, 1992, William LeFebvre, Northwestern University
+ * Copyright (c) 2016, Randy Westlund
+ *
+ * $FreeBSD: stable/10/contrib/top/username.h 301836 2016-06-12 05:57:42Z ngie $
+ */
+#ifndef USERNAME_H
+#define USERNAME_H
+
+int enter_user(int uid, char *name, int wecare);
+int get_user(int uid);
+void init_hash(void);
+char *username(int uid);
+int userid(char *username);
+
+#endif /* USERNAME_H */
Property changes on: trunk/contrib/top/username.h
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+MidnightBSD=%H
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Modified: trunk/contrib/top/utils.c
===================================================================
--- trunk/contrib/top/utils.c 2018-06-19 14:08:15 UTC (rev 11078)
+++ trunk/contrib/top/utils.c 2018-06-19 14:14:33 UTC (rev 11079)
@@ -8,7 +8,7 @@
* Copyright (c) 1984, 1989, William LeFebvre, Rice University
* Copyright (c) 1989, 1990, 1992, William LeFebvre, Northwestern University
*
- * $FreeBSD: releng/9.2/contrib/top/utils.c 206842 2010-04-19 14:34:44Z nwhitehorn $
+ * $FreeBSD: stable/10/contrib/top/utils.c 206842 2010-04-19 14:34:44Z nwhitehorn $
*/
/*
Modified: trunk/contrib/top/utils.h
===================================================================
--- trunk/contrib/top/utils.h 2018-06-19 14:08:15 UTC (rev 11078)
+++ trunk/contrib/top/utils.h 2018-06-19 14:14:33 UTC (rev 11079)
@@ -22,3 +22,5 @@
char *format_time();
char *format_k();
char *format_k2(unsigned long long);
+int string_index(char *string, char **array);
+
Modified: trunk/contrib/top/version.c
===================================================================
--- trunk/contrib/top/version.c 2018-06-19 14:08:15 UTC (rev 11078)
+++ trunk/contrib/top/version.c 2018-06-19 14:14:33 UTC (rev 11079)
@@ -9,6 +9,9 @@
* Copyright (c) 1989, 1990, 1992, William LeFebvre, Northwestern University
*/
+#include <stdio.h>
+#include <string.h>
+
#include "top.h"
#include "patchlevel.h"
More information about the Midnightbsd-cvs
mailing list