グローバル名データ管理機能は、 プロセス間で共有的に使用されるデータを任意の名前により生成する機能、 および生成された名前によるデータの参照機能を提供している。 このように名前付けられて生成された共有データをグローバル名データと呼ぶ。
生成されるデータは 1 つの 32 ビットデータ ( W ) であり、
データに付けられる名前は最大 8 文字である。
名前としては通常、
文字コードとして意味のあるものが使用されるが特に制限はなく、
TNULL(0)
までの最大 8 文字分 (16 バイト )
の任意のデータが名前とされる。
生成されたグローバル名データは、 すべてのプロセスから参照 / 変更可能である。
グローバル名データとしては、 生成 / 変更したプロセスの存在とは無関係に存在し続けるものと、 生成 / 変更したプロセスが終了した場合に自動的に削除されるものの 2 種類があり、 グローバル名データの生成/変更時に指定できる。 前者の場合はグローバル名データが不要となった時点で明示的に削除する必要がある。
この機能は、 主にある種のデータを不特定多数のプロセスから参照可能とするために使用され、 例えば、以下に示すようなデータを対応する固定的な名前により生成し、 参照することが考えられる。
#define N_CREATE 0x0000 /* グローバル名データの新規生成 */ #define N_MODIFY 0x0001 /* グローバル名データの変更 */ #define N_FORCE 0x0002 /* グローバル名データの強制生成 */
|
WERR cre_nam(TC* name, W data, W opt)
TC* name 対象グローバル名(先頭8文字(16バイト)までが有効) W data 登録するデータ W opt グローバル名属性 ( N_CREATE ‖ N_MODIFY ‖ N_FORCE ) | [ DELEXIT ]
N_CREATE
:
指定した名前のグローバル名データが存在していない場合に生成する (すでに存在している場合はエラー)。
N_MODIFY
:
指定した名前のグローバル名データが存在している場合にそのデータを変更する (存在していない場合はエラー)。
N_FORCE
:
指定した名前のグローバル名データが存在していない場合は新規に生成し、 すでに存在している場合はそのデータを変更する。
DELEXIT
:
生成したプロセス、
または最後にデータを変更したプロセスの終了時にグローバル名データを自動削除する。
既に他のプロセスから DELEXIT
指定が行なわれていた場合でも、
DELEXIT
指定により本システムコールを最後に実行したプロセスが対象となる。
=0 正常 <0 エラー(エラーコード)
name
で指定した名前のグローバル名データを生成または変更する。
ER_ADR : アドレス(name)のアクセスは許されていない。 ER_EXS : 名前(name)は既に存在している(N_CREATEの時)。 ER_NOEXS : 名前(name)は存在していない(N_MODIFYの時)。 ER_NOSPC : システムのメモリ領域が不足した。 ER_PAR : パラメータが不正である(optが不正,nameが空)。
|
ERR del_nam(TC* name)
TC* name 対象グローバル名(先頭8文字(16バイト)までが有効)
=0 正常 <0 エラー(エラーコード)
name
で指定したグローバル名データを削除する。
ER_ADR : アドレス(name)のアクセスは許されていない。 ER_NOEXS : 名前(name)は存在していない。 ER_PAR : パラメータが不正である(nameが空)。
|
ERR get_nam(TC* name, W* data)
TC* name 対象グローバル名(先頭8文字(16バイト)までが有効) W* data 取得データ格納領域
=0 正常 <0 エラー(エラーコード)
name
で指定したグローバル名データを取得する。
ER_ADR : アドレス(name,data)のアクセスは許されていない。 ER_NOEXS : 名前(name)は存在していない。 ER_PAR : パラメータが不正である(nameが空)。