Re: current pointer question/suggestion

Alan Cox (alan@lxorguk.ukuu.org.uk)
Fri, 17 Jul 1998 13:52:37 +0100 (BST)


> On Wed, Jul 15, 1998 at 11:57:48PM -0700, David S. Miller wrote:
> > From: hpa@transmeta.com (H. Peter Anvin)
> > Date: 16 Jul 1998 06:45:22 GMT
> >
> > NOW, what is dangerous with it is that you must NEVER dereference
> > pointers to automatic variables for another process... those
> > variables simply will not exist in your new process context...
> >
> > Guess why other OS's don't implement wait-queues the way we do? ;-)
> > Our scheme depends upon being able to reference data residing within
> > the stack frame of any thread at any given time.
> >
>
> Can you explain this in a bit more detail? I'm really confused.

The wait queue is a linked list of who is waiting. That list spans the
kernel stacks of each process. When you walk a wakeup list you walk
across all those stacks.

BSD could never do this as it inherited the V7 uarea stuff where the
kernel stack page and most variables for a process were swappable on
the PDP11, and also only one was mapped into the 64K limited data
segment for that task (not being able to do that btw is the biggest
killer in Linux 8086 - because we dont have any chunky paging hardware
as the 11 did).

Newer BSD doesnt work that way but they've never changed scheme

-
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.altern.org/andrebalsa/doc/lkml-faq.html