Motr  M0
LNet Transport Device Functional Specification

Overview

The LNet Transport Device is a layer between the User LNet Core Transport and the Kernel LNet Core Transport. It provides user-space access to the LNet Kernel Core Transport. The API is presented as a set of ioctl requests that are handled by the LNet Transport Device Driver. Each ioctl request takes an input parameter, which is a pointer to a shared object or a data structure containing the parameters required by the LNet Kernel Core Transport. The device layer handles mapping shared data structures from user space into kernel space and tracks each such shared data structure. The device layer uses APIs in the LNet Kernel Core layer to implement the ioctl request functionality. When requested, the device layer unmaps shared data structures. The device layer also cleans up shared data structures when the user space releases the device prematurely.

Data Structures

The API uses the following data structures to represent the parameters to the various ioctl requests. Note that there is not a 1:1 correspondence between these data structures and the operations in the LNet Transport Core Interface. Several ioctl requests take the same parameters and use the same data structure to pass those parameters. Some ioctl requests require only a single identifier as a parameters, and thus require no special parameter data structure. A few Core interfaces require no ioctl request, because they operate directly on shared data structures in user space.

The API includes several operations whose side effect is to pin or unpin shared data corresponding to the following data structures defined in the LNet Transport Core Interface.

The API tracks its references to these objects using corresponding objects defined in the LNet Transport Core Kernel Private Interface.

The API accesses kernel core functionality indirectly through the operations on the nlx_kcore_ops structure, nlx_kcore_domain::kd_drv_ops.

See also
Detailed Functional Specification

Subroutines

Subroutines are provided to initialize and finalize the device driver.

All other subroutines are internal to the device driver.

See also
Detailed Functional Specification

Ioctl Requests

The device driver recognizes the following ioctl requests.

See also
Detailed Functional Specification