Some things to possibly add to SRFI-170, and errno handling questions
hga@xxxxxx
(11 Aug 2019 15:02 UTC)
|
Re: Some things to possibly add to SRFI-170, and errno handling questions
Lassi Kortela
(11 Aug 2019 15:28 UTC)
|
Re: Some things to possibly add to SRFI-170, and errno handling questions hga@xxxxxx (11 Aug 2019 15:50 UTC)
|
Re: Some things to possibly add to SRFI-170, and errno handling questions
Lassi Kortela
(11 Aug 2019 16:00 UTC)
|
Re: Some things to possibly add to SRFI-170, and errno handling questions
John Cowan
(12 Aug 2019 04:11 UTC)
|
Re: Some things to possibly add to SRFI-170, and errno handling questions
hga@xxxxxx
(12 Aug 2019 12:24 UTC)
|
Re: Some things to possibly add to SRFI-170, and errno handling questions
John Cowan
(12 Aug 2019 14:06 UTC)
|
Re: Some things to possibly add to SRFI-170, and errno handling questions
hga@xxxxxx
(12 Aug 2019 14:26 UTC)
|
> From: Lassi Kortela <xxxxxx@lassi.io> > Date: Sunday, August 11, 2019 10:28 AM >[ Punt on chroot since it can only be called if you're root, etc. ] >> I'd like a version of nanosleep >> <http://pubs.opengroup.org/onlinepubs/9699919799/functions/nanosleep.html#> >> suitably wrapped so it's only a finer grained version of sleep in e.g. >> milliseconds, so that I can for example pause a bit on EAGAIN instead of >> pounding the system, if retries for EAGAIN are warranted. I've had >> other reasons as well in times past to sleep my process for a short >> period of time. > This is a good idea. But should it go into a OS SRFI or a time SRFI? It > should probably be in the same SRFI as (posix-time) and (monotonic-time). Putting (postix-time) and (monotonic-time) in the Timespec SRFI hadn't occurred to me, since a Timespec SRFI without them can have all its implementation code in generic Scheme, and POSIX SRFIs necessarily interface to the system. On the other hand, does a Timespec SRFI without a base source of time make sense? > Should the sleep procedure take fractional seconds (as the sleep(1) > command on some Unixes) or should it take seconds and nanoseconds? > Let's keep Marc's wise comments about time representation in mind. I was thinking fractional seconds, either milliseconds, or deciseconds to match that use in the tty with- line discipline procedures. Seconds + nanoseconds don't match my use cases for using it, especially when you can just say for example (millisleep (* 1000 60)) if you wanted to sleep for a minute. >> It's been a couple of decades since I did any signal handing work, > Staying away from signals is time well spent :) That was my only serious experience with them, and it was quite enough. >> but if EINTR only happens because of receiving a signal, should it >> always be retried until it succeeds or another errno is returned, >> ignoring the possibility of blocking in an infinite loop? > Basically yes. There are pathological cases, such as that thing with an > interrupted close() not being sure whether it closed the fd or not. But > such cases are probably beyond repair need to be fixed in kernels so > that they don't generate baffling situations for userland programs. Still, should I e.g. insert a pause with a sleep procedure as discussed above starting with the second retry, and then time out and raise an error after a second? >[ EBUSY should be raise an error, not a retry "immediately" thing. ] But EAGAIN should be retried? And also a) not pound on the system using a sleep procedure and b) timeout? - Harold