On Tue, Feb 27, 2018 at 07:15:03AM +0000, Jason McIntyre wrote:
> On Mon, Feb 26, 2018 at 07:12:20PM -0600, Scott Cheloha wrote:
> 
> [...]
> 
> > [...]
> > 
> > I don't have access to 1003.1-1988 [1] (the most recent standard
> > cited in times.3).  Has the description changed much?
> > 
> 
> it could be that the reference is out of date. but i don;t know
> personally which revision we expect this to conform to.
> 
> you can access (and download) various versions of posix spec online.

I'll look further.

> > [...]
> > @@ -105,27 +99,33 @@ and
> >  elements of the parent when one of the
> >  .Xr wait 2
> >  functions returns the process ID of the terminated child to the parent.
> > -If an error occurs,
> > +.Sh RETURN VALUES
> > +Upon successful completion,
> >  .Fn times
> > -returns the value
> > +returns the value of real time,
> > +in
> > +.Dv CLK_TCK Ns s
> > +of a second,
> > +elapsed since an arbitrary point in the past.
> > +Otherwise a value of 
> 
> you have trailing whitespace at eol above. run man changes through
> mandoc -Tlint...

Didn't know about -Tlint, sure thing in the future.

> >  .Li "(clock_t)-1" ,
> 
> you don;t want the comma
> 
> otherwise the changes read fine.

Cool.

One last thing: in ERRORS, the phrasing varies when we do a cross
reference.  It's usually something like

[...] may fail and set errno for any of the errors specified for [...]

but then you have a mix of "library routines," "routines," and nothing
qualifying the cross reference(s).  The cross references here are system
calls, so can I just omit "library routines," or "routines," entirely?

^ This and the fixes attached.

--
Scott Cheloha

Index: lib/libc/gen/times.c
===================================================================
RCS file: /cvs/src/lib/libc/gen/times.c,v
retrieving revision 1.7
diff -u -p -r1.7 times.c
--- lib/libc/gen/times.c        2 Nov 2015 17:02:37 -0000       1.7
+++ lib/libc/gen/times.c        28 Feb 2018 15:53:00 -0000
@@ -28,9 +28,9 @@
  * SUCH DAMAGE.
  */
 
-#include <sys/time.h>
 #include <sys/times.h>
 #include <sys/resource.h>
+#include <time.h>
 
 /*
  * Convert usec to clock ticks; could do (usec * CLK_TCK) / 1000000,
@@ -42,7 +42,7 @@ clock_t
 times(struct tms *tp)
 {
        struct rusage ru;
-       struct timeval t;
+       struct timespec ts;
 
        if (getrusage(RUSAGE_SELF, &ru) < 0)
                return ((clock_t)-1);
@@ -52,7 +52,7 @@ times(struct tms *tp)
                return ((clock_t)-1);
        tp->tms_cutime = CONVTCK(ru.ru_utime);
        tp->tms_cstime = CONVTCK(ru.ru_stime);
-       if (gettimeofday(&t, NULL))
+       if (clock_gettime(CLOCK_MONOTONIC, &ts) == -1)
                return ((clock_t)-1);
-       return ((clock_t)(CONVTCK(t)));
+       return (ts.tv_sec * CLK_TCK + ts.tv_nsec / (1000000000 / CLK_TCK));
 }
Index: lib/libc/gen/times.3
===================================================================
RCS file: /cvs/src/lib/libc/gen/times.3,v
retrieving revision 1.14
diff -u -p -r1.14 times.3
--- lib/libc/gen/times.3        17 Jul 2013 05:42:11 -0000      1.14
+++ lib/libc/gen/times.3        28 Feb 2018 15:53:00 -0000
@@ -40,20 +40,14 @@
 .Sh DESCRIPTION
 .Bf -symbolic
 This interface is obsoleted by
-.Xr getrusage 2
+.Xr clock_gettime 2
 and
-.Xr gettimeofday 2 .
+.Xr getrusage 2 .
 .Ef
 .Pp
 The
 .Fn times
-function returns the value of time in
-.Dv CLK_TCK Ns s
-of a second since
-0 hours, 0 minutes, 0 seconds, January 1, 1970, Coordinated Universal
-Time (UTC).
-.Pp
-It also fills in the structure pointed to by
+function fills in the structure pointed to by
 .Fa tp
 with time-accounting information.
 .Pp
@@ -105,27 +99,32 @@ and
 elements of the parent when one of the
 .Xr wait 2
 functions returns the process ID of the terminated child to the parent.
-If an error occurs,
+.Sh RETURN VALUES
+Upon successful completion,
 .Fn times
-returns the value
-.Li "(clock_t)-1" ,
-and sets
+returns the value of real time,
+in
+.Dv CLK_TCK Ns s
+of a second,
+elapsed since an arbitrary point in the past.
+Otherwise a value of
+.Li "(clock_t)-1"
+is returned and the global variable
 .Va errno
-to indicate the error.
+is set to indicate the error.
 .Sh ERRORS
 The
 .Fn times
-function may fail and set the global variable
+function may fail and set
 .Va errno
-for any of the errors specified for the library
-routines
-.Xr getrusage 2
+for any of the errors specified for
+.Xr clock_gettime 2
 and
-.Xr gettimeofday 2 .
+.Xr getrusage 2 .
 .Sh SEE ALSO
 .Xr time 1 ,
+.Xr clock_gettime 2 ,
 .Xr getrusage 2 ,
-.Xr gettimeofday 2 ,
 .Xr wait 2
 .Sh STANDARDS
 The

Reply via email to