(toppers-users 464) Re: TOPPERS/JSP の実装で教えてください。

Takayuki WAKABAYASHI takayuki @ ertl.ics.tut.ac.jp
2002年 8月 6日 (火) 14:26:06 JST


豊橋技術科学大学の若林です。

まず、参考情報としてディスパッチャに関して。

依存部のインタフェースをのぞいていると、ディスパッチャは
dispatch(_kernel_dispatch)という関数しかないように見えますが、実際には大
きく分けて3種類のディスパッチャがあります。

 ・能動的なディスパッチ - _kernel_dispatch
        待ち状態へ移行するとき, 優先度を変えたときなど
 ・受動的なディスパッチ - 割込み出入り口 (依存部)
        割込み/例外によるハンドラへのディスパッチ
 ・受動的なディスパッチ中に起こった能動的なディスパッチ
        割込みハンドラ内でのタスク起床, 資源返却など

V850依存部では、能動的なディスパッチからの復帰処理に相当するのが
dispatch_r、受動的なディスパッチからの復帰処理に相当するのがret_int (正
確には recover_from_int)、受動的なディスパッチ中に起こった能動的なディス
パッチの復帰処理がrecover_from_contextswitchに相当します
(jsp/config/v850/cpu_support.S)。それぞれ退避/復帰対象となるレジスタの本
数が異なり、能動的なディスパッチでは呼出先が保存すべきレジスタ
(Caller-saved registers)のみ、受動的なディスパッチでは、呼出元が保存すべ
きレジスタのみ(Callee-saved registers)、受動的なディスパッチ中で起こった
能動的なディスパッチでは全レジスタが対象となります。

---
システムクロックドライバのような標準的なドライバの使用をユーザに能動的に
書かせることに関してですが、私も実際のところは把握していないです。

個人的な意見ですが、特にシステムクロックドライバはuITRON4.0になってから
分離できるようになったということを考えると、ユーザが「クロックドライバを
組み込まないとカーネルクロックは供給されない」ということを把握していると
は考えにくいです (シリアルやATAなどあったりなかったりするデバイスでは問
題ないと思いますが)。
 #私は4.0から始めた新参なので...
 #先達の方のご意見をお聞きしたいところです。

---
TOPPERS/JSPも色々なプロセッサの依存部が出てきて、実装ノウハウのようなも
のが徐々に溜まってきたように思います。ですが、これらの知識がなかなかド
キュメントにできていないのが現状です。それなので今回の件は、MLで知識の共
有を行いつつ、内容を明文化して残すいい機会だと考えています。

以上 参考になれば幸いです。

--------
  わかばやし たかゆき (mailto:takayuki @ ertl.ics.tut.ac.jp)