[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[pbsd-mg2] Plaform ID
| 簡単にいうと、bootloader で platform ID
| というのをセットする(ユーザがリスト
| から選択するなど)と kernel の global 変数で platid というのがセットされ、
| kernel 内で、if (platid_match(&platid, NEC_MCR_300)) { ... } などと
| 書けるという単純なしくみです。config でも使用できます。
| hpcmips/sys/arch/hpcmips/hpcmips/platid*.* で実装されています。
| probe が困難なデバイスを統一的に扱うために作りました。
まだ、マシン自体の構成がわかってないんであれなんですが...
単一のカーネルイメージで、できるだけ多くのplatformに対応したいためのものでしょうか?
platform IDなしで、対応する場合
MCR300
MCR500
のような個別ごとのconfigurationファイルで別々のカーネルを用意すれば解決できる。
これは、あってますか?
と、具体的にprobeが困難な事例を知りたいです。マシンがわかってないので
ソース見た想像なんですが、vrip/vrgiuは自分の子デバイスがついているかど
うかがわからないバスデバイスなので、config_searchする。でも、全マシン
用のconfigurationファイルのまま、matchを流すと、matchルーチンでの副作
用が問題あるということでしょうか?
これが例えば、bus_spaceであれば、struct platform platformに
void (*bus_init) __P((void));
とか加えて、platformごとに、アクセスしていい場所だけのまばらなextent
をとるようにしてmatchのルーチンでは、mapできなかったから、return 0とい
うのはだめ?
と、数字じゃないlocatorを使うにはconfig(8)自体でサポートするのが筋か
という気がするんですが...
---
UCHIYAMA Yasushi
uch@nop.or.jp