usage of disarm_decr[]
disarm_decr[] is defined as an unsigned long array but never get initialized in arch/ppc/kernel/time.c.
What's the purpose of using disarm_decr? I read the timer_interrupt() code and found the only place where it's referenced.
int timer_interrupt(struct pt_regs * regs)
{
...
if ( !disarm_decr[smp_processor_id()] ) set_dec(next_dec); last_jiffy_stamp(cpu) = jiffy_stamp;
...
}
So in this case, the value of disarm_decr[] is always zero, right? Then the decrementer get set each time when the timer interrupt is invoked.
--
Shawn Jin
RedSwitch Inc.
** Sent via the linuxppc-embedded mail list. See http://lists.linuxppc.org/
Quoted 2 lines · Xiaogeng (Shawn) Jin
What's the purpose of using
disarm_decr? I read thetimer_interrupt()code and found the only place where it's referenced.
RT-Linux (www.fsmlabs.com) uses it. RT-Linux takes over all interrupt handling, including decrementer interrupts, and the disarm_decr thing is there to give RT-Linux a way to take control of the decrementer register.
Paul.
** Sent via the linuxppc-embedded mail list. See http://lists.linuxppc.org/
Thank you. I have some further questions regarding to timer_interrupt().
How often is timer_interrupt() invoked? Every 1/HZ seconds? This is controlled by the decrementer, right? Initially the value of the decrementer is 'tb_ticks_per_jiffy'. Then it's updated in timer_interrupt(). Why isn't 'next_dec' the initial value 'tb_ticks_per_jiffy'? It's due to the time drift caused by the accuracy of external clock (oscillator) or by the precision of software?
next_dec = tb_ticks_per_jiffy - tb_delta(&jiffy_stamp)
The timebase register is initialized to zero and then increments periodically. How does it increment? Each clock (TMBCLK) the increment is 1? by itself, I mean, hardware itself, or by software?
Quoted 7 lines
Quoted 2 lines
What's the purpose of using
disarm_decr? I read thetimer_interrupt()code and found the only place where it's referenced.RT-Linux (www.fsmlabs.com) uses it. RT-Linux takes over all interrupt handling, including decrementer interrupts, and the
disarm_decrthing is there to give RT-Linux a way to take control of the decrementer register.
Thanks.
- Shawn.
** Sent via the linuxppc-embedded mail list. See http://lists.linuxppc.org/