summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAchim Gottinger <achim@gentoo.org>2001-06-09 02:10:54 +0000
committerAchim Gottinger <achim@gentoo.org>2001-06-09 02:10:54 +0000
commit3a186b8af61d1e6d2d359642b2fd113aebc57507 (patch)
tree168d0b2476fd1ca7dbdb22864113593ef5ff3e8b /sys-apps/procps/files
parent*** empty log message *** (diff)
downloadhistorical-3a186b8af61d1e6d2d359642b2fd113aebc57507.tar.gz
historical-3a186b8af61d1e6d2d359642b2fd113aebc57507.tar.bz2
historical-3a186b8af61d1e6d2d359642b2fd113aebc57507.zip
*** empty log message ***
Diffstat (limited to 'sys-apps/procps/files')
-rw-r--r--sys-apps/procps/files/procps-2.0.6.diff3401
1 files changed, 0 insertions, 3401 deletions
diff --git a/sys-apps/procps/files/procps-2.0.6.diff b/sys-apps/procps/files/procps-2.0.6.diff
deleted file mode 100644
index 24a24004414d..000000000000
--- a/sys-apps/procps/files/procps-2.0.6.diff
+++ /dev/null
@@ -1,3401 +0,0 @@
---- procps-2.0.6.orig/proc/Makefile
-+++ procps-2.0.6/proc/Makefile
-@@ -66,8 +66,8 @@
- $(INSTALL) $(LIBOWN) lib$(NAME).a $(LIBDIR)
- ifeq ($(SHARED),1)
- $(INSTALL) $(LIBOWN) $(SONAME) $(SHLIBDIR)
-- cd $(SHLIBDIR) && ln -sf $(SONAME) lib$(NAME).so
-- ldconfig
-+ #cd $(SHLIBDIR) && ln -sf $(SONAME) lib$(NAME).so
-+ #ldconfig
- endif
-
- # VARIOUS SHORT CUT TARGETS
---- procps-2.0.6.orig/proc/devname.c
-+++ procps-2.0.6/proc/devname.c
-@@ -100,7 +100,7 @@
- sprintf(buf, "/dev/tty%d", min);
- break;
- }
-- if(min<128){
-+ if(min<128){ /* to 255 on newer systems */
- sprintf(buf, "/dev/ttyS%d", min-64);
- break;
- }
-@@ -112,7 +112,8 @@
- break;
- case 17: sprintf(buf, "/dev/ttyH%d", min); break;
- case 19: sprintf(buf, "/dev/ttyC%d", min); break;
-- case 23: sprintf(buf, "/dev/ttyD%d", min); break;
-+ case 22: sprintf(buf, "/dev/ttyD%d", min); break; /* devices.txt */
-+ case 23: sprintf(buf, "/dev/ttyD%d", min); break; /* driver code */
- case 24: sprintf(buf, "/dev/ttyE%d", min); break;
- case 32: sprintf(buf, "/dev/ttyX%d", min); break;
- case 43: sprintf(buf, "/dev/ttyI%d", min); break;
-@@ -121,10 +122,19 @@
- case 57: sprintf(buf, "/dev/ttyP%d", min); break;
- case 71: sprintf(buf, "/dev/ttyF%d", min); break;
- case 75: sprintf(buf, "/dev/ttyW%d", min); break;
-- case 78: sprintf(buf, "/dev/ttyM%d", min); break;
-+ case 78: sprintf(buf, "/dev/ttyM%d", min); break; /* conflict */
- case 105: sprintf(buf, "/dev/ttyV%d", min); break;
-+ case 112: sprintf(buf, "/dev/ttyM%d", min); break; /* conflict */
- /* 136 ... 143 are /dev/pts/0, /dev/pts/1, /dev/pts/2 ... */
- case 136 ... 143: sprintf(buf, "/dev/pts/%d", min+(maj-136)*256); break;
-+ case 148: sprintf(buf, "/dev/ttyT%d", min); break;
-+ case 154: sprintf(buf, "/dev/ttySR%d", min); break;
-+ case 156: sprintf(buf, "/dev/ttySR%d", min+256); break;
-+ case 164: sprintf(buf, "/dev/ttyCH%d", min); break;
-+ case 166: sprintf(buf, "/dev/ttyACM%d", min); break; /* bummer, 9-char */
-+ case 172: sprintf(buf, "/dev/ttyMX%d", min); break;
-+ case 174: sprintf(buf, "/dev/ttySI%d", min); break;
-+ case 188: sprintf(buf, "/dev/ttyUSB%d", min); break; /* bummer, 9-char */
- default: return 0;
- }
- if(stat(buf, &sbuf) < 0) return 0;
-@@ -137,12 +147,12 @@
- * Useful names could be in /proc/PID/fd/2 (stderr, seldom redirected)
- * and in /proc/PID/fd/255 (used by bash to remember the tty).
- */
--static int fd_name(char * const buf, int maj, int min, int pid, int fd){
-+static int link_name(char * const buf, int maj, int min, int pid, char *name){
- struct stat sbuf;
- char path[32];
- int count;
-- sprintf(path, "/proc/%d/fd/%d", pid, fd); /* often permission denied */
-- count = readlink(path,buf,PAGE_SIZE);
-+ sprintf(path, "/proc/%d/%s", pid, name); /* often permission denied */
-+ count = readlink(path,buf,PAGE_SIZE-1);
- if(count == -1) return 0;
- buf[count] = '\0';
- if(stat(buf, &sbuf) < 0) return 0;
-@@ -158,10 +168,11 @@
- int i = 0;
- int c;
- if((short)dev == (short)-1) goto fail;
-- if( fd_name(tmp, major(dev), minor(dev), pid, 2 )) goto abbrev;
-- if( fd_name(tmp, major(dev), minor(dev), pid, 255)) goto abbrev;
-- if( guess_name(tmp, major(dev), minor(dev) )) goto abbrev;
-- if(driver_name(tmp, major(dev), minor(dev) )) goto abbrev;
-+ if( link_name(tmp, major(dev), minor(dev), pid, "tty" )) goto abbrev;
-+ if( link_name(tmp, major(dev), minor(dev), pid, "fd/2" )) goto abbrev;
-+ if( guess_name(tmp, major(dev), minor(dev) )) goto abbrev;
-+ if( link_name(tmp, major(dev), minor(dev), pid, "fd/255")) goto abbrev;
-+ if(driver_name(tmp, major(dev), minor(dev) )) goto abbrev;
- fail:
- strcpy(ret, "?");
- return 1;
---- procps-2.0.6.orig/proc/ksym.c
-+++ procps-2.0.6/proc/ksym.c
-@@ -25,6 +25,14 @@
-
- #if 0
- #undef KSYMS_FILENAME
-+#define KSYMS_FILENAME "/would/be/nice/to/have/this/file"
-+#define SYSMAP_FILENAME "/home/albert/ps/45621/System.map-hacked"
-+#define linux_version_code 131598 /* ? */
-+#define smp_num_cpus 2
-+#endif
-+
-+#if 0
-+#undef KSYMS_FILENAME
- #define KSYMS_FILENAME "/home/albert/ps/45621/ksyms-2.3.12"
- #define SYSMAP_FILENAME "/home/albert/ps/45621/System.map-2.3.12"
- #define linux_version_code 131852 /* 2.3.12 */
-@@ -47,24 +55,17 @@
- #define smp_num_cpus 2
- #endif
-
--/*
-- * '?' is a symbol type
-- * '.' is part of a name (versioning?)
-- * "\t[]" are for the module name in /proc/ksyms
-- */
--#define LEGAL_SYSMAP_CHARS "0123456789_ ?.\n\t[]" \
-- "abcdefghijklmnopqrstuvwxyz" \
-- "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
--
- /* These are the symbol types, with relative popularity:
-- * 4 W (not for i386)
-+ * ? w machine type junk for Alpha -- odd syntax
-+ * ? S not for i386
-+ * 4 W not for i386
- * 60 R
- * 100 A
- * 125 r
-- * 363 s (not for i386)
-+ * 363 s not for i386
- * 858 B
-- * 905 g (not for i386)
-- * 929 G (not for i386)
-+ * 905 g generated by modutils?
-+ * 929 G generated by modutils?
- * 1301 b
- * 2750 D
- * 4481 d
-@@ -75,7 +76,30 @@
- * For i386, that is: "RArBbDd?tT"
- */
-
--#define SYMBOL_TYPE_CHARS "Tt?dDbBrARGgsW"
-+#define SYMBOL_TYPE_CHARS "Tt?dDbBrARGgsWS"
-+
-+/*
-+ * '?' is a symbol type
-+ * '.' is part of a name (versioning?)
-+ * "\t[]" are for the module name in /proc/ksyms
-+ */
-+#define LEGAL_SYSMAP_CHARS "0123456789_ ?.\n\t[]" \
-+ "abcdefghijklmnopqrstuvwxyz" \
-+ "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
-+
-+/* System.map lines look like:
-+ * hex num, space, one of SYMBOL_TYPE_CHARS, space, LEGAL_SYSMAP_CHARS, \n
-+ *
-+ * Alpha systems can start with a few lines that have the address replaced
-+ * by space padding and a 'w' for the type. For those lines, the last space
-+ * is followed by something like: mikasa_primo_mv p2k_mv sable_gamma_mv
-+ * (just one of those, always with a "_mv", then the newline)
-+ *
-+ * The /proc/ksyms lines are like System.map lines w/o the symbol type char.
-+ * When odd features are used, the name part contains:
-+ * "(.*)_R(smp_|smp2gig_|2gig_)?[0-9a-fA-F]{8,}"
-+ * It is likely that more crap will be added...
-+ */
-
- typedef struct symb {
- const char *name;
-@@ -100,6 +124,63 @@
- static unsigned ksyms_count;
- static int idx_room;
-
-+/*********************************/
-+
-+/* Kill this: _R(smp_?|smp2gig_?|2gig_?)?[0-9a-f]{8,}$
-+ * We kill: (_R[^A-Z]*[0-9a-f]{8,})+$
-+ *
-+ * The loop should almost never be taken, but it has to be there.
-+ * It gets rid of anything that _looks_ like a version code, even
-+ * if a real version code has already been found. This is because
-+ * the inability to perfectly recognize a version code may lead to
-+ * symbol mangling, which in turn leads to mismatches between the
-+ * /proc/ksyms and System.map data files.
-+ */
-+#if 0
-+static void chop_version(char *arg){
-+ char *cp;
-+ cp = strchr(arg,'\t');
-+ if(cp) *cp = '\0'; /* kill trailing module name first */
-+ for(;;){
-+ char *p;
-+ int len = 0;
-+ cp = strrchr(arg, 'R');
-+ if(!cp || cp<=arg+1 || cp[-1]!='_') break;
-+ for(p=cp; *++p; ){
-+ switch(*p){
-+ default:
-+ return;
-+ case '0' ... '9':
-+ case 'a' ... 'f':
-+ len++;
-+ continue;
-+ case 'g' ... 'z':
-+ case '_':
-+ len=0;
-+ continue;
-+ }
-+ }
-+ if(len<8) break;
-+ cp[-1] = '\0';
-+ }
-+}
-+#endif
-+static void chop_version(char *arg){
-+ char *cp;
-+ cp = strchr(arg,'\t');
-+ if(cp) *cp = '\0'; /* kill trailing module name first */
-+ for(;;){
-+ int len;
-+ cp = strrchr(arg, 'R');
-+ if(!cp || cp<=arg+1 || cp[-1]!='_') break;
-+ len=strlen(cp);
-+ if(len<9) break;
-+ if(strpbrk(cp+1,"ABCDEFGHIJKLMNOPQRSTUVWXYZ")) break;
-+ if(strspn(cp+len-8,"0123456789abcdef")!=8) break;
-+ cp[-1] = '\0';
-+ }
-+}
-+
- /***********************************/
-
- static const symb *search(unsigned long address, symb *idx, unsigned count){
-@@ -174,12 +255,14 @@
- }
- *bufp = buf;
- *roomp = room;
-+ close(fd);
- return;
- hell:
- if(buf) free(buf);
- *bufp = NULL;
- *roomp = 0; /* this function will never work again */
- total = 0;
-+ close(fd);
- return;
- }
-
-@@ -189,6 +272,7 @@
- char *endp;
- if(!ksyms_room || !ksyms_data) goto quiet_goodbye;
- endp = ksyms_data;
-+ ksyms_count = 0;
- if(idx_room) goto bypass; /* some space already allocated */
- idx_room = 512;
- for(;;){
-@@ -201,36 +285,16 @@
- for(;;){
- char *saved;
- if(!*endp) return 1;
-+ saved = endp;
- ksyms_index[ksyms_count].addr = strtoul(endp, &endp, 16);
-- if(*endp != ' ') goto bad_parse;
-+ if(endp==saved || *endp != ' ') goto bad_parse;
- endp++;
- ksyms_index[ksyms_count].name = endp;
- saved = endp;
- endp = strchr(endp,'\n');
- if(!endp) goto bad_parse; /* no newline */
- *endp = '\0';
-- if(1){ /* The Killing Scope */
-- char *cp;
-- cp = strchr(endp,'\t');
-- if(cp) *cp = '\0'; /* kill trailing module name */
-- if(smp_num_cpus==1){
-- saved = strrchr(saved, '_');
-- if(saved && saved[1]=='R' && saved[2] && !(strlen(saved+2)&7)){
-- /* could be crummy version info */
-- char *endp2;
-- strtoul(saved+2, &endp2, 16);
-- if(!*endp2) *saved = '\0'; /* Die version, DIE!!! */
-- }
-- }else{
-- saved = strstr(saved, "_Rsmp_");
-- if(saved && !(strlen(saved+6)&7)){
-- /* could be crummy version info */
-- char *endp2;
-- strtoul(saved+6, &endp2, 16);
-- if(!*endp2) *saved = '\0'; /* Die version, DIE!!! */
-- }
-- }
-- } /* end killing scope */
-+ chop_version(saved);
- ++endp;
- if(++ksyms_count >= idx_room) break; /* need more space */
- }
-@@ -270,6 +334,14 @@
- /* Would be shared read-only, but we want '\0' after each name. */
- endp = mmap(0, sbuf.st_size + 1, PROT_READ|PROT_WRITE, MAP_PRIVATE, fd, 0);
- sysmap_data = endp;
-+ while(*endp==' '){ /* damn Alpha machine types */
-+ if(strncmp(endp," w ", 19)) goto bad_parse;
-+ endp += 19;
-+ endp = strchr(endp,'\n');
-+ if(!endp) goto bad_parse; /* no newline */
-+ if(strncmp(endp-3, "_mv\n", 4)) goto bad_parse;
-+ endp++;
-+ }
- if(sysmap_data == (caddr_t) -1) goto bad_open;
- close(fd);
- fd = -1;
-@@ -330,6 +402,7 @@
- if(!endp) goto bad_parse; /* no newline */
- *endp = '\0';
- ++endp;
-+ chop_version(vstart);
- if(*vstart=='V' && *Version && !strcmp(Version,vstart)) *Version='\0';
- if(++sysmap_count >= sysmap_room) break; /* need more space */
- }
-@@ -456,11 +529,3 @@
-
- return ret;
- }
--
--
--
--
--
--
--
--
---- procps-2.0.6.orig/proc/readproc.c
-+++ procps-2.0.6/proc/readproc.c
-@@ -14,6 +14,7 @@
- #include <stdarg.h>
- #include <string.h>
- #include <unistd.h>
-+#include <signal.h>
- #include <fcntl.h>
- #include <sys/dir.h>
- #include <sys/types.h>
-@@ -154,6 +155,9 @@
- int num;
- char* tmp = strrchr(S, ')'); /* split into "PID (cmd" and "<rest>" */
- *tmp = '\0'; /* replace trailing ')' with NUL */
-+ /* fill in default values for older kernels */
-+ P->exit_signal = SIGCHLD;
-+ P->processor = 0;
- /* parse these two strings separately, skipping the leading "(". */
- memset(P->cmd, 0, sizeof P->cmd); /* clear even though *P xcalloc'd ?! */
- sscanf(S, "%d (%15c", &P->pid, P->cmd); /* comm[16] in kernel */
-@@ -166,7 +170,8 @@
- "%ld "
- "%lu %lu %lu %lu %lu %lu "
- "%*s %*s %*s %*s " /* discard, no RT signals & Linux 2.1 used hex */
-- "%lu %lu %lu",
-+ "%lu %lu %lu "
-+ "%d %d",
- &P->state,
- &P->ppid, &P->pgrp, &P->session, &P->tty, &P->tpgid,
- &P->flags, &P->min_flt, &P->cmin_flt, &P->maj_flt, &P->cmaj_flt, &P->utime, &P->stime,
-@@ -175,18 +180,15 @@
- &P->rss,
- &P->rss_rlim, &P->start_code, &P->end_code, &P->start_stack, &P->kstk_esp, &P->kstk_eip,
- /* P->signal, P->blocked, P->sigignore, P->sigcatch, */ /* can't use */
-- &P->wchan, &P->nswap, &P->cnswap /* , &P->exit_signal */);
--/* TODO: add &P->exit_signal support here, perhaps to identify Linux threads */
-+ &P->wchan, &P->nswap, &P->cnswap,
-+/* -- Linux 2.0.35 ends here -- */
-+ &P->exit_signal, &P->processor /* 2.2.1 ends with "exit_signal" */
-+/* -- Linux 2.2.8 and 2.3.47 end here -- */
-+ );
-
--/* fprintf(stderr, "stat2proc converted %d fields.\n",num); */
-+ /* fprintf(stderr, "stat2proc converted %d fields.\n",num); */
- if (P->tty == 0)
- P->tty = -1; /* the old notty val, update elsewhere bef. moving to 0 */
-- if (linux_version_code < LINUX_VERSION(1,3,39)) {
-- P->priority = 2*15 - P->priority; /* map old meanings to new */
-- P->nice = 15 - P->nice;
-- }
-- if (linux_version_code < LINUX_VERSION(1,1,30) && P->tty != -1)
-- P->tty = 4*0x100 + P->tty; /* when tty wasn't full devno */
- }
-
- static void statm2proc(char* s, proc_t* P) {
-@@ -504,55 +506,6 @@
- return NULL;
- }
-
--#if 0
--static proc_t* readproctree(int flags, ...) {
-- static proc_t tree;
-- PROCTAB* PT = NULL;
-- proc_t *node, *tmp=NULL, *tmp2=NULL;
-- va_list ap;
--
-- /* pass through apropriate arguments to openproc */
-- va_start(ap, flags);
-- if (Do(UID)) {
-- /* temporary variables to ensure that va_arg() instances
-- * are called in the right order
-- */
-- uid_t* u;
-- int i;
--
-- u = va_arg(ap, uid_t*);
-- i = va_arg(ap, int);
-- PT = openproc(flags, u, i);
-- }
-- else if (Do(PID) || Do(TTY) || Do(STAT))
-- PT = openproc(flags, va_arg(ap, void*));
-- else
-- PT = openproc(flags);
-- va_end(ap);
--
-- /* first pass: build tree, putting orphans on the first level */
-- tree.l = tree.r = NULL;
-- while ((node = readproc(PT,0)))
-- if ((tmp = LookupPID(&tree, node->ppid))) {
-- node->r = tmp->l->r; /* node --> left list of parent */
-- tmp->l->r = node;
-- } else {
-- node->r = tree.r; /* node --> right list of 'tree' */
-- tree.r = node;
-- }
-- /* second pass: scan tree for PPIDs of level-1 nodes moving links as necessary */
-- for (node = &tree; node; node = node->r)
-- if ((tmp = LookupPID(&tree, node->r->ppid))) {
-- tmp2 = node->r; /* unlink from right list of 'tree' */
-- node->r = node->r->r;
-- tmp2->r = tmp->l->r; /* insert as child of found node */
-- tmp->l->r = node;
-- }
-- closeproc(PT);
-- return &tree;
--}
--#endif
--
- /* Convenient wrapper around openproc and readproc to slurp in the whole process
- * table subset satisfying the constraints of flags and the optional PID list.
- * Free allocated memory with freeproctab(). Access via tab[N]->member. The
-@@ -588,14 +541,3 @@
- closeproc(PT);
- return tab;
- }
--
--#if 0
--/* deallocate a table of pointers to proc structures
-- */
--static void freeproctab(proc_t** tab) {
-- proc_t** p;
-- for(p = tab; *p; p++)
-- freeproc(*p);
-- free(tab);
--}
--#endif
---- procps-2.0.6.orig/proc/readproc.h
-+++ procps-2.0.6/proc/readproc.h
-@@ -50,7 +50,7 @@
- priority, /* kernel scheduling priority */
- timeout, /* ? */
- nice, /* standard unix nice level of process */
-- rss, /* resident set size from /proc/#/stat */
-+ rss, /* resident set size from /proc/#/stat (pages) */
- it_real_value, /* ? */
- /* the next 7 members come from /proc/#/statm */
- size, /* total # of pages of memory */
-@@ -70,7 +70,7 @@
- vm_exe, /* executable size */
- vm_lib, /* library size (all pages, not just used ones) */
- vsize, /* number of pages of virtual memory ... */
-- rss_rlim, /* resident set size ... ? */
-+ rss_rlim, /* resident set size limit? */
- flags, /* kernel flags for the process */
- min_flt, /* number of minor page faults since process start */
- maj_flt, /* number of major page faults since process start */
-@@ -113,7 +113,9 @@
- pgrp, /* process group id */
- session, /* session id */
- tty, /* full device number of controlling terminal */
-- tpgid; /* terminal process group id */
-+ tpgid, /* terminal process group id */
-+ exit_signal, /* might not be SIGCHLD */
-+ processor; /* current (or most recent?) CPU */
- unsigned
- pcpu; /* %CPU usage (is not filled in by readproc!!!) */
- char
---- procps-2.0.6.orig/proc/sysinfo.c
-+++ procps-2.0.6/proc/sysinfo.c
-@@ -49,20 +49,20 @@
- static int local_n; \
- if (fd == -1 && (fd = open(filename, O_RDONLY)) == -1) { \
- fprintf(stderr, BAD_OPEN_MESSAGE); \
-- close(fd); \
-- exit(102); \
-+ fflush(NULL); \
-+ _exit(102); \
- } \
- lseek(fd, 0L, SEEK_SET); \
- if ((local_n = read(fd, buf, sizeof buf - 1)) < 0) { \
- perror(filename); \
-- close(fd); \
-- fd = -1; \
-- exit(103); \
-+ fflush(NULL); \
-+ _exit(103); \
- } \
- buf[local_n] = '\0'; \
- }while(0)
-
--#define SET_IF_DESIRED(x,y) if(x) *(x) = (y) /* evals 'x' twice */
-+/* evals 'x' twice */
-+#define SET_IF_DESIRED(x,y) do{ if(x) *(x) = (y); }while(0)
-
-
- /***********************************************************************/
-@@ -110,7 +110,7 @@
- double up_1, up_2, seconds;
- unsigned long jiffies, h;
- smp_num_cpus = sysconf(_SC_NPROCESSORS_CONF);
-- if(smp_num_cpus==-1) smp_num_cpus=1;
-+ if(smp_num_cpus<1) smp_num_cpus=1;
- do{
- FILE_TO_BUF(UPTIME_FILE,uptime_fd); sscanf(buf, "%lf", &up_1);
- /* uptime(&up_1, NULL); */
-@@ -145,22 +145,46 @@
- }
- }
-
--/***********************************************************************/
-+/***********************************************************************
-+ * The /proc filesystem calculates idle=jiffies-(user+nice+sys) and we
-+ * recover jiffies by adding up the 4 numbers we are given. SMP kernels
-+ * (as of pre-2.4 era) can report idle time going backwards, perhaps due
-+ * to non-atomic reads and updates. There is no locking for these values.
-+ */
-+#ifndef NAN
-+#define NAN (-0.0)
-+#endif
- #define JT unsigned long
--void four_cpu_numbers(JT *uret, JT *nret, JT *sret, JT *iret) {
-- static JT u, n, s, i;
-- JT user_j, nice_j, sys_j, idle_j;
--
-+void four_cpu_numbers(double *uret, double *nret, double *sret, double *iret){
-+ double tmp_u, tmp_n, tmp_s, tmp_i;
-+ double scale; /* scale values to % */
-+ static JT old_u, old_n, old_s, old_i;
-+ JT new_u, new_n, new_s, new_i;
-+ JT ticks_past; /* avoid div-by-0 by not calling too often :-( */
-+
- FILE_TO_BUF(STAT_FILE,stat_fd);
-- sscanf(buf, "cpu %lu %lu %lu %lu", &user_j, &nice_j, &sys_j, &idle_j);
-- SET_IF_DESIRED(uret, user_j-u);
-- SET_IF_DESIRED(nret, nice_j-n);
-- SET_IF_DESIRED(sret, sys_j-s);
-- SET_IF_DESIRED(iret, idle_j-i);
-- u=user_j;
-- n=nice_j;
-- s=sys_j;
-- i=idle_j;
-+ sscanf(buf, "cpu %lu %lu %lu %lu", &new_u, &new_n, &new_s, &new_i);
-+ ticks_past = (new_u+new_n+new_s+new_i)-(old_u+old_n+old_s+old_i);
-+ if(ticks_past){
-+ scale = 100.0 / (double)ticks_past;
-+ tmp_u = ( (double)new_u - (double)old_u ) * scale;
-+ tmp_n = ( (double)new_n - (double)old_n ) * scale;
-+ tmp_s = ( (double)new_s - (double)old_s ) * scale;
-+ tmp_i = ( (double)new_i - (double)old_i ) * scale;
-+ }else{
-+ tmp_u = NAN;
-+ tmp_n = NAN;
-+ tmp_s = NAN;
-+ tmp_i = NAN;
-+ }
-+ SET_IF_DESIRED(uret, tmp_u);
-+ SET_IF_DESIRED(nret, tmp_n);
-+ SET_IF_DESIRED(sret, tmp_s);
-+ SET_IF_DESIRED(iret, tmp_i);
-+ old_u=new_u;
-+ old_n=new_n;
-+ old_s=new_s;
-+ old_i=new_i;
- }
- #undef JT
-
-@@ -199,15 +223,19 @@
- return strcmp(((mem_table_struct*)a)->name,((mem_table_struct*)b)->name);
- }
-
--/* example data, following junk:
-+/* example data, following junk, with comments:
- *
- * Buffers: 2636 kB
- * Cached: 27276 kB
- * MemFree: 1852 kB
-- * MemShared: 20664 kB
-+ * MemShared: 20664 kB Recent kernels do not calculate this.
- * MemTotal: 63088 kB
- * SwapFree: 99180 kB
- * SwapTotal: 122588 kB
-+ * HighTotal: 0 kB New!
-+ * HighFree: 0 kB New!
-+ * LowTotal: 255596 kB New!
-+ * LowFree: 62260 kB New!
- */
-
- unsigned kb_main_buffers;
---- procps-2.0.6.orig/proc/sig.c
-+++ procps-2.0.6/proc/sig.c
-@@ -27,20 +27,15 @@
- * Nearly garbage: SIGSTKFLT SIGUNUSED (nothing else to fill slots)
- */
-
--#ifdef SIGSYS
--# ifndef SIGEMT
--# error You have SIGSYS without SIGEMT? What did it replace?
--# endif
--# undef SIGUNUSED
--# undef SIGSTKFLT
--#else
--# ifndef SIGUNUSED
--# error You seem to be missing some signals.
--# endif
--# ifndef SIGSTKFLT
--# error You seem to be missing some signals.
--# endif
-+/* Linux 2.3.29 replaces SIGUNUSED with the standard SIGSYS signal */
-+#ifndef SIGSYS
- # warning Standards require that <signal.h> define SIGSYS
-+# define SIGSYS SIGUNUSED
-+#endif
-+
-+/* If we see both, it is likely SIGSTKFLT (junk) was replaced. */
-+#ifdef SIGEMT
-+# undef SIGSTKFLT
- #endif
-
- #ifndef SIGRTMIN
-@@ -84,17 +79,12 @@
- {"STKFLT", SIGSTKFLT},
- #endif
- {"STOP", SIGSTOP},
--#ifdef SIGSYS
-- {"SYS", SIGSYS},
--#endif
-+ {"SYS", SIGSYS}, /* UNUSED */
- {"TERM", SIGTERM},
- {"TRAP", SIGTRAP},
- {"TSTP", SIGTSTP},
- {"TTIN", SIGTTIN},
- {"TTOU", SIGTTOU},
--#ifdef SIGUNUSED
-- {"UNUSED", SIGUNUSED},
--#endif
- {"URG", SIGURG},
- {"USR1", SIGUSR1},
- {"USR2", SIGUSR2},
---- procps-2.0.6.orig/proc/sysinfo.h
-+++ procps-2.0.6/proc/sysinfo.h
-@@ -4,7 +4,7 @@
- extern unsigned long Hertz; /* clock tick frequency */
- extern long smp_num_cpus; /* number of CPUs */
-
--#define JT unsigned long
-+#define JT double
- extern void four_cpu_numbers(JT *uret, JT *nret, JT *sret, JT *iret);
- #undef JT
-
---- procps-2.0.6.orig/BUGS
-+++ procps-2.0.6/BUGS
-@@ -9,7 +9,7 @@
-
- Where to send
- =============
--Send comments, bug reports, patches, etc., to procps-bugs@redhat.com
-+Send comments, bug reports, patches, etc., to acahalan@cs.uml.edu
-
-
- What to send
---- procps-2.0.6.orig/NEWS
-+++ procps-2.0.6/NEWS
-@@ -1,5 +1,7 @@
- NEWS: what has changed recently with procps, in reverse cronological order.
--Please send bug reports to procps-bugs@redhat.com
-+Please send bug reports to acahalan@cs.uml.edu
-+
-+*** THIS FILE DOES NOT INCLUDE RECENT CHANGES ***
-
-
- NEWS for version 2.0.6 of procps
---- procps-2.0.6.orig/Makefile
-+++ procps-2.0.6/Makefile
-@@ -4,8 +4,8 @@
- PREFIX = #proc# prefix for program names
-
- DESTDIR = /
--MAN1DIR = ${DESTDIR}/usr/man/man1
--MAN8DIR = ${DESTDIR}/usr/man/man8
-+MAN1DIR = ${DESTDIR}/usr/share/man/man1
-+MAN8DIR = ${DESTDIR}/usr/share/man/man8
- BINDIR = ${DESTDIR}/bin
- SBINDIR = ${DESTDIR}/sbin
- XBINDIR = ${DESTDIR}/usr/X11R6/bin
---- procps-2.0.6.orig/TODO
-+++ procps-2.0.6/TODO
-@@ -9,12 +9,27 @@
- killall pstree fuser lsof who
- (they are maintained elsewhere, which causes version problems)
-
--See if the syslogd & klogd maintainer will take XConsole.
--
- Cache results of dev_to_tty.
-
- ---------------------- kernel -------------------------
-
-+Add an "adopted child" flag to mark processes that are not
-+natural children of init. This can make --forest work better.
-+
-+Add a thread group ID, to be shared by all tasks that are related by
-+the clone() system call. This ID might be made unique from boot to
-+shutdown, perhaps being a 16-bit CPU number and 48-bit per-CPU
-+serial number.
-+
-+Make the kernel group /proc listing output by thread group.
-+Without this, a thread-aware ps must always sort processes.
-+
-+Supply the task ID (the "PID"/"TID") of the thread group leader.
-+I define "leader" as the first process of a thread group.
-+
-+Don't reuse the task ID of a thread group leader until all threads
-+are dead. Better yet, don't let the leader exit.
-+
- Supply better data for top's CPU state display. Currently top has
- to subtract old numbers from new numbers and divide that result by
- the number of processors. The kernel won't even supply the number
-@@ -41,6 +56,8 @@
- of 64-bit values on all machines. New entries go on the end and obsolete
- ones get filled in with something logical -- entries must never be deleted!
-
-+Add all the stuff Solaris has. This would also replace ptrace.
-+
- The kernel should provide a "current CPU number" indication for SMP. Maybe
- use "last CPU number" if not currently running, since processor affinity
- will tend to put the process back on the same CPU it had before.
-@@ -58,20 +75,12 @@
- Verify that DNS control does not give a user the power to specify
- arbitrary data for the FROM column. (could set root's VGA color map!)
-
------------------------ watch --------------------------
--
--Should catch SIGWINCH and adjust as needed.
--Tell 29970@bugs.debian.org when done.
--
- ---------------------- vmstat --------------------------
-
- Extract /proc/stat parsing from vmstat into libproc somewhere.
-
- --------------------- libproc ----------------------
-
--Remove pre-2.0 /proc/meminfo support from proc/sysinfo.c to simplify the code.
--Parse the 2.0 format in a better manner, perhaps like ps does long options.
--
- Stop storing fields with duplicate info (often different
- units: kB and pages, seconds and jiffies) in the proc_t struct.
-
-@@ -79,9 +88,6 @@
-
- Share more stuff with ps.
-
---------------------- skill ------------------------
--
--
- ---------------- ps for now, maybe move to libproc ------------------
-
- With forest output and a tty named /dev/this_is_my_tty, the position
-@@ -126,8 +132,6 @@
- are reported as being 5 days old, while boot processes look normal)
- (reported for procps-2.0.2 in May 1999)
-
--Make "ps --sort:pcpu" work. (p->pcpu is not filled in)
--
- Show real-time priorities. (type & number)
-
- Add an option to select all processes that a user can kill.
-@@ -150,7 +154,7 @@
- code as much as the kernel can support. Make sure that memory amounts are in
- pages when they should be and in kB when they should be, not backwards.
-
--output encoding: UTF8 --nul --null --html
-+output encoding: UTF8 --nul --null
-
- Make BSD formats use non-standard BSD time format, at least when it
- doesn't violate the "no whitespace" rule.
---- procps-2.0.6.orig/free.1
-+++ procps-2.0.6/free.1
-@@ -41,5 +41,5 @@
- .SH AUTHORS
- Written by Brian Edmonds.
-
--Send bug reports to <procps-bugs@redhat.com>
-+Send bug reports to <acahalan@cs.uml.edu>
-
---- procps-2.0.6.orig/free.c
-+++ procps-2.0.6/free.c
-@@ -17,13 +17,9 @@
- static int total = 0;
-
- int main(int argc, char *argv[]){
-- char buf1[80], buf2[80];
-- char *titles[6], name[32];
-- int i, n = 0, col[6] = {0}, rtime = 0, old_fmt = 0, first_line;
-- int old_meminfo = 0;
-- unsigned **mem;
--
-- static int sum[6]; /* statics get initialized to zero */
-+ int i;
-+ int old_fmt = 0;
-+ int rtime = 0;
-
- /* check startup flags */
- while( (i = getopt(argc, argv, "bkmos:tV") ) != -1 )
---- procps-2.0.6.orig/procps.lsm
-+++ procps-2.0.6/procps.lsm
-@@ -1,16 +1,16 @@
- Begin3
- Title: procps
--Version: 2.0.6
--Entered-date: 02NOV99
-+Version: 000110
-+Entered-date: 10JAN00
- Description: Procps is a library which parses the textual /proc filesystem
- and a suite of utilites which use the library.
- Keywords: procps /proc libproc
- ps uptime tload free w top vmstat watch skill snice kill
- Author: Michael K. Johnson, Charles Blake, Albert Cahalan, many others.
--Maintained-by: Michael K. Johnson <procps-bugs@redhat.com>
--Primary-site: tsx-11.mit.edu /pub/linux/sources/usr.bin/
-- 185kB procps-2.0.6.tar.gz
--Alternate-site: sunsite.unc.edu /pub/Linux/system/Status/ps
-- 185kB procps-2.0.6.tar.gz
-+Maintained-by: various <acahalan@cs.uml.edu>
-+Primary-site: http://www.cs.uml.edu/~acahalan/linux/
-+ 185kB procps-000110.tar.gz
-+Alternate-site: http://www.debian.org/Packages/unstable/base/procps.html
-+ 185kB procps-000110.tar.gz
- Copying-policy: mixed
- End
---- procps-2.0.6.orig/ps/display.c
-+++ procps-2.0.6/ps/display.c
-@@ -41,7 +41,7 @@
- fprintf(stderr,
- "\n\n"
- "Signal %d caught by ps (%s).\n"
-- "Please send bug reports to <procps-bugs@redhat.com>\n",
-+ "Please send bug reports to <acahalan@cs.uml.edu>\n",
- signo,
- procps_version
- );
-@@ -201,6 +201,10 @@
- proc_t buf;
- PROCTAB* ptp;
- ptp = openproc(PROC_FILLBUG);
-+ if(!ptp) {
-+ fprintf(stderr, "Error: can not access /proc.\n");
-+ exit(1);
-+ }
- memset(&buf, '#', sizeof(proc_t));
- /* use "ps_" prefix to catch library mismatch */
- while(ps_readproc(ptp,&buf)){
-@@ -269,6 +273,7 @@
-
- /***** show tree */
- /* this needs some optimization work */
-+#define ADOPTED(x) 1
- static void show_tree(const int self, const int n, const int level, const int have_sibling){
- int i = 0;
- if(level){
-@@ -293,11 +298,18 @@
- forest_prefix[level] = '\0';
- }
- for(;;){
-+ int self_pid;
- int more_children = 1;
- if(i >= n) break; /* over the edge */
-- if(i+1 >= n) more_children = 0;
-- else if(processes[i+1]->ppid != processes[self]->pid) more_children = 0;
-- show_tree(i++, n, level+1, more_children);
-+ self_pid=processes[self]->pid;
-+ if(i+1 >= n)
-+ more_children = 0;
-+ else
-+ if(processes[i+1]->ppid != self_pid) more_children = 0;
-+ if(self_pid==1 && ADOPTED(processes[i]) && forest_type!='u')
-+ show_tree(i++, n, level, more_children);
-+ else
-+ show_tree(i++, n, level+1, more_children);
- if(!more_children) break;
- }
- /* chop prefix that children added -- do we need this? */
-@@ -325,6 +337,10 @@
- PROCTAB* ptp;
- int n = 0; /* number of processes & index into array */
- ptp = openproc(PROC_FILLBUG);
-+ if(!ptp) {
-+ fprintf(stderr, "Error: can not access /proc.\n");
-+ exit(1);
-+ }
- while((retbuf = ps_readproc(ptp,NULL))){
- fill_pcpu(retbuf);
- if(want_this_proc(retbuf)) processes[n++] = retbuf;
-@@ -341,15 +357,6 @@
-
- /***** no comment */
- int main(int argc, char *argv[]){
-- if(getuid()!=geteuid()){
-- fprintf(stderr, "This /bin/ps is not secure for setuid operation.");
-- exit(1);
-- }
-- if(getgid()!=getegid()){
-- fprintf(stderr, "This /bin/ps is not secure for setgid operation.");
-- exit(1);
-- }
--
- #ifdef DEBUG
- init_stack_trace(argv[0]);
- #else
---- procps-2.0.6.orig/ps/parser.c
-+++ procps-2.0.6/ps/parser.c
-@@ -87,19 +87,16 @@
- static const char *parse_uid(char *str, sel_union *ret){
- struct passwd *passwd_data;
- char *endp;
-- int num;
-+ unsigned long num;
- static const char *uidrange = "User ID out of range.";
- static const char *uidexist = "User name does not exist.";
-- num = strtol(str, &endp, 0);
-+ num = strtoul(str, &endp, 0);
- if(*endp != '\0'){ /* hmmm, try as login name */
- passwd_data = getpwnam(str);
- if(!passwd_data) return uidexist;
- num = passwd_data->pw_uid;
- }
-- if(num>65534) return uidrange; /* 65535 is very bad */
-- if(num<-32768) return uidrange;
-- if(num==-1) return uidrange; /* -1 is very bad */
-- num &= 0xffff;
-+ if(num > 0xfffffffeUL) return uidrange;
- ret->uid = num;
- return 0;
- }
-@@ -107,19 +104,16 @@
- static const char *parse_gid(char *str, sel_union *ret){
- struct group *group_data;
- char *endp;
-- int num;
-+ unsigned long num;
- static const char *gidrange = "Group ID out of range.";
- static const char *gidexist = "Group name does not exist.";
-- num = strtol(str, &endp, 0);
-+ num = strtoul(str, &endp, 0);
- if(*endp != '\0'){ /* hmmm, try as login name */
- group_data = getgrnam(str);
- if(!group_data) return gidexist;
- num = group_data->gr_gid;
- }
-- if(num>65534) return gidrange; /* 65535 is very bad */
-- if(num<-32768) return gidrange;
-- if(num==-1) return gidrange; /* -1 is very bad */
-- num &= 0xffff;
-+ if(num > 0xfffffffeUL) return gidrange;
- ret->gid = num;
- return 0;
- }
-@@ -255,14 +249,14 @@
- forest_type = 'u';
- break;
- case 'L': /* */
-- /* "fucking Sun blows me"... Sun uses this for threads,
-- * adding the feature after both IBM & Digital used -m.
-- * Maybe this will be supported eventually, after I calm
-- * down about Sun's lack of conformity. Hmmm, SCO added it.
-+ /* In spite of the insane 2-level thread system, Sun appears to
-+ * have made this option Linux-compatible. If a process has N
-+ * threads, ps will produce N lines of output. (not N+1 lines)
-+ * Zombies are the only exception, with NLWP==0 and 1 output line.
-+ * SCO UnixWare uses -L too.
- */
- trace("-L Print LWP (thread) info.\n");
- format_modifiers |= FM_L;
-- return "Use -m to print threads, not Sun's nonstandard -L.";
- break;
- case 'M': /* someday, maybe, we will have MAC like SGI's Irix */
- trace("-M Print security label for Mandatory Access Control.\n");
-@@ -279,23 +273,25 @@
- if(!arg) return "Format or sort specification must follow -O.";
- defer_sf_option(arg, SF_U_O);
- return NULL; /* can't have any more options */
--#ifdef WE_UNDERSTAND_THIS
-- case 'P': /* unknown HP/UX or SunOS 5 feature */
-+ case 'P': /* SunOS 5 "psr" or unknown HP/UX feature */
- trace("-P adds columns of PRM info (HP) or PSR column (Sun)\n");
- format_modifiers |= FM_P;
-- return "No HP PRM support. No Sun PSR info either.";
- break;
-+#ifdef WE_UNDERSTAND_THIS
- case 'R': /* unknown HP/UX feature */
- trace("-R selects PRM groups\n");
- return "Don't understand PRM on Linux.";
- break;
-- case 'T': /* unknown IRIX feature */
-- /* IRIX 6.5 docs suggest POSIX threads get shown individually. */
-- /* This would make -T be like -L, -m, and m. (but an extra column) */
-+#endif
-+ case 'T':
-+ /* IRIX 6.5 docs suggest POSIX threads get shown individually.
-+ * This would make -T be like -L, -m, and m. (but an extra column)
-+ * Testing (w/ normal processes) shows 1 line/process, not 2.
-+ * Also, testing shows PID==SPID for all normal processes.
-+ */
- trace("-T adds strange SPID column (old sproc() threads?)\n");
-- return "Please tell the author what -T is for.";
-+ format_modifiers |= FM_T;
- break;
--#endif
- case 'U': /* end */
- trace("-U select by RUID (supports names).\n");
- arg=get_opt_arg();
-@@ -362,12 +358,13 @@
- break;
- case 'm':
- trace("-m shows threads.\n");
-- return "Thread display not implemented.";
-+ /* note that AIX shows 2 lines for a normal process */
-+ /* not implemented -- silently ignore the option */
- break;
- case 'n': /* end */
- trace("-n sets namelist file.\n");
- arg=get_opt_arg();
-- if(!arg) return "System.map or psdatabase must follow -n.";
-+ if(!arg) return "Alternate System.map file must follow -n.";
- namelist_file = arg;
- return NULL; /* can't have any more options */
- case 'o': /* end */
-@@ -415,7 +412,7 @@
- case 'u': /* end */
- trace("-u select by user ID (the EUID?) (supports names).\n");
- arg=get_opt_arg();
-- if(!arg) return "List of users must follow -p.";
-+ if(!arg) return "List of users must follow -u.";
- err=parse_list(arg, parse_uid);
- if(err) return err;
- selection_list->typecode = SEL_EUID;
-@@ -470,6 +467,13 @@
-
- while(*++flagptr){
- switch(*flagptr){
-+ case '0' ... '9': /* end */
-+ trace("0..9 Old BSD-style select by process ID\n");
-+ arg=flagptr;
-+ err=parse_list(arg, parse_pid);
-+ if(err) return err;
-+ selection_list->typecode = SEL_PID;
-+ return NULL; /* can't have any more options */
- #if 0
- case 'A':
- /* maybe this just does a larger malloc() ? */
-@@ -496,7 +500,7 @@
- case 'N': /* end */
- trace("N Specify namelist file\n");
- arg=get_opt_arg();
-- if(!arg) return "System.map or psdatabase must follow N.";
-+ if(!arg) return "Alternate System.map file must follow N.";
- namelist_file = arg;
- return NULL; /* can't have any more options */
- case 'O': /* end */
-@@ -595,7 +599,7 @@
- defer_sf_option("pmem", SF_B_m);
- break;
- }
-- return "Thread support not implemented.";
-+ /* not implemented -- silently ignore the option */
- break;
- case 'n':
- trace("n Numeric output for WCHAN, and USER replaced by UID\n");
-@@ -606,7 +610,7 @@
- case 'o': /* end */
- trace("o Specify user-defined format\n");
- arg=get_opt_arg();
-- if(!arg) return "Format specification must follow -o.";
-+ if(!arg) return "Format specification must follow o.";
- defer_sf_option(arg, SF_B_o);
- return NULL; /* can't have any more options */
- case 'p': /* end */
---- procps-2.0.6.orig/ps/output.c
-+++ procps-2.0.6/ps/output.c
-@@ -274,7 +274,6 @@
- if(!*p) return 0;
- /* Arrrgh! somebody defined unix as 1 */
- if(forest_type == 'u') goto unixy;
-- p++; /* don't show everything as init's child */
- while(*p){
- switch(*p){
- case ' ': strcpy(q, " "); break;
-@@ -726,19 +725,36 @@
- return sprintf(outbuf, "%5ld", pp->rss_rlim >> 10);
- }
-
-+/* should print leading tilde ('~') if process is bound to the CPU */
-+static int pr_psr(void){
-+ return sprintf(outbuf, "%d", pp->processor);
-+}
-+
-+static int pr_wname(void){
-+/* SGI's IRIX always uses a number for "wchan", so "wname" is provided too.
-+ *
-+ * We use '-' for running processes, the location when there is
-+ * only one thread waiting in the kernel, and '*' when there is
-+ * more than one thread waiting in the kernel.
-+ */
-+ if(!(pp->wchan & 0xffffff)) return sprintf(outbuf, "%s", "-");
-+ return sprintf(outbuf, "%s", wchan(pp->wchan));
-+}
-+
- static int pr_nwchan(void){
- if(!(pp->wchan & 0xffffff)) return sprintf(outbuf, "-");
- return sprintf(outbuf, "%lx", pp->wchan & 0xffffff);
- }
-
- static int pr_rss(void){
-- return sprintf(outbuf, "%lu", pp->rss << (page_shift - 10));
-+ return sprintf(outbuf, "%lu", pp->vm_rss);
- }
-
--/* On 32-bit hardware, this handles at least 8 GB. Use 1000ULL for more. */
-+/* pp->vm_rss * 1000 would overflow on 32-bit systems with 64 GB memory */
- static int pr_pmem(void){
- unsigned long pmem = 0;
-- pmem = pp->rss * 1000 / (kb_main_total >> (page_shift-10));
-+ pmem = pp->vm_rss * 1000ULL / kb_main_total;
-+ if (pmem > 999) pmem = 999;
- return sprintf(outbuf, "%2u.%u", (unsigned)(pmem/10), (unsigned)(pmem%10));
- }
-
-@@ -875,6 +891,13 @@
- }
-
-
-+static int pr_thread(void){ /* TID tid LWP lwp SPID spid */
-+ return sprintf(outbuf, "%u", pp->pid); /* for now... FIXME */
-+}
-+static int pr_nlwp(void){ /* THCNT thcount NLWP nlwp */
-+ return sprintf(outbuf, "-"); /* for now... FIXME */
-+}
-+
- static int pr_sess(void){
- return sprintf(outbuf, "%u", pp->session);
- }
-@@ -885,7 +908,7 @@
-
- /* SGI uses "cpu" to print the processor ID with header "P" */
- static int pr_sgi_p(void){ /* FIXME */
-- if(pp->state == 'R') return sprintf(outbuf, "%d", 0);
-+ if(pp->state == 'R') return sprintf(outbuf, "%d", pp->processor);
- return sprintf(outbuf, "*");
- }
-
-@@ -1007,6 +1030,7 @@
- {"lstart", "STARTED", pr_lstart, sr_nop, 24, 0, XXX, RIGHT},
- {"luid", "LUID", pr_nop, sr_nop, 5, 0, LNX, RIGHT}, /* login ID */
- {"luser", "LUSER", pr_nop, sr_nop, 8, 0, LNX, USER}, /* login USER */
-+{"lwp", "LWP", pr_thread, sr_nop, 5, 0, SUN, RIGHT},
- {"m_drs", "DRS", pr_drs, sr_drs, 5, 0, LNx, RIGHT},
- {"m_dt", "DT", pr_nop, sr_dt, 4, 0, LNx, RIGHT},
- {"m_lrs", "LRS", pr_nop, sr_lrs, 5, 0, LNx, RIGHT},
-@@ -1024,6 +1048,7 @@
- {"ni", "NI", pr_nice, sr_nice, 3, 0, BSD, RIGHT}, /*nice*/
- {"nice", "NI", pr_nice, sr_nice, 3, 0, U98, RIGHT}, /*ni*/
- {"nivcsw", "IVCSW", pr_nop, sr_nop, 5, 0, XXX, RIGHT},
-+{"nlwp", "NLWP", pr_nlwp, sr_nop, 4, 0, SUN, RIGHT},
- {"nsignals", "NSIGS", pr_nop, sr_nop, 5, 0, DEC, RIGHT}, /*nsigs*/
- {"nsigs", "NSIGS", pr_nop, sr_nop, 5, 0, BSD, RIGHT}, /*nsignals*/
- {"nswap", "NSWAP", pr_nop, sr_nswap, 5, 0, XXX, RIGHT},
-@@ -1050,10 +1075,10 @@
- {"prmgrp", "-", pr_nop, sr_nop, 1, 0, HPU, RIGHT},
- {"prmid", "-", pr_nop, sr_nop, 1, 0, HPU, RIGHT},
- {"pset", "PSET", pr_nop, sr_nop, 4, 0, DEC, RIGHT},
--{"psr", "PSR", pr_nop, sr_nop, 3, 0, DEC, RIGHT},
-+{"psr", "PSR", pr_psr, sr_nop, 3, 0, DEC, RIGHT},
- {"psxpri", "PPR", pr_nop, sr_nop, 3, 0, DEC, RIGHT},
- {"re", "RE", pr_nop, sr_nop, 3, 0, BSD, RIGHT},
--{"resident", "-", pr_nop, sr_resident, 5, 0, LNX, RIGHT},
-+{"resident", "RES", pr_nop, sr_resident, 5, 0, LNX, RIGHT},
- {"rgid", "RGID", pr_rgid, sr_rgid, 5, 0, XXX, RIGHT},
- {"rgroup", "RGROUP", pr_rgroup, sr_rgroup, 6, 0, U98, USER}, /* was 8 wide */
- {"rlink", "RLINK", pr_nop, sr_nop, 8, 0, BSD, RIGHT},
-@@ -1085,6 +1110,7 @@
- {"sigmask", "BLOCKED", pr_sigmask, sr_nop, 9, 0, XXX, SIGNAL}, /*blocked*/
- {"size", "-", pr_nop, sr_size, 1, 0, SCO, RIGHT},
- {"sl", "SL", pr_nop, sr_nop, 3, 0, XXX, RIGHT},
-+{"spid", "SPID", pr_thread, sr_nop, 5, 0, SGI, RIGHT},
- {"stackp", "STACKP", pr_stackp, sr_nop, 8, 0, LNX, RIGHT}, /*start_stack*/
- {"start", "STARTED", pr_start, sr_nop, 8, 0, XXX, RIGHT},
- {"start_code", "S_CODE", pr_nop, sr_start_code, 8, 0, LNx, RIGHT},
-@@ -1103,8 +1129,8 @@
- {"systime", "SYSTEM", pr_nop, sr_nop, 6, 0, DEC, RIGHT},
- {"sz", "SZ", pr_sz, sr_nop, 5, 0, HPU, RIGHT},
- {"tdev", "TDEV", pr_nop, sr_nop, 4, 0, XXX, RIGHT},
--{"thcount", "THCNT", pr_nop, sr_nop, 1, 0, AIX, RIGHT},
--{"tid", "TID", pr_nop, sr_nop, 1, 0, AIX, RIGHT},
-+{"thcount", "THCNT", pr_nlwp, sr_nop, 5, 0, AIX, RIGHT},
-+{"tid", "TID", pr_thread, sr_nop, 5, 0, AIX, RIGHT},
- {"time", "TIME", pr_time, sr_nop, 8, 0, U98, CUMUL|RIGHT}, /*cputime*/ /* was 6 wide */
- {"timeout", "TMOUT", pr_timeout, sr_timeout, 5, 0, LNX, RIGHT},
- {"tmout", "TMOUT", pr_timeout, sr_timeout, 5, 0, LNX, RIGHT},
-@@ -1140,6 +1166,7 @@
- {"vsize", "VSZ", pr_vsz, sr_vsize, 5, 0, DEC, RIGHT}, /*vsz*/
- {"vsz", "VSZ", pr_vsz, sr_vm_size, 5, 0, U98, RIGHT}, /*vsize*/
- {"wchan", "WCHAN", pr_wchan, sr_wchan, 6, 0, XXX, WCHAN}, /* BSD n forces this to nwchan */ /* was 10 wide */
-+{"wname", "WCHAN", pr_wname, sr_nop, 6, 0, SGI, WCHAN}, /* opposite of nwchan */
- {"xstat", "XSTAT", pr_nop, sr_nop, 5, 0, BSD, RIGHT},
- {"~", "-", pr_nop, sr_nop, 1, 0, LNX, RIGHT} /* NULL would ruin alphabetical order */
- };
---- procps-2.0.6.orig/ps/sortformat.c
-+++ procps-2.0.6/ps/sortformat.c
-@@ -684,6 +684,7 @@
- PUSH("pgid");
- }
- if(format_flags & (FF_Uf|FF_Ul)) PUSH("ppid");
-+ if(format_modifiers & FM_T) PUSH("spid");
- PUSH("pid");
- if(format_flags & FF_Uf){
- if(personality & PER_SANE_USER) PUSH("user");
---- procps-2.0.6.orig/ps/common.h
-+++ procps-2.0.6/ps/common.h
-@@ -112,6 +112,7 @@
- #define FM_L 0x0008 /* -L */
- #define FM_P 0x0010 /* -P */
- #define FM_M 0x0020 /* -M */
-+#define FM_T 0x0040 /* -T */
-
- /* sorting & formatting */
- /* U,B,G is Unix,BSD,Gnu and then there is the option itself */
---- procps-2.0.6.orig/ps/Makefile
-+++ procps-2.0.6/ps/Makefile
-@@ -19,7 +19,7 @@
- AOUT_CAPABLE = #-DAOUT_CAPABLE
- ELF_CAPABLE = #-DELF_CAPABLE
- LIBBFD = -lbfd -liberty
--MAN1DIR = /usr/man/man1
-+MAN1DIR = /usr/share/man/man1
-
- all: ps
-
-@@ -52,7 +52,7 @@
- install: ps
- -install --owner 0 --group 0 --mode a=rx --strip ps ${DESTDIR}/bin/ps
- -install --owner 0 --group 0 --mode a=r ps.1 ${DESTDIR}$(MAN1DIR)/ps.1
-- rm -f ${DESTDIR}/var/catman/cat1/ps.1.gz ${DESTDIR}/var/man/cat1/ps.1.gz
-+ #rm -f ${DESTDIR}/var/catman/cat1/ps.1.gz ${DESTDIR}/var/man/cat1/ps.1.gz
-
- clean:
- rm -f *.o DEADJOE *~ core ps gmon.out
---- procps-2.0.6.orig/ps/ps.1
-+++ procps-2.0.6/ps/ps.1
-@@ -1,217 +1,221 @@
-+'\" t
- .\" Man page for ps.
--.\" Quick hack conversion by Albert Cahalan, 1998.
--.\" Licensed under version 2 of the Gnu General Public License.
-+.\" Licensed under version 2 of the GNU General Public License.
- .\"
--.\" This man page is a horrid hack because *roff sucks.
--.\" The whole system is way obsolete. The internal header
--.\" stuff must die, and will when I figure out how to kill it.
--.\" I've already killed the wasteful left margin and screwy
--.\" old perfect justification. Gross! You'd think someone
--.\" invented this crap in 1973. Oh yeah, they did. Sorry.
- .\"
- .TH PS 1 "July 5, 1998" "Linux" "Linux User's Manual"
--.SH \fRNAME\fR
--ps \- report process status
--.ad r
--.na
--.ss 12 0
--.in 0
--.nh
--.nf
-+.SH NAME
-+\fBps\fR \- report process status
-
--SYNOPSIS
--ps [options]
-+.SH SYNOPSIS
-+\fBps\fR [\fIoptions\fR]
-
-
--DESCRIPTION
--ps gives a snapshot of the current processes. If you want
--a repetitive update of this status, use top. This man
--page documents the /proc-based version of ps, or tries to.
-+.SH DESCRIPTION
-+\fBps\fR gives a snapshot of the current processes. If you want
-+a repetitive update of this status, use \fBtop\fR. This man
-+page documents the /proc-based version of \fBps\fR, or tries to.
-
-
--COMMAND-LINE OPTIONS
-+.SH OPTIONS
-
--This version of ps accepts several kinds of options.
-+This version of \fBps\fR accepts several kinds of options.
-
- Unix options may be grouped and must be preceeded by a dash.
- BSD options may be grouped and must not be used with a dash.
--Gnu long options are preceeded by two dashes.
-+GNU long options are preceeded by two dashes.
-
- Options of different types may be freely mixed.
-
--Set the I_WANT_A_BROKEN_PS environment variable to force BSD syntax even
--when options are preceeded by a dash. The PS_PERSONALITY environment
-+Set the \fBI_WANT_A_BROKEN_PS\fR environment variable to force BSD syntax even
-+when options are preceeded by a dash. The \fBPS_PERSONALITY\fR environment
- variable (described below) provides more detailed control of ps behavior.
-
- SIMPLE PROCESS SELECTION
---A selects all processes
---N negate selection
---a select all with a tty except session leaders
---d select all, but omit session leaders
---e selects all processes
--T Select all processes on this terminal
--a Select all processes on a terminal, including those of other users
--g really all, even group leaders (does nothing w/o SunOS settings)
--r restrict output to running processes
--x Select processes without controlling ttys
----deselect negate selection
-+.TS
-+lfB l.
-+-A selects all processes
-+-N negate selection
-+-a select all with a tty except session leaders
-+-d select all, but omit session leaders
-+-e selects all processes
-+T Select all processes on this terminal
-+a Select all processes on a terminal, including those of other users
-+g really all, even group leaders (does nothing w/o SunOS settings)
-+r restrict output to running processes
-+x Select processes without controlling ttys
-+--deselect negate selection
-+.TE
-
- PROCESS SELECTION BY LIST
---C Select by command name
---G select by RGID (supports names)
---U select by RUID (supports names)
---g select by session leader OR by group name
---p select by PID
---s Select processes belonging to the sessions given
---t select by tty
---u select by effective user ID (supports names)
--U Select processes for specified users
--p Select by process ID
--t Select by tty
----Group select by real group name or ID
----User select by real user name or ID
----group select by effective group name or ID
----pid select by process ID
----sid select by session ID
----tty select by terminal
----user select by effective user name or ID
---123 implied --sid
--123 implied --pid
-+.TS
-+lfB l.
-+-C Select by command name
-+-G select by RGID (supports names)
-+-U select by RUID (supports names)
-+-g select by session leader OR by group name
-+-p select by PID
-+-s Select processes belonging to the sessions given
-+-t select by tty
-+-u select by effective user ID (supports names)
-+U Select processes for specified users
-+p Select by process ID
-+t Select by tty
-+--Group select by real group name or ID
-+--User select by real user name or ID
-+--group select by effective group name or ID
-+--pid select by process ID
-+--sid select by session ID
-+--tty select by terminal
-+--user select by effective user name or ID
-+-123 implied --sid
-+123 implied --pid
-+.TE
-
- OUTPUT FORMAT CONTROL
---O is preloaded "-o"
---c different scheduler info for -l option
---f does full listing
---j jobs format
---l long format
---o user-defined format
---y do not show flags; show rss in place of addr
--O is preloaded "o" (overloaded)
--X Old Linux i386 register format
--j job control format
--l Display long format
--o Specify user-defined format
--s Display signal format
--u Display user-oriented format
--v Display virtual memory format
----format user-defined format
-+.TS
-+lfB l.
-+-O is preloaded "-o"
-+-c different scheduler info for -l option
-+-f does full listing
-+-j jobs format
-+-l long format
-+-o user-defined format
-+-y do not show flags; show rss in place of addr
-+O is preloaded "o" (overloaded)
-+X Old Linux i386 register format
-+j job control format
-+l Display long format
-+o Specify user-defined format
-+s Display signal format
-+u Display user-oriented format
-+v Display virtual memory format
-+--format user-defined format
-+.TE
-
- OUTPUT MODIFIERS
---H show process heirarchy (forest)
---m shows threads
---n sets namelist file
---w wide output
--C Use raw CPU time for %CPU instead of decaying average
--N Specify namelist file
--O Sorting order (overloaded)
--S include some dead child process data (as a sum with the parent)
--c true command name
--e show environment after the command
--f ASCII-art process heirarchy (forest)
--h no header (or, one header per screen in the BSD personality)
--m all threads
--n Numeric output for WCHAN and USER
--w wide output
----cols set screen width
----columns set screen width
----cumulative include some dead child process data (as a sum with the parent)
----forest ASCII art process tree
----html HTML escaped output
----headers repeat header lines, one per page of output
----no-headers print no header line at all
----lines set screen height
----nul unjustified output with NULs
----null unjustified output with NULs
----rows set screen height
----sort specify sorting order
----width set screen width
----zero unjustified output with NULs
-+.TS
-+lfB l.
-+-H show process hierarchy (forest)
-+-m shows threads
-+-n, N sets namelist file
-+-w, w wide output
-+C Use raw CPU time for %CPU instead of decaying average
-+O Sorting order (overloaded)
-+S,
-+--cumulative include some dead child process data (as a sum with the parent)
-+c true command name
-+e show environment after the command
-+f, --forest ASCII-art process hierarchy (forest)
-+h no header (or, one header per screen in the BSD personality)
-+m all threads
-+n Numeric output for WCHAN and USER
-+--cols,
-+--columns,
-+--width set screen width
-+--html HTML escaped output
-+--headers repeat header lines, one per page of output
-+--no-headers print no header line at all
-+--lines,
-+--rows set screen height
-+--nul, --null,
-+--zero unjustified output with NULs
-+--sort specify sorting order
-+.TE
-
- INFORMATION
---V prints version
--L List all format specifiers
--V show version info
----help print help message
----info print debugging info
----version prints version
-+.TS
-+lfB l.
-+-V, V,
-+--version prints version
-+L List all format specifiers
-+--help print help message
-+--info print debugging info
-+.TE
-
- OBSOLETE
--A Increases the argument space (DecUnix)
--M use alternate core (try -n or N instead)
--W get swap info from ... not /dev/drum (try -n or N instead)
--k use /vmcore as c-dumpfile (try -n or N instead)
-+.TS
-+lfB l.
-+A Increases the argument space (DecUnix)
-+M use alternate core (try -n or N instead)
-+W get swap info from ... not /dev/drum (try -n or N instead)
-+k use /vmcore as c-dumpfile (try -n or N instead)
-+.TE
-
-
-+.SH NOTES
-
--NOTES
--
--The "-g" option can select by session leader OR by group name.
-+The \fB-g\fR option can select by session leader OR by group name.
- Selection by session leader is specified by many standards,
- but selection by group is the logical behavior that several other
- operating systems use. This ps will select by session leader when
- the list is completely numeric (as sessions are). Group ID numbers
- will work only when some group names are also specified.
-
--The "m" option should not be used. Use "-m" or "-o" with a list.
--("m" displays memory info, shows threads, or sorts by memory use)
-+The \fBm\fR option should not be used. Use \fB-m\fR or \fB-o\fR with a list.
-+(\fBm\fR displays memory info, shows threads, or sorts by memory use)
-
--The "h" option is problematic. Standard BSD ps uses the option to
--print a header on each page of output, but older Linux ps uses the option
-+The \fBh\fR option is problematic. Standard BSD \fBps\fR uses the option to
-+print a header on each page of output, but older Linux \fBps\fR uses the option
- to totally disable the header. This version of ps follows the Linux
- usage of not printing the header unless the BSD personality has been
- selected, in which case it prints a header on each page of output.
- Regardless of the current personality, you can use the long options
----headers and --no-headers to enable printing headers each page and
-+\fB--headers\fR and \fB--no-headers\fR to enable printing headers each page and
- disable headers entirely, respectively.
-
- Terminals (ttys, or screens for text output) can be specified in several
--forms: /dev/ttyS1, ttyS1, S1. Obsolete "ps t" (your own terminal) and
--"ps t?" (processes without a terminal) syntax is supported, but modern
--options ("T", "-t" with list, "x", "t" with list) should be used instead.
-+forms: \fI/dev/ttyS1\fR, \fIttyS1\fR, \fIS1\fR. Obsolete \fBps t\fR (your own terminal) and
-+\fBps t?\fR (processes without a terminal) syntax is supported, but modern
-+options (\fBT\fR, \fB-t\fR with list, \fBx\fR, \fBt\fR with list) should be used instead.
-
--The BSD "O" option can act like "-O" (user-defined output format with
-+The BSD \fBO\fR option can act like \fB-O\fR (user-defined output format with
- some common fields predefined) or can be used to specify sort order.
- Heuristics are used to determine the behavior of this option. To ensure
- that the desired behavior is obtained, specify the other option (sorting
- or formatting) in some other way.
-
--For sorting, BSD "O" option syntax is O[+|-]k1[,[+|-]k2[,...]]
-+For sorting, BSD \fBO\fR option syntax is \fBO\fR[+|-]\fIk1\fR[,[+|-]\fIk2\fR[,...]]
- Order the process listing according to the multilevel sort specified by
--the sequence of short keys from SORT KEYS, k1, k2, ... The `+' is quite
-+the sequence of short keys from SORT KEYS, \fIk1\fR, \fIk2\fR, ... The `+' is quite
- optional, merely re-iterating the default direction on a key. `-' reverses
--direction only on the key it precedes. The O option must be the last option
-+direction only on the key it precedes. The \fBO\fR option must be the last option
- in a single command argument, but specifications in successive arguments are
- catenated.
-
--Gnu sorting syntax is --sortX[+|-]key[,[+|-]key[,...]]
-+GNU sorting syntax is \fB--sort\fIX\fR[+|-]\fIkey\fR[,[+|-]\fIkey\fR[,...]]
- Choose a multi-letter key from the SORT KEYS section. X may be any
- convenient separator character. To be GNU-ish use `='. The `+' is really
- optional since default direction is increasing numerical or lexicographic
--order. For example, ps jax --sort=uid,-ppid,+pid
-+order. For example, \fBps\fR \fIjax\fR \fB--sort\fR=\fIuid\fR,-\fIppid\fR,+\fIpid\fR
-
--This ps works by reading the virtual files in /proc. This ps does not
--need to be suid kmem or have any privileges to run. Do not give this ps
-+This \fBps\fR works by reading the virtual files in /proc. This \fBps\fR does not
-+need to be suid kmem or have any privileges to run. Do not give this \fBps\fR
- any special permissions.
-
--This ps needs access to a namelist file for proper WCHAN display.
-+This \fBps\fR needs access to a namelist file for proper WCHAN display.
- The namelist file must match the current Linux kernel exactly for
- correct output.
-
- To produce the WCHAN field, ps needs to read the System.map file created
- when the kernel is compiled. The search path is:
-
--$PS_SYSTEM_MAP
--/boot/System.map-`uname -r`
--/boot/System.map
--/lib/modules/`uname -r`/System.map
--/usr/src/linux/System.map
-+.B $PS_SYSTEM_MAP
-+.br
-+.I /boot/System.map-`uname -r`
-+.br
-+.I /boot/System.map
-+.br
-+.I /lib/modules/`uname -r`/System.map
-+.br
-+.I /usr/src/linux/System.map
-
- The member used_math of task_struct is not shown, since crt0.s checks
- to see if math is present. This causes the math flag to be set for all
- processes, and so it is worthless. (Somebody fix libc or the kernel please)
-
- Programs swapped out to disk will be shown without command line arguments,
--and unless the c option is given, in brackets.
-+and unless the \fBc\fR option is given, in brackets.
-
- %CPU shows the cputime/realtime percentage. It will not add up to 100%
- unless you are lucky. It is time used divided by the time the process has
-@@ -227,289 +231,309 @@
-
-
- PROCESS FLAGS
--
--ALIGNWARN 001 print alignment warning msgs
--STARTING 002 being created
--EXITING 004 getting shut down
--PTRACED 010 set if ptrace (0) has been called
--TRACESYS 020 tracing system calls
--FORKNOEXEC 040 forked but didn't exec
--SUPERPRIV 100 used super-user privileges
--DUMPCORE 200 dumped core
--SIGNALED 400 killed by a signal
-+.TS
-+l l l.
-+ALIGNWARN 001 print alignment warning msgs
-+STARTING 002 being created
-+EXITING 004 getting shut down
-+PTRACED 010 set if ptrace (0) has been called
-+TRACESYS 020 tracing system calls
-+FORKNOEXEC 040 forked but didn't exec
-+SUPERPRIV 100 used super-user privileges
-+DUMPCORE 200 dumped core
-+SIGNALED 400 killed by a signal
-+.TE
-
-
- PROCESS STATE CODES
--
--D uninterruptible sleep (usually IO)
--R runnable (on run queue)
--S sleeping
--T traced or stopped
--Z a defunct ("zombie") process
-+.TS
-+l l.
-+D uninterruptible sleep (usually IO)
-+R runnable (on run queue)
-+S sleeping
-+T traced or stopped
-+Z a defunct ("zombie") process
-+.TE
-
- For BSD formats and when the "stat" keyword is used, additional
- letters may be displayed:
-+.TS
-+l l.
-+W has no resident pages
-+< high-priority process
-+N low-priority task
-+L has pages locked into memory (for real-time and custom IO)
-+.TE
-
--W has no resident pages
--< high-priority process
--N low-priority task
--L has pages locked into memory (for real-time and custom IO)
--
--
--SORT KEYS
-+.SH SORT KEYS
-
- Note that the values used in sorting are the internal values ps uses and not
- the `cooked' values used in some of the output format fields. Pipe ps
- output into the sort(1) command if you want to sort the cooked values.
-
--KEY LONG DESCRIPTION
--c cmd simple name of executable
--C cmdline full command line
--f flags flags as in long format F field
--g pgrp process group ID
--G tpgid controlling tty process group ID
--j cutime cumulative user time
--J cstime cumulative system time
--k utime user time
--K stime system time
--m min_flt number of minor page faults
--M maj_flt number of major page faults
--n cmin_flt cumulative minor page faults
--N cmaj_flt cumulative major page faults
--o session session ID
--p pid process ID
--P ppid parent process ID
--r rss resident set size
--R resident resident pages
--s size memory size in kilobytes
--S share amount of shared pages
--t tty the minor device number of tty
--T start_time time process was started
--U uid user ID number
--u user user name
--v vsize total VM size in bytes
--y priority kernel scheduling priority
-+.TS
-+l l l.
-+KEY LONG DESCRIPTION
-+c cmd simple name of executable
-+C cmdline full command line
-+f flags flags as in long format F field
-+g pgrp process group ID
-+G tpgid controlling tty process group ID
-+j cutime cumulative user time
-+J cstime cumulative system time
-+k utime user time
-+K stime system time
-+m min_flt number of minor page faults
-+M maj_flt number of major page faults
-+n cmin_flt cumulative minor page faults
-+N cmaj_flt cumulative major page faults
-+o session session ID
-+p pid process ID
-+P ppid parent process ID
-+r rss resident set size
-+R resident resident pages
-+s size memory size in kilobytes
-+S share amount of shared pages
-+t tty the minor device number of tty
-+T start_time time process was started
-+U uid user ID number
-+u user user name
-+v vsize total VM size in bytes
-+y priority kernel scheduling priority
-+.TE
-
--
--AIX FORMAT DESCRIPTORS
-+.SH AIX FORMAT DESCRIPTORS
-
- This ps supports AIX format descriptors, which work somewhat like the
--formatting codes of printf(1) and printf(3). For example, the normal
--default output can be produced with this: ps -eo "%p %y %x %c"
--
--CODE NORMAL HEADER
--%C pcpu %CPU
--%G group GROUP
--%P ppid PPID
--%U user USER
--%a args COMMAND
--%c comm COMMAND
--%g rgroup RGROUP
--%n nice NI
--%p pid PID
--%r pgid PGID
--%t etime ELAPSED
--%u ruser RUSER
--%x time TIME
--%y tty TTY
--%z vsz VSZ
-+formatting codes of \fBprintf\fR(1) and \fBprintf\fR(3). For example, the normal
-+default output can be produced with this: \fBps\fR \fB-eo\fR "%p %y %x %c"
-
-+.TS
-+l l l.
-+CODE NORMAL HEADER
-+%C pcpu %CPU
-+%G group GROUP
-+%P ppid PPID
-+%U user USER
-+%a args COMMAND
-+%c comm COMMAND
-+%g rgroup RGROUP
-+%n nice NI
-+%p pid PID
-+%r pgid PGID
-+%t etime ELAPSED
-+%u ruser RUSER
-+%x time TIME
-+%y tty TTY
-+%z vsz VSZ
-+.TE
-
--STANDARD FORMAT SPECIFIERS
-+.SH STANDARD FORMAT SPECIFIERS
-
- These may be used to control both output format and sorting.
- For example: ps -eo pid,user,args --sort user
-
--CODE HEADER
--%cpu %CPU
--%mem %MEM
--alarm ALARM
--args COMMAND
--blocked BLOCKED
--bsdstart START
--bsdtime TIME
--c C
--caught CAUGHT
--cmd CMD
--comm COMMAND
--command COMMAND
--cputime TIME
--drs DRS
--dsiz DSIZ
--egid EGID
--egroup EGROUP
--eip EIP
--esp ESP
--etime ELAPSED
--euid EUID
--euser EUSER
--f F
--fgid FGID
--fgroup FGROUP
--flag F
--flags F
--fname COMMAND
--fsgid FSGID
--fsgroup FSGROUP
--fsuid FSUID
--fsuser FSUSER
--fuid FUID
--fuser FUSER
--gid GID
--group GROUP
--ignored IGNORED
--intpri PRI
--lim LIM
--longtname TTY
--lstart STARTED
--m_drs DRS
--m_trs TRS
--maj_flt MAJFL
--majflt MAJFLT
--min_flt MINFL
--minflt MINFLT
--ni NI
--nice NI
--nwchan WCHAN
--opri PRI
--pagein PAGEIN
--pcpu %CPU
--pending PENDING
--pgid PGID
--pgrp PGRP
--pid PID
--pmem %MEM
--ppid PPID
--pri PRI
--priority PRI
--rgid RGID
--rgroup RGROUP
--rss RSS
--rssize RSS
--rsz RSZ
--ruid RUID
--ruser RUSER
--s S
--sess SESS
--session SESS
--sgi_p P
--sgi_rss RSS
--sgid SGID
--sgroup SGROUP
--sid SID
--sig PENDING
--sig_block BLOCKED
--sig_catch CATCHED
--sig_ignore IGNORED
--sig_pend SIGNAL
--sigcatch CAUGHT
--sigignore IGNORED
--sigmask BLOCKED
--stackp STACKP
--start STARTED
--start_stack STACKP
--start_time START
--stat STAT
--state S
--stime STIME
--suid SUID
--suser SUSER
--svgid SVGID
--svgroup SVGROUP
--svuid SVUID
--svuser SVUSER
--sz SZ
--time TIME
--timeout TMOUT
--tmout TMOUT
--tname TTY
--tpgid TPGID
--trs TRS
--trss TRSS
--tsiz TSIZ
--tt TT
--tty TT
--tty4 TTY
--tty8 TTY
--ucmd CMD
--ucomm COMMAND
--uid UID
--uid_hack UID
--uname USER
--user USER
--vsize VSZ
--vsz VSZ
--wchan WCHAN
-+.TS
-+l l.
-+CODE HEADER
-+%cpu %CPU
-+%mem %MEM
-+alarm ALARM
-+args COMMAND
-+blocked BLOCKED
-+bsdstart START
-+bsdtime TIME
-+c C
-+caught CAUGHT
-+cmd CMD
-+comm COMMAND
-+command COMMAND
-+cputime TIME
-+drs DRS
-+dsiz DSIZ
-+egid EGID
-+egroup EGROUP
-+eip EIP
-+esp ESP
-+etime ELAPSED
-+euid EUID
-+euser EUSER
-+f F
-+fgid FGID
-+fgroup FGROUP
-+flag F
-+flags F
-+fname COMMAND
-+fsgid FSGID
-+fsgroup FSGROUP
-+fsuid FSUID
-+fsuser FSUSER
-+fuid FUID
-+fuser FUSER
-+gid GID
-+group GROUP
-+ignored IGNORED
-+intpri PRI
-+lim LIM
-+longtname TTY
-+lstart STARTED
-+m_drs DRS
-+m_trs TRS
-+maj_flt MAJFL
-+majflt MAJFLT
-+min_flt MINFL
-+minflt MINFLT
-+ni NI
-+nice NI
-+nwchan WCHAN
-+opri PRI
-+pagein PAGEIN
-+pcpu %CPU
-+pending PENDING
-+pgid PGID
-+pgrp PGRP
-+pid PID
-+pmem %MEM
-+ppid PPID
-+pri PRI
-+priority PRI
-+rgid RGID
-+rgroup RGROUP
-+rss RSS
-+rssize RSS
-+rsz RSZ
-+ruid RUID
-+ruser RUSER
-+s S
-+sess SESS
-+session SESS
-+sgi_p P
-+sgi_rss RSS
-+sgid SGID
-+sgroup SGROUP
-+sid SID
-+sig PENDING
-+sig_block BLOCKED
-+sig_catch CATCHED
-+sig_ignore IGNORED
-+sig_pend SIGNAL
-+sigcatch CAUGHT
-+sigignore IGNORED
-+sigmask BLOCKED
-+stackp STACKP
-+start STARTED
-+start_stack STACKP
-+start_time START
-+stat STAT
-+state S
-+stime STIME
-+suid SUID
-+suser SUSER
-+svgid SVGID
-+svgroup SVGROUP
-+svuid SVUID
-+svuser SVUSER
-+sz SZ
-+time TIME
-+timeout TMOUT
-+tmout TMOUT
-+tname TTY
-+tpgid TPGID
-+trs TRS
-+trss TRSS
-+tsiz TSIZ
-+tt TT
-+tty TT
-+tty4 TTY
-+tty8 TTY
-+ucmd CMD
-+ucomm COMMAND
-+uid UID
-+uid_hack UID
-+uname USER
-+user USER
-+vsize VSZ
-+vsz VSZ
-+wchan WCHAN
-+.TE
-
-
-
-+.SH ENVIRONMENT VARIABLES
-
--ENVIRONMENT VARIABLES
- The following environment variables could affect ps:
-- COLUMNS Override default display width.
-- LINES Override default display height.
-- PS_PERSONALITY Set to one of posix,old,linux,bsd,sun,digital...
-- CMD_ENV Set to one of posix,old,linux,bsd,sun,digital...
-- I_WANT_A_BROKEN_PS Force obsolete command line interpretation.
-- LC_TIME Date format.
-- PS_COLORS Not currently supported.
-- PS_FORMAT Default output format override.
-- PS_SYSMAP Default namelist (System.map) location.
-- PS_SYSTEM_MAP Default namelist (System.map) location.
-- POSIXLY_CORRECT Don't find excuses to ignore bad "features".
-- UNIX95 Don't find excuses to ignore bad "features".
-- _XPG Cancel CMD_ENV=irix non-standard behavior.
-+.TS
-+lfB l.
-+COLUMNS Override default display width.
-+LINES Override default display height.
-+PS_PERSONALITY Set to one of posix,old,linux,bsd,sun,digital...
-+CMD_ENV Set to one of posix,old,linux,bsd,sun,digital...
-+I_WANT_A_BROKEN_PS Force obsolete command line interpretation.
-+LC_TIME Date format.
-+PS_COLORS Not currently supported.
-+PS_FORMAT Default output format override.
-+PS_SYSMAP Default namelist (System.map) location.
-+PS_SYSTEM_MAP Default namelist (System.map) location.
-+POSIXLY_CORRECT Don't find excuses to ignore bad "features".
-+UNIX95 Don't find excuses to ignore bad "features".
-+_XPG Cancel CMD_ENV=irix non-standard behavior.
-+.TE
-
- In general, it is a bad idea to set these variables. The one exception
--is CMD_ENV or PS_PERSONALITY, which could be set to Linux for normal
--systems. Without that setting, ps follows the useless and bad parts
-+is \fBCMD_ENV\fR or \fBPS_PERSONALITY\fR, which could be set to Linux for normal
-+systems. Without that setting, \fBps\fR follows the useless and bad parts
- of the Unix98 standard.
-
-
- PERSONALITY
-- aix like AIX ps
-- bsd like FreeBSD ps (totally non-standard)
-- compaq like Digital Unix ps
-- debian like the old Debian ps
-- digital like Digital Unix ps
-- gnu like the old Debian ps
-- hp like HP-UX ps
-- hpux like HP-UX ps
-- irix like Irix ps
-- linux ***** RECOMMENDED *****
-- old like the original Linux ps (totally non-standard)
-- posix standard
-- sco like SCO ps
-- sgi like Irix ps
-- sun like SunOS 4 ps (totally non-standard)
-- sunos like SunOS 4 ps (totally non-standard)
-- sysv standard
-- unix standard
-- unix95 standard
-- unix98 standard
-+.TS
-+l l.
-+aix like AIX ps
-+bsd like FreeBSD ps (totally non-standard)
-+compaq like Digital Unix ps
-+debian like the old Debian ps
-+digital like Digital Unix ps
-+gnu like the old Debian ps
-+hp like HP-UX ps
-+hpux like HP-UX ps
-+irix like Irix ps
-+linux ***** RECOMMENDED *****
-+old like the original Linux ps (totally non-standard)
-+posix standard
-+sco like SCO ps
-+sgi like Irix ps
-+sun like SunOS 4 ps (totally non-standard)
-+sunos like SunOS 4 ps (totally non-standard)
-+sysv standard
-+unix standard
-+unix95 standard
-+unix98 standard
-+.TE
-
-
--EXAMPLES
-+.SH EXAMPLES
- To see every process on the system using standard syntax:
-- ps -e
-+ \fBps\fR \fB-e\fR
-+.br
- To see every process on the system using BSD syntax:
-- ps ax
-+ \fBps\fR \fBax\fR
-+.br
- To see every process except those running as root (real & effective ID)
-- ps -U root -u root -N
-+ \fBps\fR \fB-U\fR \fIroot\fR \fB-u\fR \fIroot\fR \fB-N\fR
-+.br
- To see every process with a user-defined format:
-- ps -eo pid,tt,user,fname,tmout,f,wchan
-+ \fBps\fR \fB-eo\fR pid,tt,user,fname,tmout,f,wchan
-+.br
- Odd display with AIX field descriptors:
-- ps -o "%u : %U : %p : %a"
-+ \fBps\fR \fB-o\fR "%u : %U : %p : %a"
-+.br
- Print only the process IDs of syslogd:
-- ps -C syslogd -o pid=
--
--SEE ALSO
--top(1) pstree(1) proc(5)
-+ \fBps\fR \fB-C\fR \fIsyslogd\fR \fB-o\fR pid=
-
--STANDARDS
--This ps conforms to version 2 of the Single Unix Specification.
-+.SH CONFORMING TO
-+This \fBps\fR conforms to version 2 of the Single Unix Specification.
-
--AUTHOR
-+.SH AUTHOR
- ps was originally written by Branko Lankester <lankeste@fwi.uva.nl>. Michael
- K. Johnson <johnsonm@redhat.com> re-wrote it significantly to use the proc
- filesystem, changing a few things in the process. Michael Shields
-@@ -518,8 +542,11 @@
- device name-to-number mmaped database, the approximate binary search
- directly on System.map, and many code and documentation cleanups. David
- Mossberger-Tang wrote the generic BFD support for psupdate. Albert Cahalan
--<acahalan@cs.uml.edu> rewrote ps for full Unix98 and BSD support, along with
--some ugly hacks for obsolete and foreign syntax. Michael K. Johnson
--<johnsonm@redhat.com> is the current maintainer.
-+<acahalan@cs.uml.edu> rewrote \fBps\fR for full Unix98 and BSD support, along with
-+some ugly hacks for obsolete and foreign syntax.
-+
-+Please send bug reports to <acahalan@cs.uml.edu> or use the Debian Bug Tracking System.
-+
-+.SH SEE ALSO
-+\fBtop\fR(1), \fBpstree\fR(1), \fBproc\fR(5)
-
--Please send bug reports to <procps-bugs@redhat.com>
---- procps-2.0.6.orig/w.c
-+++ procps-2.0.6/w.c
-@@ -119,12 +119,12 @@
- if (hour == 0) hour = 12;
- if (curt - logt > 12*60*60 && logtm->tm_yday != today) {
- if (curt - logt > 6*24*60*60)
-- fprintf(fout, " %2d%3s%2d", logtm->tm_mday, month[logtm->tm_mon],
-+ fprintf(fout, " %02d%3s%02d", logtm->tm_mday, month[logtm->tm_mon],
- logtm->tm_year % 100);
- else
-- fprintf(fout, " %3s%2d%s", weekday[logtm->tm_wday], hour, merid);
-+ fprintf(fout, " %3s%02d%s", weekday[logtm->tm_wday], hour, merid);
- } else {
-- fprintf(fout, " %2d:%02d%s", hour, logtm->tm_min, merid);
-+ fprintf(fout, " %02d:%02d%s", hour, logtm->tm_min, merid);
- }
- }
-
---- procps-2.0.6.orig/tload.1
-+++ procps-2.0.6/tload.1
-@@ -47,4 +47,4 @@
- Branko Lankester, David Engel <david@ods.com>, and
- Michael K. Johnson <johnsonm@redhat.com>.
-
--Please send bug reports to <procps-bugs@redhat.com>
-+Please send bug reports to <acahalan@cs.uml.edu>
---- procps-2.0.6.orig/sysctl.c
-+++ procps-2.0.6/sysctl.c
-@@ -207,8 +207,7 @@
- return;
- } /* endif */
-
-- while (!feof(fp)) {
-- fgets(oneline, 256, fp);
-+ while (fgets(oneline, 256, fp)) {
- oneline[256] = 0;
- n++;
- t = StripLeadingAndTrailingSpaces(oneline);
---- procps-2.0.6.orig/top.1
-+++ procps-2.0.6/top.1
-@@ -441,6 +441,4 @@
- The "b" and "n" options contributed by George Bonser <george@captech.com>
- for CapTech IT Services.
-
--Michael K. Johnson <johnsonm@redhat.com> is now the maintainer.
--
--Please send bug reports to <procps-bugs@redhat.com>
-+Please send bug reports to <acahalan@cs.uml.edu>
---- procps-2.0.6.orig/top.c
-+++ procps-2.0.6/top.c
-@@ -471,6 +471,8 @@
- if (open_psdb(NULL)) CL_wchan_nout = 1;
- }
-
-+ meminfo(); /* need kb_main_total value filled in */
-+
- setup_terminal();
- window_size(0);
- /*
-@@ -737,8 +739,8 @@
-
- static int mem_sort (proc_t **P, proc_t **Q)
- {
-- if( (*P)->resident < (*Q)->resident ) return -1;
-- if( (*P)->resident > (*Q)->resident ) return 1;
-+ if( (*P)->vm_rss < (*Q)->vm_rss ) return -1;
-+ if( (*P)->vm_rss > (*Q)->vm_rss ) return 1;
- return 0;
- }
-
-@@ -852,9 +854,9 @@
- printf("Toggle fields with a-x, any other key to return: ");
- fflush(stdout);
- tcsetattr(0, TCSAFLUSH, &Rawtty);
-+ read(0, &c, 1);
-+ tcsetattr(0, TCSAFLUSH, &Savetty);
- }
-- read(0, &c, 1);
-- tcsetattr(0, TCSAFLUSH, &Savetty);
- i = toupper(c) - 'A';
- if (i >= 0 && i < sizeof headers / sizeof headers[0]) {
- row = i % (Lines - 3) + 3;
-@@ -959,7 +961,7 @@
- /*
- * Displays infos for a single task
- */
--static void show_task_info(proc_t *task, int pmem)
-+static void show_task_info(proc_t *task)
- {
- int i,j;
- unsigned int t;
-@@ -984,8 +986,12 @@
- case P_PCPU:
- sprintf(tmp, "%4.1f ", (float)task->pcpu / 10);
- break;
-- case P_PMEM:
-- sprintf(tmp, "%4.1f ", (float)pmem / 10);
-+ case P_PMEM: {
-+ unsigned pmem;
-+ pmem = task->vm_rss * 1000ULL / kb_main_total;
-+ if (pmem > 999) pmem = 999;
-+ sprintf(tmp, "%2u.%u ", pmem/10U, pmem%10U);
-+ }
- break;
- case P_TTY: {
- char outbuf[9];
-@@ -1032,9 +1038,9 @@
- case P_DT:
- sprintf(tmp, "%3.3s ", scale_k(task->dt, 3, 0));
- break;
-- case P_RSS: /* resident not rss, it seems to be more correct. */
-+ case P_RSS: /* rss, not resident (which includes IO memory) */
- sprintf(tmp, "%4.4s ",
-- scale_k((task->resident << CL_pg_shift), 4, 1));
-+ scale_k((task->rss << CL_pg_shift), 4, 1));
- break;
- case P_WCHAN:
- if (!CL_wchan_nout)
-@@ -1113,7 +1119,7 @@
- static int first=0;
-
- if (first==0) {
-- proc_flags=PROC_FILLMEM|PROC_FILLCMD|PROC_FILLUSR;
-+ proc_flags=PROC_FILLMEM|PROC_FILLCMD|PROC_FILLUSR|PROC_FILLSTATUS|PROC_FILLSTAT;
- if (monpids_index)
- proc_flags |= PROC_PID;
- p_table=readproctab2(proc_flags, p_table, monpids);
-@@ -1154,7 +1160,6 @@
- count = 0;
- ActualLines = 0;
- while ((ActualLines < Maxlines) && (p_table[count]->pid!=-1)) {
-- int pmem;
- char Stat;
-
- Stat = p_table[count]->state;
-@@ -1166,10 +1171,7 @@
- /*
- * Show task info.
- */
-- /* FIXME: this appears to assume a 4 kB page size */
-- /* FIXME: maybe this can overflow on huge memory systems */
-- pmem = p_table[count]->resident * 250 / (kb_main_total);
-- show_task_info(p_table[count], pmem);
-+ show_task_info(p_table[count]);
- if (!Batch)
- ActualLines++;
- }
-@@ -1245,18 +1247,19 @@
- proc_t *this;
- int arrindex, total_time, i, n = 0;
- int sleeping = 0, stopped = 0, zombie = 0, running = 0;
-- unsigned long system_ticks = 0, user_ticks = 0, nice_ticks = 0, idle_ticks = 1000;
-+ double system_ticks, user_ticks, nice_ticks, idle_ticks;
- static int prev_count = 0;
- int systime, usrtime;
-
-- /* start with one 4K page as a reasonable allocate size */
-- static int save_history_size = sizeof(struct save_hist) * 204;
-+ /* start with one page as a reasonable allocate size */
-+ static int save_history_size =
-+ sizeof(long)*1024 / sizeof(struct save_hist);
- static struct save_hist *save_history;
- struct save_hist *New_save_hist;
-
- if (!save_history)
-- save_history = xcalloc(NULL, save_history_size);
-- New_save_hist = xcalloc(NULL, save_history_size);
-+ save_history = xcalloc(NULL, sizeof(struct save_hist)*save_history_size);
-+ New_save_hist = xcalloc(NULL, sizeof(struct save_hist)*save_history_size);
-
- /*
- * Make a pass through the data to get stats.
-@@ -1288,10 +1291,10 @@
- * (usrtime) plus system time (systime).
- */
- total_time = this->utime + this->stime;
-- if (arrindex > save_history_size) {
-+ if (arrindex >= save_history_size) {
- save_history_size *= 2;
-- save_history = xrealloc(save_history, save_history_size);
-- New_save_hist = xrealloc(New_save_hist, save_history_size);
-+ save_history = xrealloc(save_history, sizeof(struct save_hist)*save_history_size);
-+ New_save_hist = xrealloc(New_save_hist, sizeof(struct save_hist)*save_history_size);
- }
- New_save_hist[arrindex].ticks = total_time;
- New_save_hist[arrindex].pid = this->pid;
-@@ -1318,28 +1321,10 @@
- if (this->pcpu > 999)
- this->pcpu = 999;
-
--#if 0
-- /*
-- * Calculate time in idle, system, user and niced tasks.
-- */
-- idle_ticks -= this->pcpu;
-- system_ticks += systime;
-- user_ticks += usrtime;
-- if (this->nice > 0)
-- nice_ticks += this->pcpu;
--#endif
--
- arrindex++;
- n++;
- }
-
--#if 0
-- if (idle_ticks < 0)
-- idle_ticks = 0;
-- system_ticks = (system_ticks * 10 * 100/Hertz) / elapsed_time;
-- user_ticks = (user_ticks * 10 * 100/Hertz) / elapsed_time;
--#endif
--
- /*
- * Display stats.
- */
-@@ -1349,25 +1334,14 @@
- n, sleeping, running, zombie, stopped);
- PUTP(top_clrtoeol);
- putchar('\n');
-- /* BEGIN EXPERIMENTAL CODE */
-- /* Throw out the calculation above... TODO: remove calculation. */
- four_cpu_numbers(&user_ticks,&nice_ticks,&system_ticks,&idle_ticks);
-- do{
-- unsigned long sum;
-- sum = user_ticks+nice_ticks+system_ticks+idle_ticks;
-- user_ticks = (user_ticks * 1000) / sum;
-- system_ticks = (system_ticks * 1000) / sum;
-- nice_ticks = (nice_ticks * 1000) / sum;
-- idle_ticks = (idle_ticks * 1000) / sum;
-- }while(0);
-- /* END EXPERIMENTAL CODE */
- printf("CPU states:"
-- " %2ld.%ld%% user, %2ld.%ld%% system,"
-- " %2ld.%ld%% nice, %2ld.%ld%% idle",
-- user_ticks / 10UL, user_ticks % 10UL,
-- system_ticks / 10UL, system_ticks % 10UL,
-- nice_ticks / 10UL, nice_ticks % 10UL,
-- idle_ticks / 10UL, idle_ticks % 10UL
-+ " %# 5.1f%% user, %# 5.1f%% system,"
-+ " %# 5.1f%% nice, %# 5.1f%% idle",
-+ user_ticks,
-+ system_ticks,
-+ nice_ticks,
-+ idle_ticks
- );
- PUTP(top_clrtoeol);
- putchar('\n');
---- procps-2.0.6.orig/top.h
-+++ procps-2.0.6/top.h
-@@ -22,7 +22,7 @@
- static void show_fields(void);
- static void change_order(void);
- static void change_fields(void);
--static void show_task_info(proc_t *task, int pmem);
-+static void show_task_info(proc_t *task);
- static void show_procs(void);
- static float get_elapsed_time(void);
- static void show_meminfo(void);
---- procps-2.0.6.orig/vmstat.c
-+++ procps-2.0.6/vmstat.c
-@@ -19,7 +19,7 @@
- */
- /* PROCPS
- This is part of the procps package maintained by Michael K. Johnson
-- <johnsonm@redhat.com>; report bugs to <procps-bugs@redhat.com>.
-+ <johnsonm@redhat.com>; report bugs to <acahalan@cs.uml.edu>.
- */
-
- #include "proc/sysinfo.h"
---- procps-2.0.6.orig/uptime.1
-+++ procps-2.0.6/uptime.1
-@@ -26,7 +26,7 @@
- was written by Larry Greenfield <greenfie@gauss.rutgers.edu> and
- Michael K. Johnson <johnsonm@sunsite.unc.edu>.
-
--Please send bug reports to <procps-bugs@redhat.com>
-+Please send bug reports to <acahalan@cs.uml.edu>
- .SH "SEE ALSO"
- .BR ps (1),
- .BR top (1),
---- procps-2.0.6.orig/w.1
-+++ procps-2.0.6/w.1
-@@ -59,10 +59,13 @@
- Show information about the specified user only.
-
- .SH FILES
--.ta
--.IR /etc/utmp " information about who is currently logged on"
--.IR /proc " process information"
--.fi
-+.TP
-+.I /etc/utmp
-+information about who is currently logged on
-+.TP
-+.I /proc
-+process information
-+.PP
-
- .SH "SEE ALSO"
- .BR free (1),
-@@ -78,4 +81,4 @@
- Greenfield <greenfie@gauss.rutgers.edu> and Michael K. Johnson
- <johnsonm@redhat.com>.
-
--Please send bug reports to <procps-bugs@redhat.com>
-+Please send bug reports to <acahalan@cs.uml.edu>
---- procps-2.0.6.orig/watch.c
-+++ procps-2.0.6/watch.c
-@@ -13,8 +13,8 @@
-
- #include <ctype.h>
- #include <getopt.h>
--#include <ncurses.h>
- #include <signal.h>
-+#include <ncurses.h>
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
---- procps-2.0.6.orig/oldps.1
-+++ procps-2.0.6/oldps.1
-@@ -353,4 +353,4 @@
- wrote the generic BFD support for psupdate. Michael K. Johnson
- <johnsonm@redhat.com> is the current maintainer.
-
--Please send bug reports to <procps-bugs@redhat.com>
-+Please send bug reports to <acahalan@cs.uml.edu>
---- procps-2.0.6.orig/kill.1
-+++ procps-2.0.6/kill.1
-@@ -2,7 +2,7 @@
- .\" Licensed under version 2 of the GNU General Public License.
- .\" Written by Albert Cahalan; converted to a man page by
- .\" Michael K. Johnson
--.TH KILL 1 "March 12, 1999" "Linux" "Linux User's Manual"
-+.TH KILL 1 "November 21, 1999" "Linux" "Linux User's Manual"
- .SH NAME
- kill \- report process status
-
-@@ -42,8 +42,7 @@
- USR1 exit
- USR2 exit
- VTALRM exit
--STKFLT exit i386, m68k, arm and ppc hardware only
--UNUSED exit i386, m68k, arm and ppc hardware only
-+STKFLT exit may not be implemented
- PWR ignore may exit on some systems
- WINCH ignore
- CHLD ignore
-@@ -71,9 +70,6 @@
- You may need to run the command described here as /bin/kill to solve
- the conflict.
-
--The STKFLT and UNUSED signals may not be supported in the future,
--and are currently unavailable on some systems.
--
- .SH EXAMPLES
- kill -9 -1
- .br
-@@ -94,4 +90,4 @@
- version that was not standards compliant. Michael K. Johnson
- <johnsonm@redhat.com> is the current maintainer of the procps collection.
-
--Please send bug reports to <procps-bugs@redhat.com>
-+Please send bug reports to <acahalan@cs.uml.edu>
---- procps-2.0.6.orig/oldps.c
-+++ procps-2.0.6/oldps.c
-@@ -304,6 +304,10 @@
-
- /* initiate process table scan */
- tab = openproc(pflags, args, N);
-+ if (!tab) {
-+ fprintf(stderr, "Error: can not access /proc.\n");
-+ exit(1);
-+ }
-
- if (do_header) puts(mode[CL_fmt].header); /* print header */
-
---- procps-2.0.6.orig/skill.1
-+++ procps-2.0.6/skill.1
-@@ -66,8 +66,7 @@
- USR1 exit
- USR2 exit
- VTALRM exit
--STKFLT exit i386, m68k, arm and ppc hardware only
--UNUSED exit i386, m68k, arm and ppc hardware only
-+STKFLT exit may not be implemented
- PWR ignore may exit on some systems
- WINCH ignore
- CHLD ignore
-@@ -90,10 +89,6 @@
- XFSZ core core dump may fail
- .TE
-
--.SH NOTES
--The STKFLT and UNUSED signals may not be supported in the future,
--and they are currently unavailable on some systems.
--
- .SH EXAMPLES
- .TS
- lB lB
-@@ -101,7 +96,7 @@
- Command Description
- .TC
- snice netscape crack +7 Slow down netscape and crack
--skill -KILL -v pts/* Kill users on new-style PTY devices
-+skill -KILL -v /dev/pts/* Kill users on new-style PTY devices
- skill -STOP torvalds davem tytso Stop 3 users
- snice -17 root bash Give priority to root's shell
- .TE
-@@ -117,4 +112,4 @@
- replacement for a non-free version. Michael K. Johnson <johnsonm@redhat.com>
- is the current maintainer of the procps collection.
-
--Please send bug reports to <procps-bugs@redhat.com>
-+Please send bug reports to <acahalan@cs.uml.edu>
---- procps-2.0.6.orig/debian/procps.sh
-+++ procps-2.0.6/debian/procps.sh
-@@ -0,0 +1,39 @@
-+#! /bin/sh
-+# /etc/init.d/procps: Set kernel variables from /etc/sysctl.conf
-+#
-+# written by Elrond <Elrond@Wunder-Nett.org>
-+
-+# Check for existance of the default file and exit if not there,
-+# Closes #52839 for the boot-floppy people
-+[ -r /etc/default/rcS ] || exit 0
-+. /etc/default/rcS
-+
-+[ -x /sbin/sysctl ] || exit 0
-+
-+
-+case "$1" in
-+ start|reload|restart|force-reload)
-+ if [ ! -r /etc/sysctl.conf ]
-+ then
-+ exit 0
-+ fi
-+ if [ "$VERBOSE" = "no" ]
-+ then
-+ n="-n"
-+ redir=">/dev/null"
-+ else
-+ echo "Setting kernel variables."
-+ n=""
-+ redir=""
-+ fi
-+ eval "/sbin/sysctl $n -p $redir"
-+ ;;
-+ stop|show)
-+ ;;
-+ *)
-+ echo "Usage: /etc/init.d/sysctl.sh {start|stop|reload|restart}" >&2
-+ exit 1
-+ ;;
-+esac
-+
-+
---- procps-2.0.6.orig/debian/rules
-+++ procps-2.0.6/debian/rules
-@@ -0,0 +1,90 @@
-+#!/usr/bin/make -f
-+# Sample debian/rules that uses debhelper.
-+# GNU copyright 1997 to 1999 by Joey Hess.
-+
-+# Uncomment this to turn on verbose mode.
-+#export DH_VERBOSE=1
-+
-+# This is the debhelper compatability version to use.
-+export DH_COMPAT=1
-+
-+build: build-stamp
-+build-stamp:
-+ dh_testdir
-+
-+ # Add here commands to compile the package.
-+ -$(MAKE)
-+
-+ touch build-stamp
-+
-+clean:
-+ dh_testdir
-+ dh_testroot
-+ rm -f build-stamp install-stamp
-+
-+ # Add here commands to clean up after the build process.
-+ #-$(MAKE) clean
-+ -$(MAKE) distclean
-+
-+ dh_clean
-+
-+install: install-stamp
-+install-stamp: build-stamp
-+ dh_testdir
-+ dh_testroot
-+ dh_clean -k
-+ dh_installdirs
-+
-+ # Add here commands to install the package into debian/tmp.
-+ #$(MAKE) DESTDIR=`pwd`/debian/tmp install_free install_skill install_oldps install_snice install_tload install_sysctl install_uptime install_vmstat install_w install_watch install_ps install_top install_sysctl
-+ $(MAKE) DESTDIR=`pwd`/debian/tmp install
-+ $(MAKE) DESTDIR=`pwd`/debian/tmp TOPDIR=`pwd`/debian/tmp/usr libinstall
-+ (cd `pwd`/debian/tmp/usr/bin && mv w w.procps )
-+ (cd `pwd`/debian/tmp/usr/lib && ln -sf /lib/libproc.so.2.0.6 libproc.so)
-+ # Special for kill, we need it in /bin
-+ install --mode a=rx --strip skill `pwd`/debian/tmp/bin/kill
-+ rm `pwd`/debian/tmp/usr/bin/kill
-+ install --mode 644 -o root -g root debian/sysctl.conf `pwd`/debian/tmp/etc
-+
-+
-+ touch install-stamp
-+
-+# Build architecture-independent files here.
-+binary-indep: build install
-+# We have nothing to do by default.
-+
-+# Build architecture-dependent files here.
-+binary-arch: build install
-+# dh_testversion
-+ dh_testdir
-+ dh_testroot
-+ dh_installdocs
-+ dh_installexamples
-+ dh_installmenu
-+# dh_installemacsen
-+# dh_installpam
-+ dh_installinit --update-rcd-params='start 30 S .' --init-script='procps.sh'
-+ dh_installcron
-+ dh_installmanpages -pprocps
-+ (cd `pwd`/debian/tmp/usr/share/man/man1 && mv w.1 w.procps.1 )
-+ dh_installinfo
-+# dh_undocumented
-+ dh_installchangelogs NEWS
-+ dh_link
-+ dh_strip
-+ dh_compress
-+ dh_fixperms
-+ dh_movefiles
-+ # You may want to make some executables suid here.
-+ dh_suidregister
-+ dh_makeshlibs
-+ dh_installdeb
-+# dh_perl
-+ dh_shlibdeps -pprocps -u"-Ldebian/procps.shlibs.local"
-+ dh_shlibdeps -plibproc-dev -u"-Ldebian/shlibs.local"
-+ dh_gencontrol
-+ dh_md5sums
-+ dh_builddeb
-+
-+binary: binary-indep binary-arch
-+.PHONY: build clean binary-indep binary-arch binary install
---- procps-2.0.6.orig/debian/README.Debian
-+++ procps-2.0.6/debian/README.Debian
-@@ -0,0 +1,6 @@
-+procps for DEBIAN
-+----------------------
-+ XConsole and other X-based programs have been finally removed. Look in
-+ the x packages for their equivalents.
-+
-+ Craig Small <csmall@debian.org>
---- procps-2.0.6.orig/debian/changelog
-+++ procps-2.0.6/debian/changelog
-@@ -0,0 +1,455 @@
-+procps (1:2.0.6-9) unstable; urgency=medium
-+
-+ * added libncurses5-dev to build-depends, Closes: #67533
-+ * Put kill back into /bin Closes #67580, #67582
-+ * Put 2.0.6-7 ps.1 back in Closes: #67451
-+
-+ -- Craig Small <csmall@debian.org> Tue, 25 Jul 2000 08:13:21 +1000
-+
-+procps (1:2.0.6-8) unstable; urgency=low
-+
-+ * New upstream source:
-+ * - sysctl EOF bug fixed Closes: #62877
-+ * - stop crashes with unmounted /proc Closes: #63512, #55177
-+ * - Versions checking tolerates RH /proc/ksyms Closes: #59798
-+ * - Top works better with SMP Closes: #34734, #56547, #59703
-+
-+ -- Craig Small <csmall@debian.org> Fri, 14 Jul 2000 22:33:44 +1000
-+
-+procps (1:2.0.6-7) unstable; urgency=low
-+
-+ * Fixed missing version Closes: #62207, #62484, #59112
-+ * Stop crashes with umounted /proc Closes: #63512, #55177
-+ * Nicer man pages Closes: #63495, #59406
-+ * Fixed sysctl eof bug Closes: #62877
-+ * watch wraps properly Closes: #60913
-+ * watch handles tabs Closes: #46213
-+ * watch honors locale settings Closes: #63762
-+ * now versioned replaces line for bsdutils
-+
-+ -- Craig Small <csmall@debian.org> Mon, 29 May 2000 13:31:54 +1000
-+
-+procps (1:2.0.6-6) unstable; urgency=low
-+
-+ * New patchlevel (000221)
-+ * ps 'f' ASCII art forest fixed. Closes: #57134, #58644
-+ * let insane people run ps setuid. Closes: #56701
-+ * note that kernel 2.3 is now faster. Closes: #49130
-+ * top with WCHAN was leaking memory. Closes: #58172, #52257, #56889
-+ * can show current CPU. Closes: #37023
-+ * w looks better now. Closes: #55952
-+ * init.d/procps removed if exists. Closes: #55137, #55852
-+ * Fixed skill/snice man page (thanks man-db maint!) Closes: #53736, #46743
-+ * Fixed ps man page Closes: #58365
-+
-+ -- Craig Small <csmall@debian.org> Wed, 23 Feb 2000 10:31:37 +1100
-+
-+procps (1:2.0.6-5) unstable; urgency=low
-+
-+ * New upstream source
-+ * kill "_R(smp_|smp2gig_|2gig_)?[0-9a-fA-F]{8,}" Closes: #54394, #53208
-+ * added type 'S' and scan past machine types Closes: #54396
-+ * Fixed w(1) manpage Closes: #54709
-+ * top now agrees with ps for RSS Closes: #52679
-+
-+ -- Craig Small <csmall@debian.org> Tue, 11 Jan 2000 08:23:56 +1100
-+
-+procps (1:2.0.6-4) unstable; urgency=low
-+
-+ * procps init.d script quietly dies if not /etc/default/rcS Closes:
-+ #52839
-+ * Put the NEWS changelog back in Closes: #52678
-+ * Fixed that damn Rsmp annoying message bug Closes: #48686
-+ * Remove /etc/init.d/procps Closes: #53818
-+
-+ -- Craig Small <csmall@debian.org> Mon, 20 Dec 1999 11:14:53 +1100
-+
-+procps (1:2.0.6-3) unstable; urgency=low
-+
-+ * Patched ps so it complains if you chmod 711 /proc Closes: #52481
-+ * Did the same for top.
-+ * Ditto for oldps.
-+ * Changed and int to a char* Closes: #52482
-+ * sysctl.conf file references sysctl.conf (5) not 8 Closes: #52385
-+ * props init.d script changed to procps.sh Closes: #52228
-+
-+ -- Craig Small <csmall@debian.org> Mon, 13 Dec 1999 11:57:01 +1100
-+
-+procps (1:2.0.6-2) unstable; urgency=low
-+
-+ * Changed psmisc from reccomends to suggests
-+ * %MEM now works, Closes: #50010 #50055 #50148 #50356
-+ * top doesn't crash with > 204 processes Closes: #50055
-+ * Another libproc fd leak fixed Closes: #45398
-+ * ps silently ignores m and -m for future compatibility Closes: #48308
-+ * Added a sysctl.conf and other files as suggested Closes: #51098
-+ * Fix start field instability
-+ * ps.1 fixed Closes: #35137
-+
-+ -- Craig Small <csmall@debian.org> Tue, 7 Dec 1999 14:42:51 +1100
-+
-+procps (1:2.0.6-1) unstable; urgency=low
-+
-+ * New upstream
-+ * sysctl crash fixed, Closes: #49015
-+ * libproc file descriptor leak fixed, Closes: #45398
-+ * False positive System.map mismatches killed, Closes: #49047
-+ * Supports 64 Hz for StrongARM/Shark Closes: #47461
-+ * pr_time fixed, Closes: #46223
-+ * libc num cpu workaround back in, Closes: #49039
-+ * Fixed kill manpage, Closes: #47018
-+ * This version definitely, absolutely has kill, Closes: #46762
-+
-+
-+ -- Craig Small <csmall@debian.org> Fri, 5 Nov 1999 12:46:05 +1100
-+
-+procps (1:2.0.3-5) unstable; urgency=low
-+
-+ * Changed conflicts with replaces
-+
-+ -- Craig Small <csmall@debian.org> Wed, 6 Oct 1999 14:36:48 +1000
-+
-+procps (1:2.0.3-4) unstable; urgency=low
-+
-+ * support SMP systems with versioned kernel modules Closes: #45621, #46465
-+ * Added kill to this (it is removed from bsdutils).
-+ * We now need kill manpage, Closes: #46004
-+
-+ -- Craig Small <csmall@debian.org> Tue, 5 Oct 1999 10:28:01 +1000
-+
-+procps (1:2.0.3-3) unstable; urgency=low
-+
-+ * System.map support for non-i386 Closes: #45592, #45250
-+ * Do not require /proc/ksyms Closes: #45128, #45132, #45619
-+ * Alternative w.1 points to the right spot, Closes: #45331
-+ * Copyright for skill and snice and ps fixed, Closes: #45119
-+
-+ -- Craig Small <csmall@debian.org> Tue, 21 Sep 1999 16:31:59 +1000
-+
-+procps (1:2.0.3-2) unstable; urgency=medium
-+
-+ * Now with top! Closes: #45106
-+
-+ -- Craig Small <csmall@debian.org> Wed, 15 Sep 1999 11:12:34 +1000
-+
-+procps (1:2.0.3-1) unstable; urgency=low
-+
-+ * New upstream source
-+ * Debian personality does m flag Closes: #44832
-+ * Corrected typo in top.1 Closes: #44836
-+ * New improved watch Closes: #29970
-+
-+ -- Craig Small <csmall@debian.org> Mon, 13 Sep 1999 16:59:16 +1000
-+
-+procps (1:2.0.2-4) unstable; urgency=high
-+
-+ * Fixed the nasty ps formatting problem (Bug #40859 #40856 #40839 )
-+
-+ -- Craig Small <csmall@debian.org> Wed, 7 Jul 1999 08:41:54 +1000
-+
-+procps (1:2.0.2-3) unstable; urgency=low
-+
-+ * New upstream patches/source
-+ * SMB Hz wierdness fixed (Bug #33023 #33284)
-+ * non-tty output does not get chopped at 80 columns (bug #36688)
-+ * BSD personalities set the default selection and output format (bug #36698)
-+ * Fixed collumn spacing problem (Bug #35309)
-+ * Work around for borken libs that return 0 processors (Bug #36902)
-+ * skill now uses process name not command line (Bug #19208)
-+
-+ -- Craig Small <csmall@debian.org> Mon, 5 Jul 1999 07:29:47 +1000
-+
-+procps (1:2.0.2-2) unstable; urgency=low
-+
-+ * Removed kill and manual page (Bug #36421 #36551 #36375)
-+ * Put in patch for bogus sysconf return (Bug #36494 #36532 #36581)
-+
-+ -- Craig Small <csmall@debian.org> Wed, 28 Apr 1999 09:04:59 +1000
-+
-+procps (1:2.0.2-1) unstable; urgency=low
-+
-+ * New upstream version (Bug #34394 #27291 #34250 #34956 #35240 #35247
-+ #35520 #35756 #34580 )
-+
-+ -- Craig Small <csmall@debian.org> Mon, 19 Apr 1999 13:26:48 +1000
-+
-+procps (1:2.0.0-1) unstable; urgency=low
-+
-+ * New upstream version (Bug #33083 23347 33462 10556 33266 33371 )
-+
-+
-+ -- Craig Small <csmall@debian.org> Mon, 15 Mar 1999 14:21:57 +1100
-+
-+procps (1:1.9.0-2) unstable; urgency=low
-+
-+ * top now resumes (Bug #32106 )
-+ * debhelper text problem fixed in postinst (Bug #32963 #33122 #33003 33117 )
-+ * oldps and ps now use alternatives (Bug #33083 )
-+ * ps s format now not ugly (Bug #28266 )
-+ * watch command line help and man page correct (Bug #31702 )
-+ * sessreg removed from package (Bug #32294 )
-+ * ps doesn't display extra spaces (Bug #27799 )
-+ * top has spaces in command lines again (Bug #33060 )
-+ * ps now has personality (Bug #22923 #18429 )
-+ * moved non-free skill and snice to non-free package.
-+
-+ -- Craig Small <csmall@debian.org> Tue, 9 Feb 1999 15:10:58 +1100
-+
-+procps (1:1.9.0-1) unstable; urgency=low
-+
-+ * New Upstream source
-+
-+ -- Craig Small <csmall@debian.org> Thu, 4 Feb 1999 14:48:37 +1100
-+
-+procps (1:1.2.9-3) unstable; urgency=low
-+
-+ * Linked to ncurses4
-+
-+ -- Craig Small <csmall@debian.org> Fri, 30 Oct 1998 14:13:02 +1100
-+
-+procps (1:1.2.9-2) unstable; urgency=low
-+
-+ * top now has spaces in between command lines (Bug #28178 )
-+ * --version or -V now shows proper version.
-+
-+ -- Craig Small <csmall@debian.org> Mon, 26 Oct 1998 08:55:59 +1100
-+
-+procps (1:1.2.9-1) unstable; urgency=low
-+
-+ * New upstream version (Bug #27573 )
-+ * Menu entry changed from System to Menu/System (Bug #27438 )
-+ * Char variables changed to int for powerpc (Bug #26624 )
-+ * libproc now nulls allocated structure (Bug #26225 )
-+ * No longer uses psdevtab (yay!) (Bug #25388 )
-+ * ps doesn't double space command line parameters (Bug #25306 #24293 )
-+ * ps now silently ignores g flag for those BSD heads (Bug #24075 )
-+
-+ -- Craig Small <csmall@debian.org> Fri, 9 Oct 1998 09:15:11 +1000
-+
-+procps (1:1.2.7-2) unstable; urgency=low
-+
-+ * Top can suspend twice (or three times even) (Bug #22997 )
-+ * Libraries properly built (Bug #20010 )
-+
-+ -- Craig Small <csmall@debian.org> Mon, 1 Jun 1998 09:16:09 +1000
-+
-+procps (1:1.2.7-1) frozen unstable; urgency=high
-+
-+ * New upstream source, fixes security bug (Bug #21475)
-+
-+ -- Craig Small <csmall@debian.org> Thu, 23 Apr 1998 08:04:54 +1000
-+
-+procps (1:1.2.6-2) unstable; urgency=low
-+
-+ * Fixed Shared library dependencies (bugs #18388 #18394 18392 )
-+ * Conflicts with earlier versions of w-bassman (bug #18389 )
-+
-+ -- Craig Small <csmall@debian.org> Mon, 23 Feb 1998 09:05:54 +1100
-+
-+procps (1:1.2.6-1) unstable; urgency=low
-+
-+ * New upstream source.
-+ * xload is undiverted (Bug #17102 )
-+ * ps_fields.7.gz removed (Bug #18090 )
-+ * Colour patches removed, color-related bugs gone (Bug #18008 #17217 #18090 )
-+ * POSIX patches removed, cmd line bugs gone (Bug #15537 )
-+ * w is now an alternative w.procps (Bug #17960 )
-+ * skill now works with process names (Bug #17087 )
-+ * ps and top man pages have their field descriptions (Bug #17360 )
-+ * ps u fixed (Bug #17313 )
-+ * Source code is no longer FUBAR (Bug #17892 )
-+ * top now redraws screen after config screen (Bug #11896 )
-+ * Circular dependency removed (Bug #16966 )
-+ * top does mess up screens with wrong cmd line (Bug #17230 )
-+ * top suspends with ctrl-Z (Bug #16703 )
-+
-+ -- Craig Small <csmall@debian.org> Tue, 17 Feb 1998 08:31:21 +1100
-+
-+procps (1:1.2.5-2) unstable; urgency=low
-+
-+ * Moved /bin into /bin/ps (Bug #17001 )
-+
-+ -- Craig Small <csmall@debian.org> Tue, 13 Jan 1998 07:50:43 +1100
-+
-+procps (1:1.2.5-1) unstable; urgency=low
-+
-+ * TTY selection works ( #16724 )
-+ * top and ps now accept --colour and *_COLOURS
-+ * xproc copyright file not compressed ( #14491 )
-+ * All #include <proc/*.h> now #include "proc/*.h" ( #13482 )
-+ * Copyright doesn't mention psmisc now ( #16704 )
-+ * Moved ps back into /bin ( #16737 #16705 )
-+ * New upstream source ( #16795 )
-+
-+ -- Craig Small <csmall@debian.org> Mon, 12 Jan 1998 08:35:10 +1100
-+
-+procps (1:1.2.2-1) unstable; urgency=low
-+
-+ * New maintainer
-+ * Updated upstream source to 1.2.2 (instead of 1.2)
-+ * Merged Helmut's color/command line patches into upstream.
-+ * Copyright file is not compressed ( #14493 #14415 )
-+ * psdatabase refreshed when installing ( #10693 )
-+ * Fixed +/- line in free ( #10785 #10870 #11566 #12027 #12245 #12374 )
-+ * w collumns corrected ( #10898 #13117 )
-+ * top saves sort type ( #11553 )
-+ * Linked to libc6 ( #11725 )
-+ * top doesn't coredump with S option ( #11855 )
-+ * skill works with given patch ( #12023 )
-+ * libproc-dev has proper sym link ( #12697 )
-+ * top -h doesn't change terminal settings ( #13513 )
-+ * ps -s has "CAUGHT" not "CATCHED" ( #14342 )
-+ * ps_colors.7 and ps_fields.7 reformatted ( #14109 #14544 #14545 )
-+ * ps checks for tty before using colors ( #14596 )
-+ * top sets stop signal handler later, stopping race ( #14769 )
-+ * When using POSIX personality, processes show up ( #14780 )
-+ * top checks for valid term type ( #15807 )
-+ * xproc now Depends on procps-1.2.*-* ( #10762 #13347 )
-+ * xproc dependencies fixed ( #12698 )
-+
-+ -- Craig Small <csmall@debian.org> Tue, 30 Dec 1997 11:33:54 +1100
-+
-+procps (1.12.2.1) unstable; urgency=low
-+
-+ * Non-maintainer release, built for libc6.
-+ * Added in free.c from new procps version 1.2.3 (from sunsite), seems to
-+ fix all the problems with free reporting bogus valus.
-+
-+ -- Joey Hess <joeyh@master.debian.org> Fri, 24 Oct 1997 13:34:35 -0400
-+
-+procps (1.12.2) stable unstable; urgency=low
-+
-+ * fixed meminfo handling again, as the fix wouldn't work on pre-2.1.x
-+ kernels.
-+ * fixed free to use the meminfo routines from libproc.
-+
-+ -- Helmut Geyer <Helmut.Geyer@iwr.uni-heidelberg.de> Fri, 13 Jun 1997 22:42:14 +0200
-+
-+procps (1.12.1) stable unstable; urgency=low
-+
-+ * fixed several bugs
-+ * replaced utmp handling to support wrappers.
-+ * added /proc/meminfo support for 2.1.x kernels.
-+
-+ -- Helmut Geyer <Helmut.Geyer@iwr.uni-heidelberg.de> Tue, 10 Jun 1997 23:59:41 +0200
-+
-+procps (1.11.6) frozen unstable; urgency=medium
-+
-+ * psmisc 1.14 : new upstream version (mainly bugfixes)
-+ * added a lot of new serial device major numbers to the device lookup
-+ code. Somehow it seems there are new serial devices every other week.
-+ * fixed a bug in top: broken .toprc may cause a segmentation fault.
-+
-+ -- Helmut Geyer <Helmut.Geyer@iwr.uni-heidelberg.de> Sun, 4 May 1997 09:50:30 +0200
-+
-+procps (1.11.5) frozen unstable; urgency=medium
-+
-+ * minor changes to make it compile with libc6
-+ * fix top behaviour on machines having nonstandard NR_TASKS up to 4k
-+ tasks
-+
-+ -- Helmut Geyer <Helmut.Geyer@iwr.uni-heidelberg.de> Fri, 18 Apr 1997 02:07:46 +0200
-+
-+procps (1.11.4) unstable; urgency=medium
-+
-+ * strip libproc.so from unneeded symbols (Bug# 8311)
-+ * fixed watch.1 example (Bug# 8169)
-+ * partly fixed fuser sigsegv core dump (Bug# 8004)
-+ * menu entries for xproc and procps (Bug# 8325)
-+ * divertions for xmem and xload. (Bug# 7565)
-+
-+ -- Helmut Geyer <Helmut.Geyer@iwr.uni-heidelberg.de> Sun, 13 Apr 1997 20:55:05 +0200
-+
-+procps (1.11.3) unstable; urgency=low
-+
-+ * fixed uptime again, minor Makefile changes
-+
-+ -- Helmut Geyer <Helmut.Geyer@iwr.uni-heidelberg.de> Fri, 21 Feb 1997 16:22:04 +0100
-+
-+procps (1.11.2) unstable; urgency=medium
-+
-+ * fixed typo in ps_fields.7 (Bug#5457)
-+ * fixed typo in debian/rules (Bug #5585)
-+ * fixed bug in w introduced in 1.11.1 (Bugs #5489, #5694, #5695, #5705).
-+ * added support for non-standard serial devices (long overdue - Bug
-+ #5771).
-+ * fixed uptime option handling (Bug #6099).
-+ * fixed top problems with missing/corrupted utmp (Bug #5819).
-+ * fixed manpage problems (Bug #5936).
-+
-+ -- Helmut Geyer <Helmut.Geyer@iwr.uni-heidelberg.de> Wed, 19 Feb 1997 18:49:26 +0100
-+
-+procps (1.11.1) unstable; urgency=low
-+
-+ * fixed bug in w <username>
-+ * automatic resize if field length is exceeded. This changed the shared
-+ library, so popping the major number.
-+ * fixed numeric WCHAN output on Alphas and stupid bug in ps (again,
-+ thanks to H. Koenig).
-+ * fixed top memory statistics for systems with more than 100M memory or
-+ swap.
-+
-+ -- Helmut Geyer <Helmut.Geyer@iwr.uni-heidelberg.de> Tue, 12 Nov 1996 02:57:18 +0100
-+
-+procps (1.10.1) unstable; urgency=low
-+
-+ * merged in ALPHA & Sparc patches
-+ (from ftp.azstarnet.com:/pub/linux/axp/glibc)
-+ * fixed ps --deselect/-N for pid lists
-+ * use shared libs from now on, install shlibs again
-+ * manpages for libproc
-+ * static lib compiled without -fPIC
-+ * added libproc package for development installing libproc headers,
-+ manpages and static library.
-+ * fixed PROC_REAL bug when PROC_FILLSTATUS isn't set.
-+ * fixed color bug in ps --forest
-+ * added xproc package for xload, xmem, xidle, xcpustate
-+ (XConsole left out as we use xconsole & klogd on debian)
-+ * adapted xload manpage for xidle and xmem
-+ * fixed xmem to cope with newer kernels (where shared pages are counted
-+ once for each additional reference)
-+ * fixed top change_fields bug (a field needs 24, not 21 spaces)
-+ * fixed several Alpha bugs (thanks to Harald Koenig)
-+ * due to popular demand, the old format for time intervals is back.
-+ for all program using this, a toggle command line option has been
-+ provided. The default behaviour depends on the compile time option
-+ NEW_TIME_DEFAULT (see main Makefile)
-+
-+ -- Helmut Geyer <Helmut.Geyer@iwr.uni-heidelberg.de> Wed, 23 Oct 1996 21:30:54 +0200
-+
-+procps (1.09.2) unstable; urgency=low
-+
-+ * fixed cpu nice % in summary
-+ * fixed topsetup initialisation in top.h I messed up in last revision
-+ * fixed pipe output bug
-+ * fixed --deselect bug in SVR4/POSIX mode
-+
-+ -- Helmut Geyer <Helmut.Geyer@iwr.uni-heidelberg.de> Sun, 20 Oct 1996 13:57:11 +0200
-+
-+procps (1.09.1) unstable; urgency=low
-+
-+ * fixed ps -w bug displaying too many empty lines
-+ * fixed SIGSEGV bug in ps -www
-+ * fixed bug in top not calculating length of the command/args/env fields
-+ at the field selection screen in some circumstances.
-+ * fixed SIGSEGV bug when using environ field
-+
-+ -- Helmut Geyer <Helmut.Geyer@iwr.uni-heidelberg.de> Sat, 12 Oct 1996 07:59:29 +0200
-+
-+procps (1.09) experimental; urgency=low
-+
-+ * This is an experimental release of the procps suite. A lot of features have
-+ been added since the 1.01(a) release:
-+ - support for both BSD and POSIX (SVR4) style command line options.
-+ - completely configurable display of information.
-+ - colour markup of processes exceeding limits or belonging to a user.
-+ Please take a look at /usr/doc/procps/NEWS and the manpages for a concise
-+ list. This is how the next upstream release of procps may look
-+ (i.e. it will look like this if there is not too much resistance).
-+
-+ -- Helmut Geyer <Helmut.Geyer@iwr.uni-heidelberg.de> Sat, 5 Oct 1996 14:26:57 +0200
-+
-+Local variables:
-+mode: debian-changelog
-+add-log-mailing-address: "Craig Small <csmall@debian.org>"
-+End:
---- procps-2.0.6.orig/debian/control
-+++ procps-2.0.6/debian/control
-@@ -0,0 +1,31 @@
-+Source: procps
-+Section: base
-+Priority: required
-+Maintainer: Craig Small <csmall@debian.org>
-+Build-Depends: debhelper, libncurses5-dev
-+Standards-Version: 3.1.1
-+
-+Package: procps
-+Architecture: any
-+Replaces: watch
-+Provides: watch
-+Depends: ${shlibs:Depends}
-+Conflicts: watch, libproc-dev (<< 1:1.2.6-2), w-bassman (<< 1.0-3), procps-nonfree
-+Replaces: bsdutils (<< 2.9x-1)
-+Recommends: psmisc
-+Description: The /proc file system utilities.
-+ These are utilities to browse the /proc filesystem, which is not a real file
-+ system but a way for the kernel to provide information about the status of
-+ entries in its process table. (e.g. running, stopped or "zombie")
-+ Both command line and full screen utilities are provided. Ncurses is needed
-+ for the full screen utilities.
-+
-+Package: libproc-dev
-+Architecture: any
-+Section: devel
-+Priority: optional
-+Depends: libc6-dev, procps (= ${Source-Version})
-+Description: library for accessing process information from /proc
-+ These are the header files for libproc. Some packages using libproc
-+ to access process information from /proc need these to compile.
-+
---- procps-2.0.6.orig/debian/copyright
-+++ procps-2.0.6/debian/copyright
-@@ -0,0 +1,29 @@
-+This is the Debian Linux prepackaged version of the /proc file
-+system utilities.
-+
-+This package was downloaded from:
-+ http://www.cs.uml.edu/~acahalan/linux/procps-XXXXXX.tar.gz
-+
-+
-+Upstream Author(s):
-+Werner Almesberger <almesber@di.epfl.ch>, Roger Binns, Charles
-+Blake <cblake@ucsd.edu>, Brian Edmonds, David Engel <david@ods.com>,
-+Larry Greenfield <greenfie@gauss.rutgers.edu>, Michael K. Johnson
-+<johnsonm@sunsite.unc.edu>, Branko Lankester <lankeste@fwi.uva.nl>,
-+Robert Nation <nation@rocket.sanders.lockheed.com>, Michael Shields
-+<mjshield@nyx.cs.du.edu>, Henry Ware <al172@yfn.ysu.edu>, Matt
-+Welsh <mdw@sunsite.unc.edu> and Albert D. Cahalan
-+
-+The upstream maintainer of procps is Michael J. Johnson
-+<johnsonm@sunsite.unc.edu>.
-+
-+All programs except ps, skill and snice are copyright by their
-+authors and redistributable under the terms of the GNU General
-+Public License. On Debian Linux systems, the complete text of
-+the GNU General Public License can be found in
-+`/usr/share/common-licenses/GPL'.
-+
-+ps, skill and snice are copyright by their authors and redistributable under
-+the terms of the GNU Library General Public License. On Debian Linux
-+systems, the complete text of the GNU Library General Public License can
-+be found in `/usr/share/common/licenses/LGPL'.
---- procps-2.0.6.orig/debian/dirs
-+++ procps-2.0.6/debian/dirs
-@@ -0,0 +1,11 @@
-+etc
-+lib
-+sbin
-+bin
-+usr/bin
-+usr/sbin
-+usr/include/proc
-+usr/lib
-+usr/share/man/man1
-+usr/share/man/man8
-+
---- procps-2.0.6.orig/debian/docs
-+++ procps-2.0.6/debian/docs
-@@ -0,0 +1,3 @@
-+BUGS
-+TODO
-+
---- procps-2.0.6.orig/debian/libproc-dev.dirs
-+++ procps-2.0.6/debian/libproc-dev.dirs
-@@ -0,0 +1,2 @@
-+usr/lib
-+usr/include/proc
---- procps-2.0.6.orig/debian/libproc-dev.files
-+++ procps-2.0.6/debian/libproc-dev.files
-@@ -0,0 +1,12 @@
-+usr/lib/libproc.a
-+usr/lib/libproc.so
-+usr/include/proc/compare.h
-+usr/include/proc/devname.h
-+usr/include/proc/procps.h
-+usr/include/proc/readproc.h
-+usr/include/proc/sig.h
-+usr/include/proc/status.h
-+usr/include/proc/sysinfo.h
-+usr/include/proc/tree.h
-+usr/include/proc/version.h
-+usr/include/proc/whattime.h
---- procps-2.0.6.orig/debian/menu
-+++ procps-2.0.6/debian/menu
-@@ -0,0 +1 @@
-+?package(procps):needs=text section="Apps/System" title="Top" command="/usr/bin/top"
---- procps-2.0.6.orig/debian/postinst
-+++ procps-2.0.6/debian/postinst
-@@ -0,0 +1,29 @@
-+#!/bin/sh
-+set -e
-+
-+if [ -e /etc/psdevtab ] ; then
-+ rm -f /etc/psdevtab
-+fi
-+if [ -e /etc/psdatabase ]
-+then
-+ rm -f /etc/psdatabase
-+fi
-+# Remove old /etc/init.d/procps file, Bug #53818
-+if [ -e /etc/init.d/procps ]
-+then
-+ rm -f /etc/init.d/procps
-+fi
-+# Remove old procps init.d script, if it exists Closes: #55137
-+if [ -e /etc/rcS.d/S30procps ]
-+then
-+ update-rc.d procps remove >/dev/null
-+fi
-+
-+#
-+# Now to do the alternatives for w and ps
-+update-alternatives --install /usr/bin/w w /usr/bin/w.procps 50 \
-+ --slave /usr/share/man/man1/w.1.gz w.1.gz /usr/share/man/man1/w.procps.1.gz
-+
-+ldconfig
-+
-+#DEBHELPER#
---- procps-2.0.6.orig/debian/prerm
-+++ procps-2.0.6/debian/prerm
-@@ -0,0 +1,11 @@
-+#!/bin/sh
-+
-+if [ "$1" != "upgrade" ]
-+then
-+ update-alternatives --remove w /usr/bin/w.procps
-+fi
-+
-+#DEBHELPER#
-+
-+exit 0
-+
---- procps-2.0.6.orig/debian/procps.shlibs.local
-+++ procps-2.0.6/debian/procps.shlibs.local
-@@ -0,0 +1 @@
-+libproc 2.0.6
---- procps-2.0.6.orig/debian/shlibs.local
-+++ procps-2.0.6/debian/shlibs.local
-@@ -0,0 +1 @@
-+libproc 2.0.6 procps (>> 1:2.0.6-0), procps (<< 1:2.0.7-0)
---- procps-2.0.6.orig/debian/watch
-+++ procps-2.0.6/debian/watch
-@@ -0,0 +1,6 @@
-+# Example watch control file for uscan
-+# Rename this file to "watch" and then you can run the "uscan" command
-+# to check for upstream updates and more.
-+# Site Directory Pattern Version Script
-+sunsite.unc.edu /pub/Linux/Incoming procps-*.tar.gz debian uupdate
-+
---- procps-2.0.6.orig/debian/sysctl.conf
-+++ procps-2.0.6/debian/sysctl.conf
-@@ -0,0 +1,6 @@
-+#
-+# /etc/sysctl.conf - Configuration file for setting system variables
-+# See sysctl.conf (5) for information.
-+#
-+#kernel.domainname = example.com
-+#net/ipv4/icmp_echo_ignore_broadcasts=1
---- procps-2.0.6.orig/debian/examples
-+++ procps-2.0.6/debian/examples
-@@ -0,0 +1,2 @@
-+debian/sysctl.conf
-+
---- procps-2.0.6.orig/debian/conffiles
-+++ procps-2.0.6/debian/conffiles
-@@ -0,0 +1,2 @@
-+/etc/sysctl.conf
-+/etc/init.d/procps.sh