JavaScript is required to for searching.
Skip Navigation Links
Exit Print View
Programming Interfaces Guide     Oracle Solaris 11 Express 11/10
search filter icon
search icon

Document Information

Preface

1.  Memory and CPU Management

2.  Remote Shared Memory API for Solaris Clusters

Overview of the Shared Memory Model

API Framework

API Library Functions

Interconnect Controller Operations

rsm_get_controller

rsm_release_controller

rsm_get_controller_attr

Cluster Topology Operations

rsm_get_interconnect_topology

rsm_free_interconnect_topology

Data Structures

Administrative Operations

Memory Segment Operations

Export-Side Memory Segment Operations

Memory Segment Creation and Destruction

Memory Segment Publish, Republish, and Unpublish

Memory Segment Rebind

Import-Side Memory Segment Operations

Memory Segment Connection and Disconnection

Memory Access Primitives

Scatter-Gather Access

Segment Mapping

Barrier Operations

Event Operations

RSMAPI General Usage Notes

Segment Allocation and File Descriptor Usage

Export-Side Considerations

Import-Side Considerations

RSM Configurable Parameters

3.  Session Description Protocol API

4.  Process Scheduler

5.  Locality Group APIs

6.  Input/Output Interfaces

7.  Interprocess Communication

8.  Socket Interfaces

9.  Programming With XTI and TLI

10.  Packet Filtering Hooks

11.  Transport Selection and Name-to-Address Mapping

12.  Real-time Programming and Administration

13.  The Solaris ABI and ABI Tools

A.  UNIX Domain Sockets

Index

Overview of the Shared Memory Model

In the shared memory model, an application process creates an RSM export segment from the process's local address space. One or more remote application processes create an RSM import segment with a virtual connection between export and import segments across the interconnect. All processes make memory references for the shared segment with addresses local to their specific address space.

An application process creates an RSM export segment by allocating locally addressable memory to the export segment. This allocation is done by using one of the standard Solaris interfaces, such as System V Shared Memory, mmap(2), or valloc(3C). The process then calls on the RSMAPI for the creation of a segment, which provides a reference handle for the allocated memory. The RSM segment is published through one or more interconnect controllers. A published segment is remotely accessible. A list of access privileges for the nodes that are permitted to import the segment is also published.

A segment ID is assigned to the exported segment. This segment ID, along with the cluster node ID of the creating process, allows an importing process to uniquely specify an export segment. Successfully creating an export segment returns a segment handle to the process for use in subsequent segment operations.

An application process obtains access to a published segment by using the RSMAPI to create an import segment. After creating the import segment, the application process forms a virtual connection across the interconnect. Successfully creating this import segment returns an RSM import segment handle to the application process for use in subsequent segment import operations. After establishing the virtual connection, the application might request RSMAPI to provide a memory map for local access, if supported by the interconnect. If memory mapping is not supported, the application can use memory access primitives provided by RSMAPI.

The RSMAPI provides a mechanism to support remote access error detection and to resolve write-order memory model issues. This mechanism is called a barrier.

RSMAPI provides a notification mechanism to synchronize local and remote accesses. An export process can call a function to block while an import process finishes a data write operation. When the import process finishes writing, the process unblocks the export process by calling a signal function. Once unblocked, the export process processes the data.