Oracle® Solaris 11.2 Programming Interfaces Guide

Exit Print View

Updated: July 2014
 
 

Doors Overview

Doors are a fast light-weight RPC mechanism for secure control transfer between processes on the same machine. A door is created when a process known as the door server calls door_create(3DOOR) with a server function and receives a file descriptor. The file descriptor can be passed to other processes or attached to the file system using fattach(3C). A client process, which has the file descriptor, can then invoke the door process by calling door_call(3DOOR). The client can also pass data and descriptors including other door descriptors. As a result of the call to door_call(), the client thread blocks and a thread in the door server wakes up and starts running the server function. When the server function is completed, the function calls door_return(3DOOR) to pass optional data and descriptors back to the client. door_return() also switches control back to the client; the server thread gets blocked in the kernel and does not return from the door_return call.

Doors are described in the doors library libdoor(3LIB).