Re: time.3: miscellaneous cleanup and rewrites

2021-08-05 Thread Ingo Schwarze
Hi Scott,

since i see this wasn't committed yet, it is OK schwarze@, too.

Consider leaving the .Nd alone since both jmc@ and millert@ recommended
that, and use "That version counted the time" in the HISTORY section
as recommended by jmc@.

I think you should indeed remove the sentence about gettimeofday(2)
from the DESCRIPTION because millert@ has a point that it's an
implementation detail, and even if considered interesting, it's
already mentioned in the HISTORY section.

Yours,
  Ingo


Scott Cheloha wrote on Fri, Jul 30, 2021 at 01:01:21PM -0500:

> Index: time.3
> ===
> RCS file: /cvs/src/lib/libc/gen/time.3,v
> retrieving revision 1.16
> diff -u -p -r1.16 time.3
> --- time.329 Jan 2015 01:46:30 -  1.16
> +++ time.330 Jul 2021 17:59:37 -
> @@ -36,52 +36,54 @@
>  .Os
>  .Sh NAME
>  .Nm time
> -.Nd get time of day
> +.Nd get the time of day
>  .Sh SYNOPSIS
>  .In time.h
>  .Ft time_t
> -.Fn time "time_t *tloc"
> +.Fn time "time_t *now"
>  .Sh DESCRIPTION
>  The
>  .Fn time
> -function returns the value of time in seconds since 0 hours, 0 minutes,
> -0 seconds, January 1, 1970, Coordinated Universal Time (UTC).
> +function returns the the number of seconds elapsed since
> +Jan 1 1970 00:00:00 UTC.
> +This value is also written to
> +.Fa now
> +unless
> +.Fa now
> +is
> +.Dv NULL .
>  .Pp
> -A copy of the time value may be saved to the area indicated by the
> -pointer
> -.Fa tloc .
> -If
> -.Fa tloc
> -is a null pointer, no value is stored.
> +This version of
> +.Fn time
> +is implemented with
> +.Xr gettimeofday 2 .
>  .Sh RETURN VALUES
> -Upon successful completion,
> +The
>  .Fn time
> -returns the value of time.
> -Otherwise a value of
> -.Po Fa time_t Pc Ns -1
> -is returned and the global variable
> -.Va errno
> -is set to indicate the error.
> -.Sh ERRORS
> -The following error codes may be set in
> -.Va errno :
> -.Bl -tag -width Er
> -.It Bq Er EFAULT
> -An argument address referenced invalid memory.
> -.El
> +function is always successful,
> +and no return value is reserved to indicate an error.
>  .Sh SEE ALSO
>  .Xr clock_gettime 2 ,
>  .Xr gettimeofday 2 ,
>  .Xr ctime 3
> +.Sh STANDARDS
> +The
> +.Fn time
> +function conforms to
> +.St -p1003.1-2008 .
>  .Sh HISTORY
>  A
>  .Fn time
>  system call first appeared in
> -.At v1
> -and used to return time in sixtieths of a second in 32 bits,
> -which was to guarantee a crisis every 2.26 years.
> -Since
> -.At v6 ,
> -.Fn time
> -scale was changed to seconds, extending the pre-crisis stagnation
> -period up to a total of 68 years.
> +.At v1 .
> +This version counted time in sixtieths of a second with a 32-bit return 
> value,
> +ensuring an integer overflow crisis every 2.26 years.
> +In
> +.At v6
> +the granularity of the return value was reduced to whole seconds,
> +delaying the aforementioned crisis until 2038.
> +In
> +.Bx 4.1c
> +the function was moved out of the kernel into the C standard library and
> +reimplemented with
> +.Xr gettimeofday 2 .



Re: time.3: miscellaneous cleanup and rewrites

2021-07-30 Thread Todd C . Miller
On Fri, 30 Jul 2021 13:01:21 -0500, Scott Cheloha wrote:

> NAME
>
> - get "the" time of day.

I don't like having "the" in there.  I'd suggest leaving this as
it is or simply shortening to either "get time" or "get the time".

> SYNOPSIS
>
> - Not a fan of the "tloc" variable name.  Use "now" as we do in other
>   pages to reinforce the meaning of its contents.

Sure.

> DESCRIPTION
>
> - Clean this up.  In particular, format the Epoch date like we do in
>   other pages.  We don't need two paragraphs, either.
>
> - Mention that we call gettimeofday(2).  Not strictly necessary, but
>   useful for people tracing system calls to know what the library
>   is doing.

This seems like the kind of implementation detail that shouldn't
be in the man page.  For instance, there's no reason why time(3)
couldn't be implemented via clock_gettime(2).  If someone is really
curious the source is available.

> Part of me wants to tell the reader not to use time() to measure
> elapsed time.  Then again, time() is low-res so it isn't misused
> nearly as often as gettimeofday(2).

Yeah, I wouldn't worry about it.

> I'm also leaning toward omitting the full description of the UTC clock
> and its behavior.  Not completely sure.

I think it is fine to have that info present.

> RETURN VALUES
>
> - There are no relevant error cases, remove them.
>
>   The underlying system call, gettimeofday(2), will not fail in this
>   context unless the stack is corrupted, which we cannot account for
>   anyway.
>
> - Just say that time() always succeeds.

Right, looks good.

> I cribbed this bit from another page to put something in the Return
> Values section, but the return value is already described in the
> Description.
>
> Maybe we don't need this section at all anymore?

I think it is useful to have the section.  I know I search by the
section to find this information.

> STANDARDS
>
> - This section is missing.  Our time() conforms to the latest
>   standard.

Great.

> HISTORY
>
> - Rework this a bit.
>
> - Note the fate of the historical time() system call.

Fine.

 - todd



Re: time.3: miscellaneous cleanup and rewrites

2021-07-30 Thread Jason McIntyre
On Fri, Jul 30, 2021 at 01:01:21PM -0500, Scott Cheloha wrote:
> Next up, time.3.
> 
> As before, changes by section, with "I don't knows" at the end of the
> change list in each section.
> 

hi. comments inline:

> NAME
> 
> - get "the" time of day.
> 
> SYNOPSIS
> 
> - Not a fan of the "tloc" variable name.  Use "now" as we do in other
>   pages to reinforce the meaning of its contents.
> 
> DESCRIPTION
> 
> - Clean this up.  In particular, format the Epoch date like we do in
>   other pages.  We don't need two paragraphs, either.
> 
> - Mention that we call gettimeofday(2).  Not strictly necessary, but
>   useful for people tracing system calls to know what the library
>   is doing.
> 
> Part of me wants to tell the reader not to use time() to measure
> elapsed time.  Then again, time() is low-res so it isn't misused
> nearly as often as gettimeofday(2).
> 
> I'm also leaning toward omitting the full description of the UTC clock
> and its behavior.  Not completely sure.
> 
> RETURN VALUES
> 
> - There are no relevant error cases, remove them.
> 
>   The underlying system call, gettimeofday(2), will not fail in this
>   context unless the stack is corrupted, which we cannot account for
>   anyway.
> 
> - Just say that time() always succeeds.
> 
> I cribbed this bit from another page to put something in the Return
> Values section, but the return value is already described in the
> Description.
> 
> Maybe we don't need this section at all anymore?
> 
> STANDARDS
> 
> - This section is missing.  Our time() conforms to the latest
>   standard.
> 
> HISTORY
> 
> - Rework this a bit.
> 
> - Note the fate of the historical time() system call.
> 
> Index: time.3
> ===
> RCS file: /cvs/src/lib/libc/gen/time.3,v
> retrieving revision 1.16
> diff -u -p -r1.16 time.3
> --- time.329 Jan 2015 01:46:30 -  1.16
> +++ time.330 Jul 2021 17:59:37 -
> @@ -36,52 +36,54 @@
>  .Os
>  .Sh NAME
>  .Nm time
> -.Nd get time of day
> +.Nd get the time of day

i'm honestly unconvinced about this. it makes more sense in normal
english rules, but feels incorrect. for comparison, posix uses

time - get time

i think in this sense "time of day" is a thing, and does not require an
article. i don;t see a good reason to change it.

>  .Sh SYNOPSIS
>  .In time.h
>  .Ft time_t
> -.Fn time "time_t *tloc"
> +.Fn time "time_t *now"
>  .Sh DESCRIPTION
>  The
>  .Fn time
> -function returns the value of time in seconds since 0 hours, 0 minutes,
> -0 seconds, January 1, 1970, Coordinated Universal Time (UTC).
> +function returns the the number of seconds elapsed since
> +Jan 1 1970 00:00:00 UTC.
> +This value is also written to
> +.Fa now
> +unless
> +.Fa now
> +is
> +.Dv NULL .
>  .Pp
> -A copy of the time value may be saved to the area indicated by the
> -pointer
> -.Fa tloc .
> -If
> -.Fa tloc
> -is a null pointer, no value is stored.
> +This version of
> +.Fn time
> +is implemented with
> +.Xr gettimeofday 2 .
>  .Sh RETURN VALUES
> -Upon successful completion,
> +The
>  .Fn time
> -returns the value of time.
> -Otherwise a value of
> -.Po Fa time_t Pc Ns -1
> -is returned and the global variable
> -.Va errno
> -is set to indicate the error.
> -.Sh ERRORS
> -The following error codes may be set in
> -.Va errno :
> -.Bl -tag -width Er
> -.It Bq Er EFAULT
> -An argument address referenced invalid memory.
> -.El
> +function is always successful,
> +and no return value is reserved to indicate an error.
>  .Sh SEE ALSO
>  .Xr clock_gettime 2 ,
>  .Xr gettimeofday 2 ,
>  .Xr ctime 3
> +.Sh STANDARDS
> +The
> +.Fn time
> +function conforms to
> +.St -p1003.1-2008 .
>  .Sh HISTORY
>  A
>  .Fn time
>  system call first appeared in
> -.At v1
> -and used to return time in sixtieths of a second in 32 bits,
> -which was to guarantee a crisis every 2.26 years.
> -Since
> -.At v6 ,
> -.Fn time
> -scale was changed to seconds, extending the pre-crisis stagnation
> -period up to a total of 68 years.
> +.At v1 .
> +This version counted time in sixtieths of a second with a 32-bit return 
> value,

i think the text should be *that* version

otherwise reads fine.
jmc

> +ensuring an integer overflow crisis every 2.26 years.
> +In
> +.At v6
> +the granularity of the return value was reduced to whole seconds,
> +delaying the aforementioned crisis until 2038.
> +In
> +.Bx 4.1c
> +the function was moved out of the kernel into the C standard library and
> +reimplemented with
> +.Xr gettimeofday 2 .
> 



time.3: miscellaneous cleanup and rewrites

2021-07-30 Thread Scott Cheloha
Next up, time.3.

As before, changes by section, with "I don't knows" at the end of the
change list in each section.

NAME

- get "the" time of day.

SYNOPSIS

- Not a fan of the "tloc" variable name.  Use "now" as we do in other
  pages to reinforce the meaning of its contents.

DESCRIPTION

- Clean this up.  In particular, format the Epoch date like we do in
  other pages.  We don't need two paragraphs, either.

- Mention that we call gettimeofday(2).  Not strictly necessary, but
  useful for people tracing system calls to know what the library
  is doing.

Part of me wants to tell the reader not to use time() to measure
elapsed time.  Then again, time() is low-res so it isn't misused
nearly as often as gettimeofday(2).

I'm also leaning toward omitting the full description of the UTC clock
and its behavior.  Not completely sure.

RETURN VALUES

- There are no relevant error cases, remove them.

  The underlying system call, gettimeofday(2), will not fail in this
  context unless the stack is corrupted, which we cannot account for
  anyway.

- Just say that time() always succeeds.

I cribbed this bit from another page to put something in the Return
Values section, but the return value is already described in the
Description.

Maybe we don't need this section at all anymore?

STANDARDS

- This section is missing.  Our time() conforms to the latest
  standard.

HISTORY

- Rework this a bit.

- Note the fate of the historical time() system call.

Index: time.3
===
RCS file: /cvs/src/lib/libc/gen/time.3,v
retrieving revision 1.16
diff -u -p -r1.16 time.3
--- time.3  29 Jan 2015 01:46:30 -  1.16
+++ time.3  30 Jul 2021 17:59:37 -
@@ -36,52 +36,54 @@
 .Os
 .Sh NAME
 .Nm time
-.Nd get time of day
+.Nd get the time of day
 .Sh SYNOPSIS
 .In time.h
 .Ft time_t
-.Fn time "time_t *tloc"
+.Fn time "time_t *now"
 .Sh DESCRIPTION
 The
 .Fn time
-function returns the value of time in seconds since 0 hours, 0 minutes,
-0 seconds, January 1, 1970, Coordinated Universal Time (UTC).
+function returns the the number of seconds elapsed since
+Jan 1 1970 00:00:00 UTC.
+This value is also written to
+.Fa now
+unless
+.Fa now
+is
+.Dv NULL .
 .Pp
-A copy of the time value may be saved to the area indicated by the
-pointer
-.Fa tloc .
-If
-.Fa tloc
-is a null pointer, no value is stored.
+This version of
+.Fn time
+is implemented with
+.Xr gettimeofday 2 .
 .Sh RETURN VALUES
-Upon successful completion,
+The
 .Fn time
-returns the value of time.
-Otherwise a value of
-.Po Fa time_t Pc Ns -1
-is returned and the global variable
-.Va errno
-is set to indicate the error.
-.Sh ERRORS
-The following error codes may be set in
-.Va errno :
-.Bl -tag -width Er
-.It Bq Er EFAULT
-An argument address referenced invalid memory.
-.El
+function is always successful,
+and no return value is reserved to indicate an error.
 .Sh SEE ALSO
 .Xr clock_gettime 2 ,
 .Xr gettimeofday 2 ,
 .Xr ctime 3
+.Sh STANDARDS
+The
+.Fn time
+function conforms to
+.St -p1003.1-2008 .
 .Sh HISTORY
 A
 .Fn time
 system call first appeared in
-.At v1
-and used to return time in sixtieths of a second in 32 bits,
-which was to guarantee a crisis every 2.26 years.
-Since
-.At v6 ,
-.Fn time
-scale was changed to seconds, extending the pre-crisis stagnation
-period up to a total of 68 years.
+.At v1 .
+This version counted time in sixtieths of a second with a 32-bit return value,
+ensuring an integer overflow crisis every 2.26 years.
+In
+.At v6
+the granularity of the return value was reduced to whole seconds,
+delaying the aforementioned crisis until 2038.
+In
+.Bx 4.1c
+the function was moved out of the kernel into the C standard library and
+reimplemented with
+.Xr gettimeofday 2 .