Solaris2.x NexusドライバとLeafドライバの説明について
Solaris2.x NexusドライバとLeafドライバの説明について
Solaris2.xのデバイスツリーは次の様な構成になっています。
Nexusドライバ Leafドライバ root ——+——- obio ——-+——- ZS(Serial,Mouse,Keyboard) | +——- Floppy | +——- sbus ——-+——- esp(SCSI) | +——- le(Ethernet) | +——- cgsix(GX) | +——- vmedvma | +——- vmedma | +——- vmefdma | +——- VME ——–+——- vmeplus +——- vmectl +——- pvme304 +——- pvme311 |
Nexusドライバーの役割
Nexusドライバーはバスを制御する為に存在するドライバーです。
(Sbus,SCSI,VMEbus等のドライバーがこれに該当します。)
バス上で使用するメモリーの設定、割り込みの設定等を受け持ちます。
また、バスに継る周辺装置ドライバーの組み込むにも係わります。
Leafドライバーの役割
LeafドライバーはNexusドライバーの機能を使用して各周辺装置を
制御するドライバーとして動作します。
Leafドライバーの組み込み手順について
実際のシーケンスは次の様になっています。
1. システムが/kernel/drv /usr/kernel/drvディレクトリィ内のxxx.conf
ファイルをサーチします。
2. Leafドライバーがどのバス(class)に接続されるか調べます。
xxx.confファイル中のclass=""行に接続するバスのNexus
ドライバが指定されます。
3. Nexusドライバーを組み込みます。
4. Leafドライバーの組み込みを行います。
実際にはNexusドライバーからLeafドライバーをサーチして
Leafドライバーを呼び出します。
そして、Leafドライバーのprobeルーチンが動作し
デバイスの存在が確認されると実際にドライバが組み込まれます。
このように、Solaris2.xのLeafドライバーはローダブルモジュールに対応しており
必要外のデバイスドライバーは、組み込まなくなっております。