ps: built-in test code, etc.

This commit is contained in:
albert 2004-10-12 00:12:25 +00:00
parent 630b655893
commit 6ec1cff342
7 changed files with 67 additions and 20 deletions

View File

@ -18,7 +18,7 @@
VERSION := 3
SUBVERSION := 2
MINORVERSION := 3
MINORVERSION := 4
TARVERSION := $(VERSION).$(SUBVERSION).$(MINORVERSION)
############ vars
@ -121,7 +121,7 @@ ALL_CFLAGS += $(m64)
ALL_CFLAGS += $(call check_gcc,-Wdeclaration-after-statement,)
ALL_CFLAGS += $(call check_gcc,-Wpadded,)
ALL_CFLAGS += $(call check_gcc,-Wstrict-aliasing=2,)
ALL_CFLAGS += $(call check_gcc,-Wstrict-aliasing,)
# Adding -fno-gcse might be good for those files which
# use computed goto.

View File

@ -14,9 +14,6 @@ EXTERN_C_BEGIN
extern int escape_strlist(char *restrict dst, const char *restrict const *restrict src, size_t n);
extern int escape_str(char *restrict dst, const char *restrict src, int bufsize, int maxglyphs);
extern int octal_escape_str(char *restrict dst, const char *restrict src, size_t n);
extern int simple_escape_str(char *restrict dst, const char *restrict src, size_t n);
extern int escape_command(char *restrict const outbuf, const proc_t *restrict const pp, int bytes, int glyphs, unsigned flags);
EXTERN_C_END

View File

@ -204,7 +204,7 @@ static void init_libproc(void){
if(linux_version_code > LINUX_VERSION(2, 4, 0)){
Hertz = find_elf_note(AT_CLKTCK);
if(Hertz!=NOTE_NOT_FOUND) return;
fprintf(stderr, "2.4 kernel w/o ELF notes? -- report this\n");
fprintf(stderr, "2.4+ kernel w/o ELF notes? -- report this\n");
}
old_Hertz_hack();
}

View File

@ -1,15 +1,15 @@
Begin4
Title: procps
Version: 3.2.2
Entered-date: 2004-7-15
Version: 3.2.4
Entered-date: 2004-9-23
Description: Linux system utilities
Keywords: procps /proc libproc sysctl pmap ps uptime tload slabtop
free w top vmstat watch skill snice kill pgrep pkill
Author: Albert Cahalan, Michael K. Johnson, Jim Warner, etc.
Maintained-by: various <procps-feedback@lists.sf.net>
Primary-site: http://procps.sf.net/
261kB procps-3.2.2.tar.gz
261kB procps-3.2.4.tar.gz
Alternate-site: http://www.debian.org/Packages/unstable/base/procps.html
261kB procps-3.2.2.tar.gz
261kB procps-3.2.4.tar.gz
Copying-policy: mixed
End

View File

@ -3,7 +3,7 @@ Summary: System and process monitoring utilities
Name: procps
%define major_version 3
%define minor_version 2
%define revision 3
%define revision 4
%define version %{major_version}.%{minor_version}.%{revision}
Version: %{version}
Release: 1

View File

@ -54,6 +54,7 @@
#define HPU 8 /* HP-UX */
#define SGI 9 /* Irix */
#define SOE 10 /* IBM's S/390 OpenEdition */
#define TST 11 /* test code */
/*
* Try not to overflow the output buffer:

View File

@ -610,7 +610,7 @@ static int pr_wchan(char *restrict const outbuf, const proc_t *restrict const pp
* only one thread waiting in the kernel, and '*' when there is
* more than one thread waiting in the kernel.
*/
if(!(pp->wchan & 0xffffff)) return snprintf(outbuf, COLWID, "%s", "-");
if(!(pp->wchan & 0xffffff)) return snprintf(outbuf, COLWID, "-");
if(wchan_is_number) return snprintf(outbuf, COLWID, "%x", (unsigned)(pp->wchan) & 0xffffffu);
return snprintf(outbuf, COLWID, "%s", lookup_wchan(pp->wchan, pp->XXXID));
}
@ -804,7 +804,12 @@ static int pr_majflt(char *restrict const outbuf, const proc_t *restrict const p
}
static int pr_lim(char *restrict const outbuf, const proc_t *restrict const pp){
if(pp->rss_rlim == RLIM_INFINITY) return snprintf(outbuf, COLWID, "%s", "xx");
if(pp->rss_rlim == RLIM_INFINITY){
outbuf[0] = 'x';
outbuf[1] = 'x';
outbuf[2] = '\0';
return 2;
}
return snprintf(outbuf, COLWID, "%5ld", pp->rss_rlim >> 10);
}
@ -820,7 +825,7 @@ static int pr_wname(char *restrict const outbuf, const proc_t *restrict const pp
* only one thread waiting in the kernel, and '*' when there is
* more than one thread waiting in the kernel.
*/
if(!(pp->wchan & 0xffffff)) return snprintf(outbuf, COLWID, "%s", "-");
if(!(pp->wchan & 0xffffff)) return snprintf(outbuf, COLWID, "-");
return snprintf(outbuf, COLWID, "%s", lookup_wchan(pp->wchan, pp->XXXID));
}
@ -1059,6 +1064,44 @@ fail:
}
////////////////////////////// Test code /////////////////////////////////
// like "args"
static int pr_t_unlimited(char *restrict const outbuf, const proc_t *restrict const pp){
static const char *const vals[] = {"[123456789-12345] <defunct>","ps","123456789-123456"};
(void)pp;
return snprintf(outbuf, COLWID, "%s", vals[lines_to_next_header%3u]);
}
static int pr_t_unlimited2(char *restrict const outbuf, const proc_t *restrict const pp){
static const char *const vals[] = {"unlimited", "[123456789-12345] <defunct>","ps","123456789-123456"};
(void)pp;
return snprintf(outbuf, COLWID, "%s", vals[lines_to_next_header%4u]);
}
// like "etime"
static int pr_t_right(char *restrict const outbuf, const proc_t *restrict const pp){
static const char *const vals[] = {"999-23:59:59","99-23:59:59","9-23:59:59","59:59"};
(void)pp;
return snprintf(outbuf, COLWID, "%s", vals[lines_to_next_header%4u]);
}
static int pr_t_right2(char *restrict const outbuf, const proc_t *restrict const pp){
static const char *const vals[] = {"999-23:59:59","99-23:59:59","9-23:59:59"};
(void)pp;
return snprintf(outbuf, COLWID, "%s", vals[lines_to_next_header%3u]);
}
// like "tty"
static int pr_t_left(char *restrict const outbuf, const proc_t *restrict const pp){
static const char *const vals[] = {"tty7","pts/9999","iseries/vtty42","ttySMX0","3270/tty4"};
(void)pp;
return snprintf(outbuf, COLWID, "%s", vals[lines_to_next_header%5u]);
}
static int pr_t_left2(char *restrict const outbuf, const proc_t *restrict const pp){
static const char *const vals[] = {"tty7","pts/9999","ttySMX0","3270/tty4"};
(void)pp;
return snprintf(outbuf, COLWID, "%s", vals[lines_to_next_header%4u]);
}
/***************************************************************************/
/*************************** other stuff ***********************************/
@ -1123,13 +1166,19 @@ static const format_struct format_array[] = {
/* code header print() sort() width need vendor flags */
{"%cpu", "%CPU", pr_pcpu, sr_pcpu, 4, 0, BSD, ET|RIGHT}, /*pcpu*/
{"%mem", "%MEM", pr_pmem, sr_nop, 4, 0, BSD, PO|RIGHT}, /*pmem*/
{"_left", "LLLLLLLL", pr_t_left, sr_nop, 8, 0, TST, ET|LEFT},
{"_left2", "L2L2L2L2", pr_t_left2, sr_nop, 8, 0, TST, ET|LEFT},
{"_right", "RRRRRRRRRRR", pr_t_right, sr_nop, 11, 0, TST, ET|RIGHT},
{"_right2", "R2R2R2R2R2R", pr_t_right2, sr_nop, 11, 0, TST, ET|RIGHT},
{"_unlimited","U", pr_t_unlimited, sr_nop, 16, 0, TST, ET|UNLIMITED},
{"_unlimited2","U2", pr_t_unlimited2, sr_nop, 16, 0, TST, ET|UNLIMITED},
{"acflag", "ACFLG", pr_nop, sr_nop, 5, 0, XXX, AN|RIGHT}, /*acflg*/
{"acflg", "ACFLG", pr_nop, sr_nop, 5, 0, BSD, AN|RIGHT}, /*acflag*/
{"addr", "ADDR", pr_nop, sr_nop, 4, 0, XXX, AN|RIGHT},
{"addr_1", "ADDR", pr_nop, sr_nop, 1, 0, LNX, AN|LEFT},
{"alarm", "ALARM", pr_alarm, sr_alarm, 5, 0, LNX, AN|RIGHT},
{"argc", "ARGC", pr_nop, sr_nop, 4, 0, LNX, PO|RIGHT},
{"args", "COMMAND", pr_args, sr_cmd, 16, ARG, U98, PO|UNLIMITED}, /*command*/
{"args", "COMMAND", pr_args, sr_cmd, 27, ARG, U98, PO|UNLIMITED}, /*command*/
{"atime", "TIME", pr_time, sr_nop, 8, 0, SOE, ET|RIGHT}, /*cputime*/ /* was 6 wide */
{"blocked", "BLOCKED", pr_sigmask, sr_nop, 9, 0, BSD, TO|SIGNAL}, /*sigmask*/
{"bnd", "BND", pr_nop, sr_nop, 1, 0, AIX, TO|RIGHT},
@ -1140,11 +1189,11 @@ static const format_struct format_array[] = {
{"class", "CLS", pr_class, sr_sched, 3, 0, XXX, TO|LEFT},
{"cls", "CLS", pr_class, sr_sched, 3, 0, HPU, TO|RIGHT}, /*says HPUX or RT*/
{"cmaj_flt", "-", pr_nop, sr_cmaj_flt, 1, 0, LNX, AN|RIGHT},
{"cmd", "CMD", pr_args, sr_cmd, 16, ARG, DEC, PO|UNLIMITED}, /*ucomm*/
{"cmd", "CMD", pr_args, sr_cmd, 27, ARG, DEC, PO|UNLIMITED}, /*ucomm*/
{"cmin_flt", "-", pr_nop, sr_cmin_flt, 1, 0, LNX, AN|RIGHT},
{"cnswap", "-", pr_nop, sr_nop, 1, 0, LNX, AN|RIGHT},
{"comm", "COMMAND", pr_comm, sr_cmd, 16, COM, U98, PO|UNLIMITED}, /*ucomm*/
{"command", "COMMAND", pr_args, sr_cmd, 16, ARG, XXX, PO|UNLIMITED}, /*args*/
{"comm", "COMMAND", pr_comm, sr_cmd, 15, COM, U98, PO|UNLIMITED}, /*ucomm*/
{"command", "COMMAND", pr_args, sr_cmd, 27, ARG, XXX, PO|UNLIMITED}, /*args*/
{"context", "CONTEXT", pr_context, sr_nop, 31, 0, LNX, ET|LEFT},
{"cp", "CP", pr_cp, sr_pcpu, 3, 0, DEC, ET|RIGHT}, /*cpu*/
{"cpu", "CPU", pr_nop, sr_nop, 3, 0, BSD, AN|RIGHT}, /* FIXME ... HP-UX wants this as the CPU number for SMP? */
@ -1321,8 +1370,8 @@ static const format_struct format_array[] = {
{"tty4", "TTY", pr_tty4, sr_tty, 4, 0, LNX, PO|LEFT},
{"tty8", "TTY", pr_tty8, sr_tty, 8, 0, LNX, PO|LEFT},
{"u_procp", "UPROCP", pr_nop, sr_nop, 6, 0, DEC, AN|RIGHT},
{"ucmd", "CMD", pr_comm, sr_cmd, 16, COM, DEC, PO|UNLIMITED}, /*ucomm*/
{"ucomm", "COMMAND", pr_comm, sr_cmd, 16, COM, XXX, PO|UNLIMITED}, /*comm*/
{"ucmd", "CMD", pr_comm, sr_cmd, 15, COM, DEC, PO|UNLIMITED}, /*ucomm*/
{"ucomm", "COMMAND", pr_comm, sr_cmd, 15, COM, XXX, PO|UNLIMITED}, /*comm*/
{"uid", "UID", pr_euid, sr_euid, 5, 0, XXX, ET|RIGHT},
{"uid_hack", "UID", pr_euser, sr_euser, 8, USR, XXX, ET|USER},
{"umask", "UMASK", pr_nop, sr_nop, 5, 0, DEC, AN|RIGHT},