(toppers-users 1949) Re: sns_locとloc_intについて
TAKADA Hiroaki
hiro @ ertl.jp
2005年 3月 11日 (金) 17:47:38 JST
酔漢様
> 割り込みロック機能について質問があります。
>
> 質問1 :
> PDIC機能ガイドラインで規定されているloc_int()関数を使って割り込みをロッ
> クした場合、ITRON4のsns_loc()関数はロック状態であると返すべきでしょう
> か、それともロック解除状態であると返すべきでしょうか。
これは未定義です。以前に、どなたか(今井さん?)から問題提起いただいた
気がしますが、正直なところ深く考えていません。
直感的には、どちらかを返す、と決めると、プロセッサによって、LOC_INT や
loc_cpu のオーバヘッドを増やしてしまうおそれがあると思います(ちゃんと
確かめたわけではないです)。
例えば、
> 私見ですが、loc_int()はOSに依存しない実装を意識してはいるものの、loc_cpu
> の機能強化版と考えてsns_locは「ロック状態」と返すべきだとかんがえます。
のように決めると、CPUロック状態を表す変数を用いている実装では、LOC_INT
でもその変数を設定しなければならず、余計なオーバヘッドを生じるように思
えます。
> 現実問題としてloc_int()による割り込みロック領域はきわめて短いはずなの
> で、その中でsns_loc()が使用されるというのは病的だろうとは思います。しか
> しながら、設計思想としてどうなのかを知っておきたいので質問しました。
そうですね。割込みロック中に sns_loc が使用されることは考えたくないで
すが、割込みロック中にCPU例外が発生し、CPU例外ハンドラの中で sns_loc
される状況は考えなくてはなりません。
この状況で、どういうリカバリが可能かを検討すると、sns_loc が何を返すべ
きかという結論が出そうな気がします。
> 質問:2
> loc_int状態でloc_cpu() / unl_cpu() を実行した場合、TOPPERS/JSPは正しく動
> 作すべきでしょうか。それともそのような場合は無視してもかまいませんでしょ
> うか。
基本的には無視してよいと思いますが、上と同様に、LOC_INT した状態で動作
したCPU例外ハンドラのことを考えなくてはなりません。
高田広章
名古屋大学