PC Card自動検出

ハードウェアの自動検出部分を全部書き直した。
今度こそPC Cardの自動検出に対応。まずはCardBusのFireWireインターフェースの自動検出に成功した。


カード1枚がうまくいけば、後は大体うまくいく、といいな。
PCIで接続されたデバイスの検出を再帰的に行うので、PCI Expressに接続されたExpress Cardコントローラに接続されたCardBusコントローラに接続されたNIC、なんてものも検出できるはず。
なまじのハードウェア自動検出ツールより高精度で検出できるに違いない!なまじのハードウェア自動検出ツールって何だかよくわからないけど…。


この自動検出ツールはドライバをロードするだけで、X11の設定はやらないから、そこのところハードウェア自動「設定」ツールでは無い。でもNICとストレージは、ドライバをロードすれば普通に動くので問題ない。


USBの自動検出にはまだ未実装部分がある。USBはPCIと違ってチップからアナウンスされる情報が多いので、ヒントが多い分、いろいろできそう。
PCIは主にVendor ID、Device ID、Class ID、Subsystem Vendor ID、Subsystem Device IDしか手がかりは無い。USBはPCIと同じ情報の他に、Manufacturer(チップのベンダー名。文字列)、Product(チップの製品名。文字列)がある。文字列が入るので、IDからの対応でドライバ名が分からなくても、ある程度推測できる。
それにカーネル側もUSBの方がヒントが多い。PCIはVendor ID+Device IDからのドライバ名の対応だけだが、USBはVendor ID、Product ID、Class ID、Device SubClass、Interface Class、Interface Protocolの情報と、match flag(各IDとドライバ名をどのようにマッチングさせるか)の情報がある。match flagの意味等などよくわからない。カーネルのソースを読んでみないと。