私はLinuxドライバの開発が初めてで、他の初心者がカーネルの開発を始めるのに役立つと思う概念的な質問があります。
私は「Linux Device Drivers」という本を読んでいて、第1章を終えました。第3巻。これまで、私はフォルダ内のファイルにopen
、close
およびその他のコマンドを実行して、/dev
ユーザースペースがカーネル機能にアクセスできることを確認しました。
制御を共有するもう1つの方法はファイルを介することです/sys
。ここでファイルの読み書きはsys
ドライバに渡すことができます。
各アプローチのユースケースが何であるかを知りたいです。同じことを行う2つの方法ですか?他に関連して一つに制限はありますか?誰かが他のものよりも役に立つかもしれないいくつかの実際のケースを共有できますか?
私はここで別の質問を読んで説明dev
しますsys
。これは役に立ちますが、2つの違いと用途をより深く理解したいと思います。
ベストアンサー1
おおよその:
/dev
初期のUnixシステムでカーネルと対話する唯一の方法であったデバイスノードを含みます。その種類は二つありますが、詰まった機器と特徴機器。これらのAPIは、ブロックベースのI / O(一種のディスク)または文字ベースのI / O(シリアルポートなど)を許可するのに適しています。
/sys
(および/proc
)は後で追加され、おそらく次の影響を受けた可能性があります。計画9オペレーティングシステム読み込み時にカーネルモジュールの内部状態を記述または書き込むときに内部状態を設定するテキストは、ファイルエントリに含まれる完全なディレクトリサブツリーを提供します。
したがって、一般的なアプリケーションは次のようになります。
特定のストレージデバイス用のカーネルドライバを作成しますか?ノードを使用して/dev
デバイス自体にアクセスする方法、またはアイテムを使用して/sys
ストレージ/proc
にアクセスする方法を微調整します。