On Nov 23, 2007 7:04 PM, Mladen Nikitovic <[EMAIL PROTECTED]> wrote:
> hi gavinm,
>
> I've looked at the opensolaris code and I found the functions you mentioned.
> For i86p, in the mp_machdep.c file idle_cpu is either defined as cpu_idle
> (that in turn calls mach_cpu_idle and finally executes i86_halt) or
> cpu_idle_mwait which uses the mwait approach.
>
> Since I'm interested in using the sparc architecture I also found idle_cpu
> being assigned to cpu_halt function within os/mach_startup.c (sun4u) file.
> This function calls cpu_halt_cpu which is supposed to halt the cpu if the
> global flag enable_halt_idle_cpus is enabled.
>
> However, I also saw that idle_cpu is defined as generic_idle_cpu in the
> common/disp/disp.c file which is actually empty. Since,
>
> So in conclusion, I'm confused about which definition of idle_cpu will
> actually be used when I'm compiling my code on a sparc machine. Will idle_cpu
> be an empty function or something that actually halts? Is there a way to
> verify this?
>
I hope the following describtion is clear to you, although it's not
exactly what the code is.
idle_cpu = generic_idle_cpu;
#if ARCH=x86/64
idle_cpu = cpu_idle;
if (mwait is supported)
idle_cpu = cpu_idle_mwait;
#endif
#if ARCH=SPARC
idle_cpu = cpu_halt;
#endif
the function pointer (*idle_cpu)() will be called when the system is idle.
So now you'll get which definition of idle_cpu will actually be used.
-Aubrey
Intel OpenSolaris Team.
_______________________________________________
opensolaris-code mailing list
[email protected]
http://mail.opensolaris.org/mailman/listinfo/opensolaris-code