Re: how does kernel get the "current" task struct?

From: H. Peter Anvin (hpa@transmeta.com)
Date: Fri Feb 04 2000 - 16:19:14 EST


Followup to: <14491.15467.98979.699171@dukat.scot.redhat.com>
By author: "Stephen C. Tweedie" <sct@redhat.com>
In newsgroup: linux.dev.kernel
>
> Hi,
>
> On Wed, 02 Feb 2000 18:12:12 -0800, Jun Sun <jsun@mvista.com> said:
>
> > I suppose if you have a global pointer "current", you don't even need
> > to do "andl" instruction. (But you will need to update "current"
> > whenever a context switch happens, and you'll probably have a
> > "current" array in the CMP version.)
>
> That's the whole problem: on SMP, with a current table, you'd have to
> lookup the number of the current CPU every time you wanted to access
> "current". Doing the stack arithmetic trick is _much_ faster than using
> the cpuid instruction.
>

The CPUID instruction doesn't give you the current CPU number.

However, on a machine with oodles of registers, say IA64, you may want
to give your "current" pointer a register instead of using the stack
pointer.

        -hpa

-- 
<hpa@transmeta.com> at work, <hpa@zytor.com> in private!
"Unix gives you enough rope to shoot yourself in the foot."

- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.rutgers.edu Please read the FAQ at http://www.tux.org/lkml/



This archive was generated by hypermail 2b29 : Mon Feb 07 2000 - 21:00:11 EST