Solaris Doors API for Linux

Jason Lango (jal@cs.brown.edu)
Thu, 4 Jun 1998 15:49:26 -0400 (EDT)


URL: http://www.cs.brown.edu/~tor/doors/

The Solaris Doors API is a neat new form of IPC, taken from Sun's
research operating system, Spring, similar in concept to Mach ports.
Basically, the Doors API is a kind of IPC mechanism in which client
processes make remote procedure calls to server processes, optionally
passing data and/or special file descriptors back and forth.

What makes Doors interesting and innovative is that the API allows for
certain speed optimizations: The kernel can control the allocation of
threads in the server process, keeping it roughly proportional to the
number of client requests at any one time. Also, large amounts of
data may be passed efficiently by mapping the underlying physical
pages between processes (the pages are mapped copy-on-write).

The speedup achieved by mapping pages between processes is very
evident in some simple benchmarks which I ran, but it remains to be
seen how it will perform in a real application. (If anyone has a real
application which uses the Solaris Doors API, please let me know.)
The neat part is that Sun only talks about the possibility of mapping
memory between processes in their white-paper, whereas Doors/Linux
actually implements it! (As far as I can tell experimentally, and
from word of mouth, Solaris 2.6 doesn't have this optimization.)

The URL above has links to the source for the Linux implementation of
the Doors API as a kernel module and user library, more documentation
on the Solaris Doors API, a paper which I wrote about the project,
etc.

Quick disclaimer: This is my first Linux kernel hacking experience
and I'd appreciate some frank (but yet kind :-) criticism. There are
still some features missing from the Doors/Linux implementation and as
such it's not 100% compatible with the Solaris Doors API yet. Also,
since it's still in its developmental stages, I can almost guarantee
the existence of bugs in the code.

Regards,
Jason

jal@cs.brown.edu

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu