JavaScript is required to for searching.
Skip Navigation Links
Exit Print View
Programming Interfaces Guide     Oracle Solaris 11.1 Information Library
search filter icon
search icon

Document Information

Preface

1.  Memory and CPU Management

2.  Session Description Protocol API

3.  Process Scheduler

4.  Locality Group APIs

5.  Input/Output Interfaces

6.  Interprocess Communication

Pipes Between Processes

Named Pipes

Sockets Overview

Doors Overview

POSIX Interprocess Communication

POSIX Messages

POSIX Semaphores

POSIX Shared Memory

System V IPC

Permissions for Messages, Semaphores, and Shared Memory

IPC Interfaces, Key Arguments, and Creation Flags

System V Messages

Initializing a Message Queue

Controlling Message Queues

Sending and Receiving Messages

System V Semaphores

Initializing a Semaphore Set

Controlling Semaphores

Semaphore Operations

System V Shared Memory

Accessing a Shared Memory Segment

Controlling a Shared Memory Segment

Attaching and Detaching a Shared Memory Segment

7.  Socket Interfaces

8.  Programming With XTI and TLI

9.  Packet Filtering Hooks

10.  Transport Selection and Name-to-Address Mapping

11.  Real-time Programming and Administration

12.  The Oracle Solaris ABI and ABI Tools

A.  UNIX Domain Sockets

Index

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).