summaryrefslogtreecommitdiffstats
path: root/bin
diff options
context:
space:
mode:
authorjmallett <jmallett@FreeBSD.org>2002-06-06 21:18:37 +0000
committerjmallett <jmallett@FreeBSD.org>2002-06-06 21:18:37 +0000
commitbecd81c4a9315cc0cfd6078a89434a5ed7091e28 (patch)
tree018038cc3130503a09bafc00e2621fa02cc01d10 /bin
parentb00060629b3ce16fbaae1856247191506fb052e0 (diff)
downloadFreeBSD-src-becd81c4a9315cc0cfd6078a89434a5ed7091e28.zip
FreeBSD-src-becd81c4a9315cc0cfd6078a89434a5ed7091e28.tar.gz
Implement a SUSv3-ignorant but "time"-similar format for "etime", elapsed
run time (NOT cpu time). cputime() and elapsed() both need to honour SUSv3 now.
Diffstat (limited to 'bin')
-rw-r--r--bin/ps/extern.h1
-rw-r--r--bin/ps/keyword.c1
-rw-r--r--bin/ps/print.c17
-rw-r--r--bin/ps/ps.12
4 files changed, 21 insertions, 0 deletions
diff --git a/bin/ps/extern.h b/bin/ps/extern.h
index beb5d62..927343c 100644
--- a/bin/ps/extern.h
+++ b/bin/ps/extern.h
@@ -49,6 +49,7 @@ void arguments(KINFO *, VARENT *);
void command(KINFO *, VARENT *);
void cputime(KINFO *, VARENT *);
int donlist(void);
+void elapsed(KINFO *, VARENT *);
const char *fmt_argv(char **, char *, size_t);
double getpcpu(const KINFO *);
void kvar(KINFO *, VARENT *);
diff --git a/bin/ps/keyword.c b/bin/ps/keyword.c
index 79ed4dc..17cdc78 100644
--- a/bin/ps/keyword.c
+++ b/bin/ps/keyword.c
@@ -96,6 +96,7 @@ static VAR var[] = {
{"cpu", "CPU", NULL, 0, kvar, NULL, 3, KOFF(ki_estcpu), UINT, "d",
0},
{"cputime", "", "time", 0, NULL, NULL, 0, 0, CHAR, NULL, 0},
+ {"etime", "ELAPSED", NULL, USER, elapsed, NULL, 9, 0, CHAR, NULL, 0},
{"f", "F", NULL, 0, kvar, NULL, 7, KOFF(ki_flag), INT, "x", 0},
{"flags", "", "f", 0, NULL, NULL, 0, 0, CHAR, NULL, 0},
{"ignored", "", "sigignore", 0, NULL, NULL, 0, 0, CHAR, NULL, 0},
diff --git a/bin/ps/print.c b/bin/ps/print.c
index e949206..4f43aa4 100644
--- a/bin/ps/print.c
+++ b/bin/ps/print.c
@@ -535,6 +535,23 @@ cputime(KINFO *k, VARENT *ve)
(void)printf("%*s", v->width, obuff);
}
+void
+elapsed(KINFO *k, VARENT *ve)
+{
+ VAR *v;
+ time_t secs;
+ char obuff[128];
+ static time_t now;
+
+ v = ve->var;
+
+ if (!now)
+ time(&now);
+ secs = now - k->ki_p->ki_start.tv_sec;
+ (void)snprintf(obuff, sizeof(obuff), "%3ld:%02ld", secs/60, secs%60);
+ (void)printf("%*s", v->width, obuff);
+}
+
double
getpcpu(const KINFO *k)
{
diff --git a/bin/ps/ps.1 b/bin/ps/ps.1
index ba767f7..438f574 100644
--- a/bin/ps/ps.1
+++ b/bin/ps/ps.1
@@ -378,6 +378,8 @@ command
command and arguments
.It cpu
short-term cpu usage factor (for scheduling)
+.It etime
+elapsed running time
.It flags
the process flags, in hexadecimal (alias f)
.It inblk
OpenPOWER on IntegriCloud