[PATCH] clock_nanosleep(2), pthread_condattr_[gs]etclock(3)
Yaakov (Cygwin/X)
yselkowitz@users.sourceforge.net
Wed Jul 20 22:04:00 GMT 2011
On Wed, 2011-07-20 at 16:11 +0200, Corinna Vinschen wrote:
> On Jul 20 04:50, Yaakov (Cygwin/X) wrote:
> > Actually, no need to panic, I took a closer look at this, and it's not
> > all that hard at all, so I'll go ahead and implement
> > pthread_condattr_[gs]etclock() as well. Just give me a day or two to
> > get it done. In the meantime, I'll proceed with the revised newlib
> > patch.
>
> Thanks.
Not taking the following issue into account, my patches to implement
pthread_condwait_[gs]etclock() and update sysconf() are attached. (The
chunk for include/cygwin/version.h is not included, as that will depend
on which order these patches are applied.)
> The only problem I see is the fact that a call to clock_settime
> influences calls to clock_nanosleep with absolute timeouts(*).
>
> The problem is that we convert absolute timeouts to relative timeouts
> and then use the timeout facility of the WFMO function to handle the
> timeout for us. IMO this is neither very reliable, nor is it elegant.
>
> So, here's the question. Shouldn't we better use waitable timers
> to implement this sort of stuff? Waitable timers are pretty easy to
> use, they support relative and absolute timeouts with an accuracy of 100
> ns in the API and a real accuracy which only depends on the underlying
> HW, and they are especially not subject to the 49.7 days overflow
> problem.
I see your point. The question is how to use waitable timers for
CLOCK_MONOTONIC.
> (*) Does it also influence pthread_cond_timedwait? This information seems
> to be missing in SUSv4.
The last paragraph of RATIONALE -> Timed Wait Semantics states:
> For cases when the system clock is advanced discontinuously by an
> operator, it is expected that implementations process any timed wait
> expiring at an intervening time as if that time had actually occurred.
Of course, this would be an old problem with pthread_cond_timedwait().
Yaakov
-------------- next part --------------
A non-text attachment was scrubbed...
Name: cygwin-posix-clock-selection.patch
Type: text/x-patch
Size: 896 bytes
Desc: not available
URL: <http://cygwin.com/pipermail/cygwin-patches/attachments/20110720/0585684a/attachment.bin>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: cygwin-pthread_condattr_getclock.patch
Type: text/x-patch
Size: 7702 bytes
Desc: not available
URL: <http://cygwin.com/pipermail/cygwin-patches/attachments/20110720/0585684a/attachment-0001.bin>
More information about the Cygwin-patches
mailing list