cl - CrayLink Driver
The cl module provides a raw device interface to XPC (cross partition
communication). These devices take advantage of the XPC rendezvous
capabilities to allow DMA transfers directly from the source to the
destination without any intermediate copying if possible. The DMA
operation is done using the BTE which supports transfers of multiple
cache lines on cache line boundaries. Therefore, in order to avoid the
overhead of the cl driver copying data to an intermediate buffer, the
source and destination must be 128 byte aligned. If the transfer is not
a multiple of 128 bytes, only the last part of the cache line will be
copied through an intermediate buffer.
The cross partition raw devices are located in the directory
<remote_partition> is the partition ID to which a device should be
opened, and the <device_number> specifies which of the 16 possible
devices to open. These devices appear in the hwgraph(4) the first time a
remote partition is discovered (or activated) as two digit hexadecimal
numbers. They are never removed.
Once a cl device is opened using the open(2) system call (and closed
using close(2)), the file descriptors may be used to exchanged data with
the remote partition using the read(2), write(2), and select(2) system
calls. The devices provide a byte stream type interface.
open(2), close(2), read(2), write(2), or select(2) will fail for the cl
devices and return to the calling process if one or more of the following
EIO XPC could not be established for the partition requested.
ENODEV The partition to which communication is requested no longer
ENODEV The cl raw device requested does not exist on the remote
EINTR A synchronous read or write was interrupted before
ENOTCONN The XPC channel for this raw device has been unexpectedly
EWOULDBLOCK The call would have blocked if the O_NONBLOCK flag had not
been specified to the open(2) function.
EBUSY The raw device is currently busy connecting or disconnecting
with the remote partition.
EAGAIN The XPC layer is still setting up.
ENOTSUP The partition we are trying to communicate with does not have
support for XPC.
open(2), close(2), select(2), read(2), write(2), mkpart(1m), hwgraph(4)
PPPPaaaaggggeeee 2222 [ Back ]