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

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

セグメントへの接続

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

アクセス権がありません。

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