Re: Calling current() from interrupt context

From: Alan Cox (alan@lxorguk.ukuu.org.uk)
Date: Tue Oct 10 2000 - 04:54:11 EST


> Linus Torvalds wrote:
> > You can also still do the stack pointer plaything by just using
> > indirection: and when you context switch you switch the pointer around =
> at
> > the base of the per-cpu interrupt stack.
>
> Indirection, =E0 la "current =3D *(stack & ~8191)" might not be a bad ide=
> a
> in general. As Ralf Baechle noted, having all the task structs at the
> same offset isn't good for the cache.

Having the stacks aligned also isnt good for the caches. If you are bored some
time instrument the cache lines that wake_up() touches on a wake. Its very
common to see most of them being on the same line because each kernel thread
waiting on the same event (eg poll in apache) is at the same kernel and user
stack depth.

Userspace is not entirely guilt free either but in userspace teaching crt0.S
to randomise the stack base a little can be done, and the environ/argv tends
to perturb stuff that isnt fork()'ed

-
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:15 EST