[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