On Sun, Jul 30, 2023 at 08:20:31PM -0500, Scott Cheloha wrote: > This patch drags ualarm.3 over to where alarm.3 is. I think it reads > better and the wording is truer to what the function actually does. > In particular, ualarm(3) does not block or "wait": the alarm is > scheduled for asynchronous delivery by the operating system. > > I think I may have tried to clean this up two years ago. I don't > remember where that got sidetracked, but fwiw this was written from > scratch using alarm.3 as a guide. > > Two things I'm iffy on: > > - "high resolution" or "high-resolution"? > > - The current manual mentions an upper bound (2147483647). I'm not > sure when, if ever, this was the real: useconds_t is unsigned, so an > upper bound of INT32_MAX seems off. > > I am leaning toward just leaving the patch as-is instead of trying > to guide the end-user through the minefield of matching bespoke > "_t" types to real types and limits. > > Tweaks? ok? >
hi. fine by me. i would stick with "high resolution", purely because we seem to have no other instances of "high-resolution". jmc > Index: ualarm.3 > =================================================================== > RCS file: /cvs/src/lib/libc/gen/ualarm.3,v > retrieving revision 1.17 > diff -u -p -r1.17 ualarm.3 > --- ualarm.3 26 Jul 2019 12:08:18 -0000 1.17 > +++ ualarm.3 31 Jul 2023 01:05:23 -0000 > @@ -32,7 +32,7 @@ > .Os > .Sh NAME > .Nm ualarm > -.Nd schedule signal after specified time > +.Nd schedule high resolution SIGALRM delivery > .Sh SYNOPSIS > .In unistd.h > .Ft useconds_t > @@ -45,31 +45,37 @@ This is a simplified interface to > .Pp > The > .Fn ualarm > -function waits a count of > +function schedules the > +.Dv SIGALRM > +signal for delivery to the calling process after at least the given number of > .Fa microseconds > -before asserting the terminating signal > -.Dv SIGALRM . > -System activity or time used in processing the call may cause a slight > -delay. > -.Pp > -If the > +have elapsed. > +If > .Fa interval > -argument is non-zero, the > +is non-zero, > +the > .Dv SIGALRM > -signal will be sent > -to the process every > +signal is scheduled for redelivery to the calling process every > .Fa interval > -microseconds after the timer expires (e.g., after > +microseconds thereafter. > +.Pp > +If an alarm is already pending, > +an additional call to > +.Fn ualarm > +supersedes the prior call. > +.Pp > +If > .Fa microseconds > -number of microseconds have passed). > +is zero, > +any pending alarm is cancelled and the value of > +.Fa interval > +is ignored. > .Sh RETURN VALUES > -When the signal has successfully been caught, > +The > .Fn ualarm > -returns the amount of time left on the clock. > -The maximum value for > -.Fa microseconds > -allowed > -is 2147483647. > +function returns the number of microseconds remaining until the next > +alarm is scheduled for delivery, > +or zero if no alarm is pending. > .Sh SEE ALSO > .Xr setitimer 2 , > .Xr sigaction 2 , > @@ -86,5 +92,17 @@ function conforms to > .Sh HISTORY > The > .Fn ualarm > -function appeared in > +function first appeared in > .Bx 4.3 . > +.Sh CAVEATS > +The > +.Fn ualarm > +function is implemented with the per-process > +.Dv ITIMER_REAL > +timer described in > +.Xr setitimer 2 . > +Use of both > +.Fn ualarm > +and > +.Xr setitimer 2 > +in the same program may yield confusing behavior.