Index Index for
Section 3
Index Alphabetical
listing for I
Bottom of page 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 Index for
Section 3
Index Alphabetical
listing for I
Top of page Top of
page