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.)
-- Mark H. Wood, Lead System Programmer mwood@IUPUI.Edu Specializing in unusual perspectives for more than twenty years.
- 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/