Re: Calling current() from interrupt context

From: Andi Kleen (ak@suse.de)
Date: Sun Oct 08 2000 - 20:40:26 EST


On Mon, Oct 09, 2000 at 02:21:09AM +0100, Kenn Humborg wrote:
> On Mon, Oct 09, 2000 at 02:20:27AM +0200, Andi Kleen wrote:
> > 2.4 TCP code relies on current being valid in a softirq.
>
> Well, then as long as Linux guarantees that there is always a
> valid 'current task' on a CPU, then I can special-case the
> called-from-interrupt case. The previous kernel stack pointer
> is accessible from another processor register, so I can go in
> there and pull it out and use it to calculate current.
>
> Is it possible to get an interrupt during context switching,
> for example? Or any other window during which there isn't
> a valid current?

You can get interrupts while running in user space and there
isn't a valid current register. So you have to initialise it always
in the interrupt entry. As long as you don't have to support SMP
it is easy (just store current in a global variable and load it from there),
with SMP it is more tricky but still possible, e.g. when you have
some hidden register.

>
> And what the hell does TCP need current for anyway?

For a very hackish user context TCP implementation that probably should
be cleaned up (but it is code freeze etc.etc.blabla.)

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



This archive was generated by hypermail 2b29 : Sun Oct 15 2000 - 21:00:11 EST