This is the mail archive of the cygwin mailing list for the Cygwin project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: clock_getres(CLOCK_REALTIME, .) may return an outdated and too high resolution


On Mar 27 20:59, Christian Franke wrote:
> Corinna Vinschen wrote:
> >On Mar 27 20:01, Christian Franke wrote:
> >>Corinna Vinschen wrote:
> >>>On Mar 26 19:00, Christian Franke wrote:
> >>>>Corinna Vinschen wrote:
> >>>>>I see your point, but what bugs me a bit is the fact that
> >>>>>clock_getres(CLOCK_REALTIME) and clock_setres(CLOCK_REALTIME) will
> >>>>>always return the same value coarsest, regardless what value has been set.
> >>>>If clock_setres was called and succeeded, then clock_getres(.)
> >>>>should return the value set before.
> >>>>
> >>>>If clock_setres was not called, the coarsest value is IMO the only
> >>>>value that can be guaranteed.
> >>>>
> >>>>The actual value returned by NtQueryTimerResolution is simply
> >>>>useless in this context: It is the minimum of all resolutions
> >>>>currently set by all running processes. It may change at any time.
> >>>>There is apparently no way the query the current setting of the
> >>>>current process.
> >>>Uh, right, I misunderstood.  I reverted the change to clock_setres.
> >>Sorry, I probably forgot to mention that NtSetTimerResolution
> >>returns the same useless actual value than NtQueryTimerResolution.
> >>
> >>I would suggest:
> >>
> >>     status = NtSetTimerResolution (period, TRUE,&actual);
> >>     if (!NT_SUCCESS (status))
> >>       { ... return -1; }
> >>  -  minperiod = actual;
> >>  +  minperiod = period;
> >But that's not right.  The "actual" value is not useless, but the value
> >the resolution has actually been set to.
> 
> No, again this is the minimum of all resolutions currently set by
> all processes.
> 
> 
> >   The OS just doesn't support
> >arbitrary values for the period.
> >
> 
> Yes - but in 'actual' a smaller value than the value set for the
> current process may be returned.

Hmpf, ok.  Boy is that ugly.  Is there a chance that actual is bigger
than period?  In that case we should perhaps set minperiod like this:

  minperiod = MAX (actual, period);


Corinna

-- 
Corinna Vinschen                  Please, send mails regarding Cygwin to
Cygwin Project Co-Leader          cygwin AT cygwin DOT com
Red Hat

--
Problem reports:       http://cygwin.com/problems.html
FAQ:                   http://cygwin.com/faq/
Documentation:         http://cygwin.com/docs.html
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]