 |
Index for Section 3 |
|
 |
Alphabetical listing for I |
|
 |
Bottom of page |
|
imc(3)
NAME
imc - Introduction to the Memory Channel Application Programming Interface
(API)
DESCRIPTION
The Memory Channel Application Programming Interface (API) library provides
user space access to the Memory Channel services available in the
TruCluster environment.
Memory Channel API functions provide the following services:
· Memory Channel API cluster information.
· Access to Memory Channel address space.
· A clusterwide lock system.
· Memory Channel API cluster signals.
· Memory Channel API management.
For more information, see the function reference pages, and the Cluster
Highly Available Applications manual.
Note
Programs that call any Memory Channel API function should include
the imc.h header file, as follows:
#include <sys/imc.h>
Applications should be linked using the following switch:
-limc
Memory Channel API Commands
The following Memory Channel API library commands are available:
imc_init(1) Initializes and configures the Memory Channel API library on
the current host.
imcs(1) Reports on Memory Channel status.
Memory Channel API Functions
Memory Channel API functions can be grouped into categories. An
introduction to each category and a brief description of each function is
given below.
Memory Channel API cluster Information
A Memory Channel API cluster is formed when a number of hosts are
physically connected by a Memory Channel interconnect, and when each host
has invoked the imc_init(1) command.
Independent Memory Channel interconnects, or physical rails, can be
configured as logical rails, in one of the following styles:
· Single-rail
This configuration has a one-to-one relationship between a physical
rail and a logical rail, with no failover properties.
· Failover pair
In this configuration, a logical rail consists of two physical rails,
with one physical rail inactive and available on standby in case the
active physical rail fails. Failover is transparent to the user.
The following functions provide information about the Memory Channel API
cluster:
imc_getclusterinfo(3)
Gets information about the hosts and the logical rails that
form a Memory Channel API cluster.
imc_wait_cluster_event(3)
Blocks the caller until a Memory Channel API cluster event
occurs. Memory Channel API cluster events include hosts
entering or leaving the Memory Channel API cluster, and
logical rails coming on line or going off line.
Accessing Memory Channel Address Space
A process accesses Memory Channel address space by mapping a region of the
address space into its own process virtual address space. This is done by
allocating a region and then attaching the allocated region to the virtual
address space of a process.
By attaching the same region to the virtual address space of two different
processes, it is possible for one process to write data into the virtual
address space of the other process using standard store and load
instructions.
The following functions are available to allow access to Memory Channel
address space:
imc_asalloc(3)
Allocates a region of Memory Channel address space on a
specified logical rail.
imc_asattach(3)
Attaches a region of Memory Channel address space to the
virtual address space of a process.
imc_asattach_ptp(3)
Attaches in point-to-point mode a region of Memory Channel
address space to the virtual address space of a process.
imc_bcopy(3) Provides an efficient way of copying data into Memory Channel
address space.
imc_asdetach(3)
Detaches a region of Memory Channel address space from the
virtual address space of the calling process.
imc_asdealloc(3)
Deallocates a region of Memory Channel address space.
The Memory Channel hardware takes care of all error detection. The Memory
Channel API provides the following routines to access the error state of
the hardware:
imc_ckerrcnt_mr(3)
Checks for the existence of outstanding errors on a specified
logical rail on Memory Channel hosts.
imc_rderrcnt_mr(3)
Reads the clusterwide error count for a specified logical
rail.
Clusterwide Lock System
The Memory Channel API provides a clusterwide lock facility. Locks are
allocated in sets; they are not allocated individually. Clusterwide locks
are managed using the following functions:
imc_lkalloc(3)
Creates a lock set.
imc_lkacquire(3)
Acquires a lock from a lock set.
imc_lkrelease(3)
Releases a lock from a lock set.
imc_lkdealloc(3)
Deallocates a lock set.
Memory Channel API Cluster Signals
The Memory Channel API allows processes to send signals to processes
executing on other hosts in the Memory Channel API cluster, using the
following function:
imc_kill(3) Sends a signal to a running process.
Memory Channel API Management
The following Memory Channel API management functions are available:
imc_api_init(3)
Initializes the Memory Channel API library.
Note
The imc_api_init(3) function must be called before any other
Memory Channel API function is called.
imc_perror(3) Prints a message that explains a Memory Channel function
error.
RELATED INFORMATION
Cluster Highly Available Applications
 |
Index for Section 3 |
|
 |
Alphabetical listing for I |
|
 |
Top of page |
|