编程接口指南

创建和销毁内存段

使用 rsm_memseg_export_create 建立新内存段可以在创建时将物理内存与该段进行关联。此操作将返回新内存段的导出端内存段句柄。段在创建进程的生命周期内一直存在,或者在使用 rsm_memseg_export_destroy 销毁该段之前一直存在。


注 –

如果在导入端断开连接之前执行销毁操作,则会强制断开连接。


创建段

int rsm_memseg_export_create(rsmapi_controller_handle_t controller, rsm_memseg_export_handle_t *memseg, void *vaddr, size_t size, uint_t flags);

此函数可用于创建段句柄。创建段句柄之后,段句柄会绑定到指定的虚拟地址范围 [vaddr..vaddr+size]。此范围必须有效并基于控制器的 alignment 属性对齐。flags 参数是位掩码,可用于执行以下操作:


注 –

RSMAPI 的初始发行版中不包括 RSM_LOCK_OPS 标志。


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

RSMERR_BAD_CTLR_HNDL

控制器句柄无效

RSMERR_CTLR_NOT_PRESENT

控制器不存在

RSMERR_BAD_SEG_HNDL

段句柄无效

RSMERR_BAD_LENGTH

长度为零或长度超出控制器限制

RSMERR_BAD_ADDR

地址无效

RSMERR_PERM_DENIED

权限被拒绝

RSMERR_INSUFFICIENT_MEM

内存不足

RSMERR_INSUFFICIENT_RESOURCES

资源不足

RSMERR_BAD_MEM_ALIGNMENT

地址未在页边界上对齐

RSMERR_INTERRUPTED

操作被信号中断

销毁段

int rsm_memseg_export_destroy(rsm_memseg_export_handle_t memseg);

此函数可用于解除分配段及其可用资源。将强制断开与所有导入进程的连接。

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

RSMERR_BAD_SEG_HNDL

段句柄无效

RSMERR_POLLFD_IN_USE

pollfd 正在使用