static int first=0;
if (first==0) {
- proc_flags=PROC_FILLMEM|PROC_FILLCMD|PROC_FILLUSR|PROC_FILLSTATUS|PROC_FILLSTAT;
+ proc_flags=PROC_FILLMEM|PROC_FILLCOM|PROC_FILLUSR|PROC_FILLSTATUS|PROC_FILLSTAT;
if (monpids_index)
proc_flags |= PROC_PID;
p_table=readproctab2(proc_flags, p_table, monpids);
int flags = PROC_FILLANY;
if (opt_pattern || opt_full)
- flags |= PROC_FILLCMD;
+ flags |= PROC_FILLCOM;
if (opt_uid)
flags |= PROC_FILLSTATUS;
if (opt_euid && !opt_negate) {
}
}
- if (Do(FILLCMD)) /* read+parse /proc/#/cmdline */
+ if (Do(FILLCOM) || Do(FILLARG)) /* read+parse /proc/#/cmdline */
p->cmdline = file2strvec(path, "cmdline");
else
p->cmdline = NULL;
- if (Do(FILLENV)) /* read+parse /proc/#/environ */
+ if (Do(FILLENV)) /* read+parse /proc/#/environ */
p->environ = file2strvec(path, "environ");
else
p->environ = NULL;
- if (p->state == 'Z') /* fixup cmd for zombies */
+ if (p->state == 'Z') /* fixup cmd for zombies */
strncat(p->cmd," <defunct>", sizeof p->cmd);
return p;
/* }*/
}
- if (Do(FILLCMD)) /* read+parse /proc/#/cmdline */
+ if (Do(FILLCOM) || Do(FILLARG)) /* read+parse /proc/#/cmdline */
p->cmdline = file2strvec(path, "cmdline");
else
p->cmdline = NULL;
else
p->environ = NULL;
- if (p->state == 'Z') /* fixup cmd for zombies */
+ if (p->state == 'Z') /* fixup cmd for zombies */
strncat(p->cmd," <defunct>", sizeof p->cmd);
return p;
* argument is the length of the list (currently only used for lists of user
* id's since unsigned short[] supports no convenient termination sentinel.)
*/
+#define PROC_FILLMEM 0x001 /* read statm */
+#define PROC_FILLENV 0x002 /* alloc and fill in `environ' */
+#define PROC_FILLUSR 0x004 /* resolve user id number -> user name */
+#define PROC_FILLGRP 0x008 /* resolve group id number -> group name */
+#define PROC_FILLSTATUS 0x010 /* read status -- currently unconditional */
+#define PROC_FILLSTAT 0x020 /* read stat -- currently unconditional */
+#define PROC_FILLWCHAN 0x040 /* look up WCHAN name */
+#define PROC_FILLCOM 0x080 /* alloc and fill in `cmdline' */
+#define PROC_FILLARG 0x100 /* alloc and fill in `cmdline' */
+
+#define PROC_FILLBUG ~0 /* No idea what we need */
#define PROC_FILLANY 0x00 /* either stat or status will do */
-#define PROC_FILLMEM 0x01 /* read statm into the appropriate proc_t entries */
-#define PROC_FILLCMD 0x02 /* alloc and fill in `cmdline' part of proc_t */
-#define PROC_FILLENV 0x04 /* alloc and fill in `environ' part of proc_t */
-#define PROC_FILLUSR 0x08 /* resolve user id number -> user name */
-#define PROC_FILLGRP 0x10 /* resolve group id number -> group name */
-#define PROC_FILLSTATUS 0x20
-#define PROC_FILLSTAT 0x40
-#define PROC_FILLWCHAN 0x80
-#define PROC_FILLBUG 0xff /* No idea what we need */
-
/* Obsolete, consider only processes with one of the passed: */
-#define PROC_PID 0x0100 /* process id numbers ( 0 terminated) */
-#define PROC_TTY 0x0200 /* ctty device nos. ( 0 terminated) */
-#define PROC_UID 0x0400 /* user id numbers ( length needed ) */
+#define PROC_PID 0x1000 /* process id numbers ( 0 terminated) */
+#define PROC_TTY 0x2000 /* ctty device nos. ( 0 terminated) */
+#define PROC_UID 0x4000 /* user id numbers ( length needed ) */
#endif
{
#define PTRsz sizeof(proc_t *) /* eyeball candy */
#define ENTsz sizeof(proc_t)
- static int flags = PROC_FILLMEM | PROC_FILLCMD | PROC_FILLUSR
+ static int flags = PROC_FILLMEM | PROC_FILLCOM | PROC_FILLUSR
| PROC_FILLGRP | PROC_FILLSTATUS | PROC_FILLSTAT;
static unsigned savmax = 0; /* first time, Bypass: (i) */
proc_t *ptsk = (proc_t *)-1; /* first time, Force: (ii) */
.SH SYNOPSIS
.ft B
.B vmstat
+.RB [ "\-a" ]
.RB [ "\-n" ]
.RI [ delay " [ " count ]]
.br
-.BR vmstat [ "\-V" ]
+.B vmstat
+.RB [ "\-V" ]
.SH DESCRIPTION
\fBvmstat\fP reports information about processes, memory, paging,
block IO, traps, and cpu activity.
The process and memory reports are instantaneous in either case.
.SS Options
-The \fB-n\fP switch causes the header to be displayed only once rather than periodically.
+The \fB-a\fP switch displays active/inactive memory, given a 2.5.41 kernel or better.
+.PP
+The \fB-n\fP switch causes the header to be displayed only once rather than periodically.
.PP
.I delay
is the delay between updates in seconds. If no delay is specified,
if (maxcmd < 3)
fprintf(stderr, "warning: screen width %d suboptimal.\n", win.ws_col);
- procs = readproctab(PROC_FILLCMD | PROC_FILLUSR);
+ procs = readproctab(PROC_FILLCOM | PROC_FILLUSR);
if (header) { /* print uptime and headers */
print_uptime();