BHハンドラ

BHハンドラもシステム上に一つしか存在できない。do_bottom_half関数でBHハンドラを起動する前にチェックを行っている。

また、BHハンドラと割り込みハンドラ、割り込み禁止区間の関係も微妙である。あまり凝った仕掛けを入れるのはあきらめ、大雑把な排他としたようだ。

  • BHハンドラの起動条件。以下の条件が満たされないときは、 BHハンドラの起動をあきらめる。次にdo_bottom_half関数 が呼び出された時点でまとめて処理する。
    • 他のCPU上でBHハンドラが動いていないこと
    • 他のCPU上で割り込みハンドラが動いていないこと
    • 他のCPUが割り込み禁止区間を走行していないこと
  • 割り込みハンドラの起動条件。 カレントのCPU上でBHハンドラ、割り込みハンドラが動いている時は、 単にその上に割り込んで起動してしまう。(ハンドラのネスト)
    • 他のCPUが割り込み禁止区間を走行していないこと
  • 割り込み禁止区間走行条件。以下の条件が揃うまでの間、 ビジーウェイトすることになる。
    • 他のCPUが割り込み禁止区間を走行していないこと
    • 他のCPU上で割り込みハンドラを実行していないこと
    • 他のCPU上でBHハンドラを実行していないこと

(NIS)HirokazuTakahashi
2000年06月11日 (日) 22時29分57秒 JST
1