[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: CASSIOPEIA report



>   | c. cpu_intr() で、全部の割り込みを一度に処理するのではなく、
>   |    一回の cpu_intr() では、最も優先順位の高い、割り込み level を
>   |    一度処理するだけで抜ける。
>   |    (これを行わずに b. を実現すると、負荷が高い時に、多重割り込みが
>   |     かかりすぎて、kernel stack overflow の危険があると思います。)
> 
> IPL を high level から、段々にレベルを落としていくようにさえしておけば、
> _spllower() する レベル 以上は多重割り込みされないと思います。

ふうむ、_spllower() すると言っても ipending 的に許されているレベルまで
しか落ちないわけですから、割り込みが多重になるたびに、ipending 的に可能な
割り込み優先度は、最低でも一つずつ上昇していきますね。

確かに杞憂だった気がします。失礼しました。_o_

>   | 良く分かってませんが、こっちの問題はないんじゃないかな。
>   | 割り込みハンドラの中でそれなりにアクションを起こさない限り、
>   | 割り込みはかかったままになっているんじゃないでしょうか?
> 
> 同じく良く分かってませんが、
> 
> software interrupt の cause bit は 明示的に落としているんですが、
> hardware interrupt の cause bit を 落としているとこが見つからなかったので、
> 自動的に消滅するのかなと思いました。

レベル割り込みの場合は、割り込みソースレジスタを読むんだ時に、
割り込み要求が消滅するという仕組みになっているのもあったと
思うんですが、どうなんでしょう?
--
soda