(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)