Re: ppc32: Weird process scheduling behaviour with 2.6.24-rc
From: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Date: 2008-01-24 08:18:48
From: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Date: 2008-01-24 08:18:48
On Wed, 2008-01-23 at 14:14 +0100, Michel Dänzer wrote:
quoted
Does ppc32 (or your instance thereof) have a high resolution sched_clock()?I'm not sure (FWIW, we did get support for NO_HZ and HIGH_RES_TIMERS in 2.6.24-rc as well, but playing with these config options and even reverting the code didn't seem to have any effect), can someone from the linuxppc-dev list answer this?
We do have a hires sched_clock() based on the processor internal
timebase and scaled to ns. Maybe we screwed something up there ? The
implementation is in arch/powerpc/kernel/timer.c
/*
* Scheduler clock - returns current time in nanosec units.
*
* Note: mulhdu(a, b) (multiply high double unsigned) returns
* the high 64 bits of a * b, i.e. (a * b) >> 64, where a and b
* are 64-bit unsigned numbers.
*/
unsigned long long sched_clock(void)
{
if (__USE_RTC())
return get_rtc();
return mulhdu(get_tb() - boot_tb, tb_to_ns_scale) << tb_to_ns_shift;
}
(You can mostly ignore the RTC() case which is the native ns clock of
the old 601 processor.
Ben.