他の1つのドライバがこれらすべてのハードウェアをどのように制御しますか?

他の1つのドライバがこれらすべてのハードウェアをどのように制御しますか?

私はドライバの開発を学んでいますが、私が読んだ本によれば、同じタイプのすべてのLinuxデバイスは同じキー番号を持ち、同じドライバによって制御されます。たとえば、コンピュータに複数のUART物理ポートがある場合、これらのデバイスはすべて同じメジャー番号を持ちますが、ドライバは異なるマイナー番号を異なる物理ポートとして解釈します。私の質問はこれによると協会他のデバイス(主要番号10)がたくさんあります。私のコンピュータでこれを確認しました。だから私の質問は、あるドライバがそのすべてのデバイスをどのように制御できるかということです。その他デバイス(ほとんどが仮想です)。デバイスを開くと、カーネルがすでにその主要なデバイス番号を登録しており、マイナーデバイス番号に基づいてカーネルによって登録されたドライバがそのサブデバイス番号を担当するドライバ(私が使用したドライバ)を呼び出すリダイレクトレベルはありますか?作成)、または登録されたドライバのデバイスファイルを開くと、直接呼び出されます。

ベストアンサー1

はい、ある程度間接的な部分があります。miscドライバーそのジョブのすべてのデバイスノードのドライバーを登録し、登録されたドライバーのリストを保持します。デバイスが開かれると、最初のハンドラはmisc_openリスト内の一致するドライバを見つけて制御を渡します。

おすすめ記事