编程接口指南

段映射

映射操作只能用于本机体系结构互连,如 Dolphin-SCI 或 NewLink。映射段可授予 CPU 内存操作访问该段的权限,从而节省了调用内存访问元语的开销。

导入段映射

int rsm_memseg_import_map(rsm_memseg_import_handle_t im_memseg, void **address, rsm_attribute_t attr, rsm_permission_t perm, off_t offset, size_t length);

此函数可用于将导入的段映射成调用方地址空间。如果指定了属性 RSM_MAP_FIXED,则此函数会在 **address 中指定的值所在位置映射段。

typedef enum {

RSM_MAP_NONE = 0x0,   /* system will choose available virtual address */

RSM_MAP_FIXED = 0x1,  /* map segment at specified virtual address */

} rsm_map_attr_t;

返回值:如果成功,则返回 0。否则返回错误值。

RSMERR_BAD_SEG_HNDL

段句柄无效

RSMERR_BAD_ADDR

地址无效

RSMERR_BAD_LENGTH

长度无效

RSMERR_BAD_OFFSET

偏移无效

RSMERR_BAD_PERMS

权限无效

RSMERR_SEG_ALREADY_MAPPED

已映射段

RSMERR_SEG_NOT_CONNECTED

未连接段

RSMERR_CONN_ABORTED

连接异常中止

RSMERR_MAP_FAILED

映射时出现错误

RSMERR_BAD_MEM_ALIGNMENT

地址未在页边界上对齐

取消映射段

int rsm_memseg_import_unmap(rsm_memseg_import_handle_t im_memseg);

此函数可用于从用户虚拟地址空间中取消映射导入的段。

返回值:如果成功,则返回 0。否则返回错误值。

RSMERR_BAD_SEG_HNDL

段句柄无效