Chapter 1. Introduction

This document describes design and implementation of LDoors: Doors API in the Linux kernel. Doors are announced entry-points of fast intra-machine RPC first introduced in Solaris.

In Solaris process creates door by door_create() call. This call returns file descriptor, associated with STREAM. This file descriptor is usually then attached (through fattach()) to the file-system name-space so that other processes can open it. Any process holding door file descriptor invokes door by door_call() passing arguments to it. As result of this call code associated with door by the door_create() will be executed with given arguments in the address space of door server process (one that called door_create()). Invocation is finished by calling door_return() and control returns to the client process. Further details of Solaris' API can be found at docs.sun.com web site.

To implement Doors API Solaris kernel maintains a pool of threads sleeping in door server process address space and serves door invocations by dispatching them to threads from the pool.

This interface has several advantages over traditional RPC:

That said, it seems reasonable to implement Doors API for the Linux. Described implementation has following goals: