[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