Index: bin/ps/extern.h
===================================================================
RCS file: /cvsroot/src/bin/ps/extern.h,v
retrieving revision 1.33
diff -u -r1.33 extern.h
--- bin/ps/extern.h     31 May 2010 03:18:33 -0000      1.33
+++ bin/ps/extern.h     15 Jan 2014 07:57:11 -0000
@@ -59,6 +59,7 @@
void    gname(void *, VARENT *, int);
void    groups(void *, VARENT *, int);
void    groupnames(void *, VARENT *, int);
+void    lcputime(void *, VARENT *, int);
void    logname(void *, VARENT *, int);
void    longtname(void *, VARENT *, int);
void    lname(void *, VARENT *, int);
Index: bin/ps/keyword.c
===================================================================
RCS file: /cvsroot/src/bin/ps/keyword.c,v
retrieving revision 1.53
diff -u -r1.53 keyword.c
--- bin/ps/keyword.c    21 Oct 2009 21:11:57 -0000      1.53
+++ bin/ps/keyword.c    15 Jan 2014 07:57:12 -0000
@@ -149,6 +149,7 @@
       VAR3("logname", "login", ALIAS),
       VAR6("lstart", "STARTED", LJUST, lstarted, POFF(p_ustart_sec), UINT32),
       VAR4("lstate", "STAT", LJUST|LWP, lstate),
+       VAR6("ltime", "LTIME", LWP, lcputime, 0, CPUTIME),
       PUVAR("majflt", "MAJFLT", 0, p_uru_majflt, UINT64, PRIu64),
       PUVAR("minflt", "MINFLT", 0, p_uru_minflt, UINT64, PRIu64),
       PUVAR("msgrcv", "MSGRCV", 0, p_uru_msgrcv, UINT64, PRIu64),
Index: bin/ps/print.c
===================================================================
RCS file: /cvsroot/src/bin/ps/print.c,v
retrieving revision 1.120
diff -u -r1.120 print.c
--- bin/ps/print.c      20 Mar 2012 18:42:28 -0000      1.120
+++ bin/ps/print.c      15 Jan 2014 07:57:12 -0000
@@ -1012,29 +1012,11 @@
       intprintorsetwidth(v, l->l_cpuid, mode);
}

-void
-cputime(void *arg, VARENT *ve, int mode)
+static void
+cputime1(int32_t secs, int32_t psecs, VAR *v, int mode)
{
-       struct kinfo_proc2 *k;
-       VAR *v;
-       int32_t secs;
-       int32_t psecs;  /* "parts" of a second. first micro, then centi */
       int fmtlen;

-       k = arg;
-       v = ve->var;
-
-       /*
-        * This counts time spent handling interrupts.  We could
-        * fix this, but it is not 100% trivial (and interrupt
-        * time fractions only work on the sparc anyway).       XXX
-        */
-       secs = k->p_rtime_sec;
-       psecs = k->p_rtime_usec;
-       if (sumrusage) {
-               secs += k->p_uctime_sec;
-               psecs += k->p_uctime_usec;
-       }
       /*
        * round and scale to 100's
        */
@@ -1066,6 +1048,49 @@
       }
}

+void
+cputime(void *arg, VARENT *ve, int mode)
+{
+       struct kinfo_proc2 *k;
+       VAR *v;
+       int32_t secs;
+       int32_t psecs;  /* "parts" of a second. first micro, then centi */
+
+       k = arg;
+       v = ve->var;
+
+       /*
+        * This counts time spent handling interrupts.  We could
+        * fix this, but it is not 100% trivial (and interrupt
+        * time fractions only work on the sparc anyway).       XXX
+        */
+       secs = k->p_rtime_sec;
+       psecs = k->p_rtime_usec;
+       if (sumrusage) {
+               secs += k->p_uctime_sec;
+               psecs += k->p_uctime_usec;
+       }
+
+       cputime1(secs, psecs, v, mode);
+}
+
+void
+lcputime(void *arg, VARENT *ve, int mode)
+{
+       struct kinfo_lwp *l;
+       VAR *v;
+       int32_t secs;
+       int32_t psecs;  /* "parts" of a second. first micro, then centi */
+
+       l = arg;
+       v = ve->var;
+
+       secs = l->l_rtime_sec;
+       psecs = l->l_rtime_usec;
+
+       cputime1(secs, psecs, v, mode);
+}
+
double
getpcpu(const struct kinfo_proc2 *k)
{
Index: bin/ps/ps.1
===================================================================
RCS file: /cvsroot/src/bin/ps/ps.1,v
retrieving revision 1.101
diff -u -r1.101 ps.1
--- bin/ps/ps.1 3 Jun 2012 21:42:44 -0000       1.101
+++ bin/ps/ps.1 15 Jan 2014 07:57:12 -0000
@@ -540,6 +540,8 @@
time started
.It Ar lstate
symbolic LWP state
+.It Ar ltime
+CPU time of the LWP
.It Ar majflt
total page faults
.It Ar minflt
Index: bin/ps/ps.c
===================================================================
RCS file: /cvsroot/src/bin/ps/ps.c,v
retrieving revision 1.78
diff -u -r1.78 ps.c
--- bin/ps/ps.c 7 May 2012 13:14:31 -0000       1.78
+++ bin/ps/ps.c 15 Jan 2014 07:57:12 -0000
@@ -136,7 +136,7 @@
char jfmt[] = "user pid ppid pgid sess jobc state tt time command";
char lfmt[] = "uid pid ppid cpu pri nice vsz rss wchan state tt time command";
char sfmt[] = "uid pid ppid cpu lid nlwp pri nice vsz rss wchan lstate tt "
-               "time command";
+               "ltime command";
char ufmt[] = "user pid %cpu %mem vsz rss tt state start time command";
char vfmt[] = "pid state time sl re pagein vsz rss lim tsiz %cpu %mem command";