scheduler clock for MXS
Stanislav Meduna
stano at meduna.org
Thu Nov 8 16:27:59 EST 2012
On 06.11.2012 23:46, Russell King - ARM Linux wrote:
> * round_jiffies - function to round jiffies to a full second
>
> This is probably it. With mine, it's a 32.768kHz clock, so limiting
> it to 16-bit gives a wrap period of 2 seconds exactly. We take 10%
> off, so the timer would be asked to fire every 1.8s, which would be
> rounded up to 2 seconds. That's a little too close for comfort...
Confirmed.
- if I artificially change my timer code to act as a 16-bit one,
I get wrap-arounds. Not always, but there are definitely some
during the bootup (where maybe the tick is sometimes delayed
a tad more)
- if I then remove the round_jiffies and only leave jiffies +
wrap_ticks, the wrap-arounds go away
> I think in this case, we need a version of round_jiffies() which _always_
> rounds down. Unfortunately, it doesn't exist. Thomas? What are the
> options here?
What is actually the reason of round_jiffies there? The
http://kernel.org/doc/htmldocs/device-drivers/API-round-jiffies.html
mentions saving power, is it the only one?
I'd probably just leave the round_jiffies out at least for
wrap_ticks < around 16*HZ. Above that the error by possibly
rounding up can be ignored.
There is also a round_jiffies_up - unless I am too tired, as long as
we tick no faster than once per second, subtracting (HZ-1) and rounding
up should be the same as rounding down.
But: is the round_jiffies* safe at all for sub-second precision
at jiffies around 0xffffffff? From quick looking it does a modulo,
0xffffffff % say 250 is 45, the next jiffy is at 0...
Regards
--
Stano
More information about the linux-arm-kernel
mailing list