VKernel progress update - 8 Jan 2006 (milestone reached!)

Matthew Dillon dillon at apollo.backplane.com
Tue Jan 9 20:00:28 PST 2007


:Matthew Dillon wrote:
:>     The old addage, "First make it work, then make it fast", applies big
:>     time here.  So I'd say use coarse polling for now.
:
:two thoughts:
:
:how about using O_ASYNC and SIGIO for console and network, etc?
:
:we could build a device tree (starting with a nexus), where drivers could register filedescs as "interrupt" resources.  or something like that...
:
:cheers
:  simon

    It would work, but it wouldn't be fun.  Signals are very expensive.  Very
    very expensive.

    Kqueue or select for the network would work, the provisio being that 
    I would need to create some sort of mechanism to break out of an
    emulated user context based on a kqueue event occuring.  I don't think
    that would be too hard to do.

    The disk driver is a different matter.  There isn't even a SIGIO 
    mechanism available for reading and writing files.  In fact, two things
    need to be done on the disk driver front:  First, we need to use 
    direct I/O so the data doesn't get double cached (once by the virtual
    kernel and once by the real kernel).  Second, we need some sort of 
    pseudo-DMA to handle the transfer... maybe a kernel thread.  We have
    the advantage that the transfers to and from the disk only occur
    from the virtual kernel's 'memory' (which itself is just a memory mapped
    file), so it would be fairly easy to write a real-kernel kernel thread
    to help out there.
 
						-Matt





More information about the Kernel mailing list