Re: Mark Russinovich's reponse Was: [OT] Comments to WinNT Mag !! (fwd)

Richard B. Johnson (root@chaos.analogic.com)
Tue, 4 May 1999 17:24:57 -0400 (EDT)


On Tue, 4 May 1999, Mark H. Wood wrote:

> On Sun, 2 May 1999, Ingo Molnar wrote:
> > On Sun, 2 May 1999, Mark Russinovich wrote:
> > > Completion ports in NT require no polling and no linear searching - that,
> > > and their integration with the scheduler, is their entire reason for
> > > existence. [...]
> >
> > they require a thread to block on completion ports, or to poll the status
> > of the completion port. NT gives no way to asynchronously send completion
> > events to a _running_ thread.
>
> Ugh. I liked the VMS model here. When you queue an I/O request, one of
> the things you can attach to it is the address of a procedure. When the
> request completes, the kernel creates a temporary thread to execute the
> I/O rundown code, and part of that rundown is to call the procedure you
> supplied. Your procedure would typically move something from a wait queue
> to a work queue, or flip a bit in a bitmask, or link a buffer onto the
> free chain, or whatever it takes to indicate that your regular thread(s)
> should do whatever you want done when the I/O has completed. When you
> return, the rundown thread tidies up and destroys itself. (Of course, if
> you never return, or you try to do huge amounts of processing in your
> rundown procedure, your program won't work very well. Don't do that.
> Keep it short and simple.)
>

Yes. It's called an AST. Asynchronous System Trap. A terminal emulator
I made under VMS did all its work in ASTS. The idea is very good and
it works.

Cheers,
Dick Johnson
***** FILE SYSTEM WAS MODIFIED *****
Penguin : Linux version 2.2.6 on an i686 machine (400.59 BogoMips).
Warning : It's hard to remain at the trailing edge of technology.

-
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/