Skip to contentSkip to conversation

usage of disarm_decr[]

DISCUSSION Xiaogeng (Shawn) Jin 2 participants 3 messages Dec 11, 2002

lore
Share & tools
lore
#0 lore raw

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/

#1 lore raw
Quoted 2 lines · Xiaogeng (Shawn) Jin

What's the purpose of using disarm_decr? I read the timer_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/

#2 lore raw

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 the timer_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.

Thanks.

- Shawn.

** Sent via the linuxppc-embedded mail list. See http://lists.linuxppc.org/