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

メモリーセグメントの接続と切断

セグメントへの接続

int rsm_memseg_import_connect(rsmapi_controller_handle_t controller, rsm_node_id_t node_id, rsm_memseg_id_t segment_id, rsm_permission_t perm, rsm_memseg_import_handle_t *im_memseg);

この関数は、指定されたアクセス権 perm を使用してリモートノード node_id 上にあるセグメント segment_id に接続します。セグメントに接続したあと、この関数はセグメントハンドルを返します。

引数 perm は、当該接続のインポータによって要求されるアクセスモードを指定します。接続を確立するとき、エクスポータが指定したアクセス権とインポータが使用するアクセスモード、ユーザー要求されるアクセスモードが無効な場合、接続要求は拒否されます。なお、perm 引数は次の 8 進数値に制限されます。

0400

読み取りモード

0200

書き込みモード

0600

読み取りおよび書き込みモード

指定されたコントローラは、セグメントのエクスポートに使用されるコントローラと物理的に接続されている必要があります。

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

RSMERR_BAD_CTLR_HNDL

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

RSMERR_CTLR_NOT_PRESENT

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

RSMERR_BAD_SEG_HNDL

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

RSMERR_PERM_DENIED

Permission denied

RSMERR_SEG_NOT_PUBLISHED_TO_NODE

セグメントがノードに発行されていません

RSMERR_SEG_NOT_PUBLISHED

セグメントが発行されていません

RSMERR_REMOTE_NODE_UNREACHABLE

リモートノードに到達できません

RSMERR_INTERRUPTED

接続が割り込まれました

RSMERR_INSUFFICIENT_MEM

メモリーが不足しています

RSMERR_INSUFFICIENT_RESOURCES

資源が不足しています

RSMERR_BAD_ADDR

アドレスが不正です

セグメントからの切断

int rsm_memseg_import_disconnect(rsm_memseg_import_handle_t im_memseg);

この関数はセグメントを切断します。セグメントを切断したあと、この関数はセグメントの資源を解放します。切断されたセグメントへの既存のマッピングはすべて削除されます。ハンドル im_memseg は解放されます。

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

RSMERR_BAD_SEG_HNDL

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

RSMERR_SEG_STILL_MAPPED

セグメントがマッピングされたままになっています

RSMERR_POLLFD_IN_USE

pollfd は使用中です