[2/2] clock_nanosleep.2, nanosleep.2: Use 'duration' rather than 'request'
Checks
Commit Message
It seems much more clear.
Suggested-by: Elliott Hughes <enh@google.com>
Cc: Stefan Puiu <stefan.puiu@gmail.com>
Cc: Bruno Haible <bruno@clisp.org>
Signed-off-by: Alejandro Colomar <alx@kernel.org>
---
man2/clock_nanosleep.2 | 20 ++++++++++----------
man2/nanosleep.2 | 12 ++++++------
2 files changed, 16 insertions(+), 16 deletions(-)
Comments
Alejandro Colomar wrote:
> man2/clock_nanosleep.2 | 20 ++++++++++----------
> man2/nanosleep.2 | 12 ++++++------
The change to nanosleep.2 seems mostly fine. Except that the
term "requested relative duration" (line 142) raises questions;
what about changing that to "requested duration"?
The change to clock_nanosleep.2 seems wrong. There are two cases
(quoting the old text):
If flags is 0, then the value specified in request is interpreted
as an interval relative to the current value of the clock
specified by clockid.
If flags is TIMER_ABSTIME, then request is interpreted as an
absolute time as measured by the clock, clockid. If request is
less than or equal to the current value of the clock, then
clock_nanosleep() returns immediately without suspending the calling
thread.
In the first case, the argument is a duration. In the second case, the
argument is an absolute time point; it would be wrong and very confusing
to denote it as "duration".
Bruno
Hi Bruno,
On Sun, Mar 03, 2024 at 01:45:37PM +0100, Bruno Haible wrote:
> Alejandro Colomar wrote:
> > man2/clock_nanosleep.2 | 20 ++++++++++----------
> > man2/nanosleep.2 | 12 ++++++------
>
> The change to nanosleep.2 seems mostly fine. Except that the
> term "requested relative duration" (line 142) raises questions;
> what about changing that to "requested duration"?
Yeah, I had doubts about that one. Probably I should drop 'relative'.
>
> The change to clock_nanosleep.2 seems wrong. There are two cases
> (quoting the old text):
>
> If flags is 0, then the value specified in request is interpreted
> as an interval relative to the current value of the clock
> specified by clockid.
>
> If flags is TIMER_ABSTIME, then request is interpreted as an
> absolute time as measured by the clock, clockid. If request is
> less than or equal to the current value of the clock, then
> clock_nanosleep() returns immediately without suspending the calling
> thread.
>
> In the first case, the argument is a duration. In the second case, the
> argument is an absolute time point; it would be wrong and very confusing
> to denote it as "duration".
Hmm, thanks! I guess we'll have to keep 'request' in clock_nanosleep(3)
unless someone comes up with a better name. Elliott, you may want to
partially revert that change in bionic.
Have a lovely day!
Alex
On Sun, Mar 3, 2024 at 4:55 AM Alejandro Colomar <alx@kernel.org> wrote:
>
> Hi Bruno,
>
> On Sun, Mar 03, 2024 at 01:45:37PM +0100, Bruno Haible wrote:
> > Alejandro Colomar wrote:
> > > man2/clock_nanosleep.2 | 20 ++++++++++----------
> > > man2/nanosleep.2 | 12 ++++++------
> >
> > The change to nanosleep.2 seems mostly fine. Except that the
> > term "requested relative duration" (line 142) raises questions;
> > what about changing that to "requested duration"?
>
> Yeah, I had doubts about that one. Probably I should drop 'relative'.
>
> >
> > The change to clock_nanosleep.2 seems wrong. There are two cases
> > (quoting the old text):
> >
> > If flags is 0, then the value specified in request is interpreted
> > as an interval relative to the current value of the clock
> > specified by clockid.
> >
> > If flags is TIMER_ABSTIME, then request is interpreted as an
> > absolute time as measured by the clock, clockid. If request is
> > less than or equal to the current value of the clock, then
> > clock_nanosleep() returns immediately without suspending the calling
> > thread.
> >
> > In the first case, the argument is a duration. In the second case, the
> > argument is an absolute time point; it would be wrong and very confusing
> > to denote it as "duration".
>
> Hmm, thanks! I guess we'll have to keep 'request' in clock_nanosleep(3)
> unless someone comes up with a better name. Elliott, you may want to
> partially revert that change in bionic.
thanks! https://android-review.googlesource.com/c/platform/bionic/+/2987070
changes to
/**
* [clock_nanosleep(2)](http://man7.org/linux/man-pages/man2/clock_nanosleep.2.html)
* sleeps for the given time (or until the given time if the TIMER_ABSTIME flag
* is used), as measured by the given clock.
*
* Returns 0 on success, and returns -1 and returns an error number on failure.
* If the sleep was interrupted by a signal, the return value will be `EINTR`
* and `remainder` will be the amount of time remaining.
*/
int clock_nanosleep(clockid_t __clock, int __flags, const struct
timespec* _Nonnull __time, struct timespec* _Nullable __remainder);
> Have a lovely day!
> Alex
>
> --
> <https://www.alejandro-colomar.es/>
> Looking for a remote C programming job at the moment.
Hi Elliott,
On Mon, Mar 04, 2024 at 04:18:28PM -0800, enh wrote:
> thanks! https://android-review.googlesource.com/c/platform/bionic/+/2987070
> changes to
>
> /**
> * [clock_nanosleep(2)](http://man7.org/linux/man-pages/man2/clock_nanosleep.2.html)
> * sleeps for the given time (or until the given time if the TIMER_ABSTIME flag
> * is used), as measured by the given clock.
> *
> * Returns 0 on success, and returns -1 and returns an error number on failure.
> * If the sleep was interrupted by a signal, the return value will be `EINTR`
> * and `remainder` will be the amount of time remaining.
> */
> int clock_nanosleep(clockid_t __clock, int __flags, const struct
> timespec* _Nonnull __time, struct timespec* _Nullable __remainder);
Hmmmm, that's the best name, meaningfully, I think. But I've been
trying to avoid it. I don't like using names of standard functions in
identifiers; it might confuse. As an alternative, I thought of 't'.
What do you think?
Have a lovely night!
Alex
On Mon, Mar 4, 2024 at 4:34 PM Alejandro Colomar <alx@kernel.org> wrote:
>
> Hi Elliott,
>
> On Mon, Mar 04, 2024 at 04:18:28PM -0800, enh wrote:
> > thanks! https://android-review.googlesource.com/c/platform/bionic/+/2987070
> > changes to
> >
> > /**
> > * [clock_nanosleep(2)](http://man7.org/linux/man-pages/man2/clock_nanosleep.2.html)
> > * sleeps for the given time (or until the given time if the TIMER_ABSTIME flag
> > * is used), as measured by the given clock.
> > *
> > * Returns 0 on success, and returns -1 and returns an error number on failure.
> > * If the sleep was interrupted by a signal, the return value will be `EINTR`
> > * and `remainder` will be the amount of time remaining.
> > */
> > int clock_nanosleep(clockid_t __clock, int __flags, const struct
> > timespec* _Nonnull __time, struct timespec* _Nullable __remainder);
>
> Hmmmm, that's the best name, meaningfully, I think. But I've been
> trying to avoid it. I don't like using names of standard functions in
> identifiers; it might confuse. As an alternative, I thought of 't'.
> What do you think?
as you can see, i've taken the "the leading `__` means we get to
trample whatever we like" approach :-)
(we build bionic with hidden visibility and an explicit list of
symbols for the linker to export, so we'd have to be trying quite hard
to trip over ourselves.)
> Have a lovely night!
>
> Alex
>
> --
> <https://www.alejandro-colomar.es/>
> Looking for a remote C programming job at the moment.
On Mon, Mar 04, 2024 at 04:56:13PM -0800, enh wrote:
> > > int clock_nanosleep(clockid_t __clock, int __flags, const struct
> > > timespec* _Nonnull __time, struct timespec* _Nullable __remainder);
> >
> > Hmmmm, that's the best name, meaningfully, I think. But I've been
> > trying to avoid it. I don't like using names of standard functions in
> > identifiers; it might confuse. As an alternative, I thought of 't'.
> > What do you think?
>
> as you can see, i've taken the "the leading `__` means we get to
> trample whatever we like" approach :-)
>
> (we build bionic with hidden visibility and an explicit list of
> symbols for the linker to export, so we'd have to be trying quite hard
> to trip over ourselves.)
Yeah, I was worried about the manual page :)
On Mon, Mar 4, 2024 at 5:11 PM Alejandro Colomar <alx@kernel.org> wrote:
>
> On Mon, Mar 04, 2024 at 04:56:13PM -0800, enh wrote:
> > > > int clock_nanosleep(clockid_t __clock, int __flags, const struct
> > > > timespec* _Nonnull __time, struct timespec* _Nullable __remainder);
> > >
> > > Hmmmm, that's the best name, meaningfully, I think. But I've been
> > > trying to avoid it. I don't like using names of standard functions in
> > > identifiers; it might confuse. As an alternative, I thought of 't'.
> > > What do you think?
> >
> > as you can see, i've taken the "the leading `__` means we get to
> > trample whatever we like" approach :-)
> >
> > (we build bionic with hidden visibility and an explicit list of
> > symbols for the linker to export, so we'd have to be trying quite hard
> > to trip over ourselves.)
>
> Yeah, I was worried about the manual page :)
yeah, i think "t + extra text" makes sense there. i just try to be as
brief as possible in the doc comments on the assumption that most
readers will be seeing them in IDE pop-ups, and anyone who wants lots
of text will click through to the man page anyway. and at that point
they're your problem :-)
> --
> <https://www.alejandro-colomar.es/>
> Looking for a remote C programming job at the moment.
@@ -19,7 +19,7 @@ .SH SYNOPSIS
.nf
.P
.BI "int clock_nanosleep(clockid_t " clockid ", int " flags ,
-.BI " const struct timespec *" request ,
+.BI " const struct timespec *" duration ,
.BI " struct timespec *_Nullable " remain );
.fi
.P
@@ -94,7 +94,7 @@ .SH DESCRIPTION
If
.I flags
is 0, then the value specified in
-.I request
+.I duration
is interpreted as an interval relative to the current
value of the clock specified by
.IR clockid .
@@ -104,11 +104,11 @@ .SH DESCRIPTION
is
.BR TIMER_ABSTIME ,
then
-.I request
+.I duration
is interpreted as an absolute time as measured by the clock,
.IR clockid .
If
-.I request
+.I duration
is less than or equal to the current value of the clock,
then
.BR clock_nanosleep ()
@@ -117,7 +117,7 @@ .SH DESCRIPTION
.BR clock_nanosleep ()
suspends the execution of the calling thread
until either at least the time specified by
-.I request
+.I duration
has elapsed,
or a signal is delivered that causes a signal handler to be called or
that terminates the process.
@@ -138,7 +138,7 @@ .SH DESCRIPTION
.BR clock_nanosleep ()
again and complete a (relative) sleep.
.SH RETURN VALUE
-On successfully sleeping for the requested interval,
+On successfully sleeping for the requested duration,
.BR clock_nanosleep ()
returns 0.
If the call is interrupted by a signal handler or encounters an error,
@@ -146,7 +146,7 @@ .SH RETURN VALUE
.SH ERRORS
.TP
.B EFAULT
-.I request
+.I duration
or
.I remain
specified an invalid address.
@@ -179,8 +179,8 @@ .SH HISTORY
Linux 2.6,
glibc 2.1.
.SH NOTES
-If the interval specified in
-.I request
+If the
+.I duration
is not an exact multiple of the granularity underlying clock (see
.BR time (7)),
then the interval will be rounded up to the next multiple.
@@ -216,7 +216,7 @@ .SH NOTES
is
.BR TIMER_ABSTIME .
(An absolute sleep can be restarted using the same
-.I request
+.I duration
argument.)
.P
POSIX.1 specifies that
@@ -22,7 +22,7 @@ .SH SYNOPSIS
.nf
.B #include <time.h>
.P
-.BI "int nanosleep(const struct timespec *" req ,
+.BI "int nanosleep(const struct timespec *" duration ,
.BI " struct timespec *_Nullable " rem );
.fi
.P
@@ -39,7 +39,7 @@ .SH DESCRIPTION
.BR nanosleep ()
suspends the execution of the calling thread
until either at least the time specified in
-.I *req
+.I *duration
has elapsed, or the delivery of a signal
that triggers the invocation of a handler in the calling thread or
that terminates the process.
@@ -80,7 +80,7 @@ .SH DESCRIPTION
and it makes the task of resuming a sleep that has been
interrupted by a signal handler easier.
.SH RETURN VALUE
-On successfully sleeping for the requested interval,
+On successfully sleeping for the requested duration,
.BR nanosleep ()
returns 0.
If the call is interrupted by a signal handler or encounters an error,
@@ -139,7 +139,7 @@ .SH VERSIONS
.BR nanosleep ()
function; ...
Consequently, these time services shall expire when the requested relative
-interval elapses, independently of the new or old value of the clock.
+duration elapses, independently of the new or old value of the clock.
.RE
.SH STANDARDS
POSIX.1-2008.
@@ -158,8 +158,8 @@ .SH HISTORY
This special extension was removed in Linux 2.5.39,
and is thus not available in Linux 2.6.0 and later kernels.
.SH NOTES
-If the interval specified in
-.I req
+If the
+.I duration
is not an exact multiple of the granularity underlying clock (see
.BR time (7)),
then the interval will be rounded up to the next multiple.