発行操作によって、相互接続上にあるほかのノードがメモリーセグメントをインポートできます。エクスポートセグメントは複数の相互接続アダプタ上で発行できます。
セグメント ID は承認された範囲または 0 を指定した場合、有効なセグメント ID が RSMAPI フレームワークによって生成され、返されます。
セグメントアクセス制御リストはノード ID とアクセス権のペアから構成されます。リストでは、指定したノード ID ごとに、Solaris のファイルアクセス権とともに所有者、グループ、およびその他のユーザーの 3 つの 8 進数によって関連する読み取り権と書き込み権が示されます。アクセス制御リストでは、各 8 進数は次の値を持ちます。
書き込みアクセス
読み取り専用アクセス
読み取りおよび書き込みアクセス
たとえば、0624 というアクセス権は次のことを意味します。
エクスポータと同じ uid を持つインポータは、読み取りと書き込み両方のアクセス権を持つ
エクスポータと同じ gid を持つインポータは、書き込みアクセス権だけを持つ
その他すべてのインポータは、読み取り専用アクセス権だけを持つ
アクセス制御リストが提供される場合、リストに含まれないノードはセグメントをインポートできません。ただし、アクセス制御リストが NULL の場合は、すべてのノードがセグメントをインポートできます。すべてのノードのアクセス権は、エクスポートするプロセス (エクスポータ) の所有者、グループ、およびその他のファイル作成権と同じになります。
ノードアプリケーションはセグメント識別子の割り当てを管理し、エクスポートするノード上で一意性を保証する義務があります。
typedef struct { rsm_node_id_t ae_node; /* 資源へのアクセスを許可されたリモートノード ID */ rsm_permission_t ae_permissions; /* 許可されたアクセスモード */ }rsmapi_access_entry_t;.
戻り値:成功した場合、0 を返します。そうでない場合、エラー値を返します。
セグメントハンドルが無効です。
セグメントはすでに公開されています。
アクセス制御リストが無効です。
セグメント ID が無効です。
セグメント ID は使用中です。
セグメント ID は予約されています。
セグメントの作成者ではありません。
アドレスが不正です。
メモリーが不足しています。
リソースが不足しています。
認可されたセグメント ID の範囲:
0
0x0FFFFF
0x100000
0x1FFFFF
0x200000
0x2FFFFF
0x300000
0x3FFFFF
0x400000
0x4FFFFF
次に示す範囲は、公開値が 0 の場合、システムによる割り当て用に予約されています。
0x80000000
0xFFFFFFF
この関数は、ノードのアクセス (制御) リストとセグメントのアクセスモードを新たに確立します。これらの変更は将来のインポート呼び出しだけに影響し、すでに許可されているインポート要求は取り消しません。
戻り値:成功した場合、0 を返します。そうでない場合、エラー値を返します。
セグメントハンドルが無効です。
セグメントが公開されていません。
アクセス制御リストが無効です。
セグメントの作成者ではありません。
メモリーが不足しています。
リソースが不足しています。
シグナルによって操作が割り込まれました。
戻り値:成功した場合、0 を返します。そうでない場合、エラー値を返します。
セグメントハンドルが無効です。
セグメントが公開されていません。
セグメントの作成者ではありません。
シグナルによって操作が割り込まれました。