呼出し制限 (restrict)

概要

呼出し制限 (restrict) は、受け口の関数への結合を個別に制御する目的で用 いられます。TOPPERS/HRP3 カーネルのアクセス許可ベクタに相当する機能を、 ユーザー定義の関数にも可能とするものです。

呼出し制限は、ドメインプラグインにより生成されて、リージョン間の結合に 挿入されるセルにより実現されるもので、動的な検査を行うことが想定されます。 従って TECS ジェネレータ本体では、呼出し制限は実現しません。保護機能を 備えた OS (例えば TOPPERS/HRP3) で用いられることが想定されています。

備考

将来的には、TOPPERS/ASP3 のように保護機能がないカーネルでも、呼出し 制限が行われることが想定されます。 この場合、例えば、受け口スケルトン関数を結合ごとに分けて、エラーを返す 方法が考えられます。

文法

呼出し制限は、セルの指定子として記述します。 受け口関数全体を指定する記述方法と、受け口関数を個別に指定する記述方法があります。

[restrict{eEntry={rRegion1,rRegion2},   //  受け口全体を指定する
 restrict{eEntry.func1={rRegion3}]      //  受け口関数を指定する
cell tCelltype Cell {
    attrirubte = 1;
};

受け口または受け口関数に対してアクセス制限がなされている受け口について のみ、アクセス制限がなされているものとみなされます。

'{', '}' に囲んで、リージョンのリストを記述します。 リージョンリスト内の各リージョンは、、セルの名前有効範囲(スコープ)に含まれていて参照可能でなければなりません。 指定されたリージョンが同じドメインに属する場合、無視されます(TECS ジェネレータは警告する)。

備考

名前有効範囲(スコープ)に含まれていて参照可能という仕様により、他の ノードに属するドメインへの参照許可を与えることができない。

呼び元のセルは、上記のリージョンリスト内のリージョン、または、その子リージョンに属している場合、指定された受け口または受け口関数を呼び出し可能と判定します。

なお、リージョン間のアクセス制限も適用されるので、呼出し可能となるためには、両方が許可される必要があります。