プログラミングインタフェース

メモリーセグメントの作成と破壊

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 引数はビットマスクで、次の操作を有効にします。


注 –

RSM_LOCK_OPS フラグは RSMAPI の初期リリースには含まれません。


戻り値: 成功した場合、0 を返します。そうでない場合、エラー値を返します。

RSMERR_BAD_CTLR_HNDL

コントローラハンドルが無効です

RSMERR_CTLR_NOT_PRESENT

コントローラが存在しません

RSMERR_BAD_SEG_HNDL

セグメントハンドルが無効です

RSMERR_BAD_LENGTH

コントローラの長さが 0 あるいは、制限を超えています

RSMERR_BAD_ADDR

アドレスが無効です

RSMERR_PERM_DENIED

Permission 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 は使用中です