Doors is an
inter-process communication
In computer science, interprocess communication (IPC) is the sharing of data between running Process (computing), processes in a computer system. Mechanisms for IPC may be provided by an operating system. Applications which use IPC are often cat ...
facility for
Unix
Unix (, ; trademarked as UNIX) is a family of multitasking, multi-user computer operating systems that derive from the original AT&T Unix, whose development started in 1969 at the Bell Labs research center by Ken Thompson, Dennis Ritchie, a ...
computer systems. They provide a form of
procedure call.
History
Doors were developed by
Sun Microsystems
Sun Microsystems, Inc., often known as Sun for short, was an American technology company that existed from 1982 to 2010 which developed and sold computers, computer components, software, and information technology services. Sun contributed sig ...
as a core part of the
Spring operating system, then added to
Solaris in version 2.5 as an undocumented internal interface. They became a documented feature in Solaris 2.6. Recent versions of Solaris use Doors in many places, including
nscd
(the
name service cache daemon) and
syslog
In computing, syslog () is a standard for message logging. It allows separation of the software that generates messages, the system that stores them, and the software that reports and analyzes them. Each message is labeled with a facility code, ...
.
A
Linux
Linux ( ) is a family of open source Unix-like operating systems based on the Linux kernel, an kernel (operating system), operating system kernel first released on September 17, 1991, by Linus Torvalds. Linux is typically package manager, pac ...
port of Doors was released in 2003, but is only available for version 2.4.18.
Overview
The Doors subsystem is implemented as a
user-space library with some
kernel support, and relies heavily on
threads. It is designed for low overhead, and the Solaris implementation uses some assembly code for maximum efficiency.
Doors are created by server processes (which must use threads) and called by client processes. It is possible for one process to both create and call a door. When creating a door, the server must specify a server procedure, which will be called by the Doors library on behalf of clients. Unlike most
remote procedure call
In distributed computing, a remote procedure call (RPC) is when a computer program causes a procedure (subroutine) to execute in a different address space (commonly on another computer on a shared computer network), which is written as if it were a ...
systems, each door has only one server procedure. A server can "attach" a door to a file, enabling clients to connect to that door simply by opening that file. The
ls -l
command will then show the file with a 'type' of "D" (not to be confused with "d" for a directory) — for example:
Clients use
door_call()
to invoke the door's server procedure, passing a contiguous region of memory and a list of
file descriptor
In Unix and Unix-like computer operating systems, a file descriptor (FD, less frequently fildes) is a process-unique identifier (handle) for a file or other input/output resource, such as a pipe or network socket.
File descriptors typically h ...
s as arguments, and getting back another contiguous region and list of file descriptors. Either region may be empty, as may either list. Usually, two
C struct
s will be defined, one for the input data and one for the output data. (Alternatively,
tagged union
In computer science, a tagged union, also called a variant, variant record, choice type, discriminated union, disjoint union, sum type, or coproduct, is a data structure used to hold a value that could take on several different, but fixed, types. ...
s may be used, allowing a door procedure to provide multiple actions in much the same way as the
ioctl
In computing, ioctl (an abbreviation of input/output control) is a system call for device-specific input/output operations and other operations which cannot be expressed by regular file semantics. It takes a parameter specifying a request code; ...
system call.) Every file descriptor is accompanied by a flags word. The
DOOR_RELEASE
flag requests that a file descriptor be closed in the sending process after being duplicated in the receiving process. If a file descriptor that refers to a door is sent, the system records the properties of that door in the flags word.
As well as representing a procedure, or a group of procedures, a door can represent a stateful data
object
Object may refer to:
General meanings
* Object (philosophy), a thing, being, or concept
** Object (abstract), an object which does not exist at any particular time or place
** Physical object, an identifiable collection of matter
* Goal, an a ...
, making it possible to pass references to such objects between processes. Such a door would typically take a
tagged union
In computer science, a tagged union, also called a variant, variant record, choice type, discriminated union, disjoint union, sum type, or coproduct, is a data structure used to hold a value that could take on several different, but fixed, types. ...
as input data with each tag value denoting a different
method
Method (, methodos, from μετά/meta "in pursuit or quest of" + ὁδός/hodos "a method, system; a way or manner" of doing, saying, etc.), literally means a pursuit of knowledge, investigation, mode of prosecuting such inquiry, or system. In re ...
.
The Doors system also provides a way for clients and servers to get information about each other. For example, a server can check the client's user or process ID to implement
access control
In physical security and information security, access control (AC) is the action of deciding whether a subject should be granted or denied access to an object (for example, a place or a resource). The act of ''accessing'' may mean consuming ...
.
The Doors library normally creates and manages a pool of threads in the server process to handle calls, but it is possible to override this behavior. The Doors system does not provide any form of synchronization, but servers can use the normal thread-level synchronization primitives. Doors can be used to synchronize access to
shared memory segments, allowing single-copy data transfer.
The Doors concept is very similar to
X/Open X/Open group (also known as the Open Group for Unix Systems and incorporated in 1987 as X/Open Company, Ltd.) was a consortium founded by several European UNIX systems manufacturers in 1984 to identify and promote open standards in the field of info ...
XATMI API specification, where client processes invoke server processes' exposed functions:
door_call()
is analogous to
tpcall()
in XATMI clients, while
door_return()
is analogous to
tpreturn()
in XATMI servers.
See also
*
Local Procedure Call
*
Enduro/X
Enduro/X is an open-source middleware platform for distributed transaction processing. It is built on proven APIs such as X/Open group's XATMI and XA. The platform is designed for building real-time microservices based applications with a clu ...
*
Tuxedo
Black tie is a semi-formal Western dress code for evening events, originating in British and North American conventions for attire in the 19th century. In British English, the dress code is often referred to synecdochically by its principal ...
*
D-Bus
D-Bus (short for "Desktop Bus")
is a message-oriented middleware mechanism that allows communication between multiple Process (computing), processes running concurrently on the same machine. D-Bus was developed as part of the freedesktop.org pro ...
References
External links
Solaris 10 man pages section 3: Realtime Library Functions(
man pages
A man page (short for manual page) is a form of software documentation found on Unix and Unix-like operating systems. Topics covered include programs, system libraries, system calls, and sometimes local system details. The local host administ ...
for the door-related functions)
{{Solaris
Sun Microsystems software
Remote procedure call