Oracle® Solaris 11.2 デバイスドライバの記述

印刷ビューの終了

更新: 2014 年 9 月
 
 

デバイス構成の概念

カーネルデバイスツリー内のノードごとに、システムは、ノード名と compatible プロパティーに基づいてそのノードのドライバを選択します (Binding a Driver to a Deviceを参照)。複数のデバイスノードに同じドライバがバインドされる可能性があります。ドライバは、システムによって割り当てられたインスタンス番号により、異なるノードを区別できます。

デバイスノードに対してドライバが選択されたあと、そのデバイスがシステム上に存在するかどうかを判定するために、そのドライバの probe (9E) エントリポイントが呼び出されます。probe() が成功した場合は、デバイスを設定および管理するために、そのドライバの attach(9E) エントリポイントが呼び出されます。デバイスを開くことができるのは、attach() が成功を返した場合のみです (attach() Entry Pointを参照)。

デバイスは、システムメモリーリソースを節約するため、またはシステムの実行中にそのデバイスを削除できるようにするために、構成解除される可能性があります。デバイスを構成解除できるようにするために、システムはまず、そのデバイスインスタンスが参照されているかどうかをチェックします。このチェックでは、そのドライバのみが認識している情報を取得するために、ドライバの getinfo (9E) エントリポイントを呼び出します (getinfo() Entry Pointを参照)。そのデバイスインスタンスが参照されていない場合は、そのデバイスを構成解除するために、ドライバの detach (9E) ルーチンが呼び出されます (detach() Entry Pointを参照)。

まとめると、各ドライバは、デバイス構成のためにカーネルによって使用される次のエントリポイントを定義する必要があります。

attach()detach()、および getinfo() は必須であることに注意してください。probe() は、自身を識別できないデバイスに対してのみ必要です。自身を識別できるデバイスの場合は、明示的な probe() ルーチンを提供するか、または probe() エントリポイントの dev_ops 構造体で nulldev(9F) を指定できます。