Subject: Doors
To: None <tech-kern@netbsd.org>
From: Jens Wiklander <jnilsson@ludd.ltu.se>
List: tech-kern
Date: 05/12/2007 13:42:51
Hello,

I'm interested in implementing "doors" in NetBSD. Before I put
too much time into it I'd like know if someone else is already
working on it or if it isn't an interesting feature for NetBSD
any longer.

The two features specific for doors are advanced use of the VM to
pass pages and fast switches between the client and the server.
The ability to pass file descriptors between the client and the
server is worth mentioning too even if it isn't unique for doors.

I think the design should rely on sockets in some way. But many
questions remain.

Implement based on asynchronous message with sendmsg/recvmsg or
synchronous with a new syscall door_call (or some similar name)?
Door_call could probably be a little bit more efficient.
Door_call would probably use sosend and soreceive in the kernel
so it would be quite similar to sendmsg and recvmsg anyway.

Extend PF_LOCAL with passing of pages or add a new protocol
family that combines much of PF_LOCAL with the ability of passing
pages?  Extending PF_LOCAL would save some code but a new
protocol family could perhaps be a bit faster.

What about the fast switches between the client and the server? I
don't have any ideas yet.

How close should our doors API follow the Solaris API? I think
that the fact that our would implementation relies on sockets
instead of streams shouldn't be hidden but in all other aspects
should be as close as possible.


Jens