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

Re: CASSIOPEIA report



鈴木(康)です。
<200005161114.UAA26803@shin1.sm.sony.co.jp>の記事において
takemura@netbsd.orgさんは書きました。

  | 
  |  > config_hook_call では、イベントを登録するだけにして、
  |  > config_hook_intr で 実際の call 動作をさせる。
  |  > 
  |  > おおきなメリットがあるわけじゃないんですが...
  |  > 
  |  > config_hook の関数群が動作する割り込みレベルを一定にすることができる。
  |  > 
  |  > ので、なにかと便利だと思うんですが いかがでしょうか?
  | 
  | software interrupt がどういう context で実行されるのか良くわかって
  | いませんが、

NetBSD/hpcmips では、hardware interrupt と同じ context で実行されます。
が、hardware 割り込みの マスクが全くない状態です。

このレベルで実行される割り込み処理は、優先度が低く
すべての hardware interrupt を受け付けることができるもの
と(たぶん)定義されています。

伝統的に timer 処理 と network の処理がこのレベルで動くようです。

割り込みの レベルが重要なのは、いったん (例えば)splimp の実行レベルで
動かし出した intr ルーチンの レベルを splimp より下げることが
できないことに起因します。

  --- レベルを下げると 同種の intr ルーチン が追い越す可能性がある。

したがって、splnet で排他制御されているリソースは、
splimp の実行レベルの intr ルーチンからは 排他制御できないことになります。

  --- splimp で動く割り込み処理は、splnet で動く処理を interrupt
      する。

以上の理由から、タイマー処理は わざわざ software interrupt で実装
されています。

config_hook に関しても、いまの仕様だと splhi 以外で排他制御している
リソースは扱えないという制限があるのだと思います。

# その制限が重要かどうかは分かりませんので、おおきなメリットがある
# とまでは書けませんでした。

  | config_hook を一律にこの仕組みにしてしまうのはちょっと
  | 問題があります。
  | やるとすれば、従来通りの動作と、あとで実行する動作を選択できる
  | ようにするということになります。config_hook_post() とか。
  | あとで考えてみます。

よろしくお願いします。

--
					鈴木 康司 @NECソリューションズ
					suz@hpc.bs1.fc.nec.co.jp
					TEL 042-333-6465