Hi Ralph,
On 2012-06-14 Ralph Lange wrote:
> Jeff is right that I do not like the idea of changing the rounding
> behavior over the range of possible delays. That would obscure the spec,
> confuse the user, and introduce OS-implementation dependent behavior in
> the OS-independent part of libCom. I'd rather let 3.14 live with the
> current state, and document it.
Agreed.
> 2) Some (=many) epicsThreadSleep(x) implementations do not work as
> defined and advertised, by calling the OS for a 1-quantum sleep even for
> a requested sleep of zero. Making the behavior consistent and to spec is
> a fix that goes into 3.14 and up.
I agree with Eric here; the epicsThreadSleep() implementations that round up
to the nearest tick all have code that explicitly compares seconds with zero
and do *not* round up in that case; they all call the underlying OS delay
routine with a tick count of zero. This provides a way for code to yield the
CPU to other threads that are running at the same thread priority. The
vxWorks documentation describes this:
> As a side effect, taskDelay( ) moves the calling task to the end of the
> ready queue for tasks of the same priority. In particular, you can yield
> the CPU to any other tasks of the same priority by "delaying" for zero
> clock ticks:
>
> taskDelay (NO_WAIT); /* allow other tasks of same priority to run */
vxWorks.h defines NO_WAIT as 0.
We should not change the zero-delay behavior of any implementation, unless it
doesn't currently actually implement that yield correctly.
However our handling of non-zero delays is a different matter; in all cases
there we seem to be rounding to the nearest tick and adding 1 if the result is
zero ticks, which as Eric points out is probably wrong.
- Andrew
--
Never interrupt your enemy when he is making a mistake.
-- Napoleon Bonaparte
- References:
- timer delay compensation Hill, Jeff
- Re: timer delay compensation Eric Norum
- Re: timer delay compensation Ralph Lange
- Navigate by Date:
- Prev:
Re: timer delay compensation Eric Norum
- Next:
Re: timer delay compensation Andrew Johnson
- Index:
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
<2012>
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
- Navigate by Thread:
- Prev:
Re: timer delay compensation Eric Norum
- Next:
Re: timer delay compensation Andrew Johnson
- Index:
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
<2012>
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
|