Linuxドライバーの開発を始めたばかりですが、概念的な質問があります。これは、他の新規参入者もカーネル開発に役立つと思います。
Linuxデバイスドライバーの本を読んでいて、Chまで完了しました。本の3。これまで、open
を発行することでそれを見てきました 、close
および/dev
内のファイルに対するその他のコマンド フォルダ、ユーザースペースはカーネル機能にアクセスできます。
制御を共有するもう1つの方法は、/sys
内のファイルを使用することです。 、sys
からの読み取りまたは書き込み ファイルはドライバーと通信できます。
各メソッドのユースケースを知りたいですか?それらは同じタスクへの2つのアプローチですか?ある人が別の人に制限はありますか?誰かが、一方が他方よりも役立つかもしれない実際的な例を共有できますか?
私はここで他の質問を読みました、そして彼らはdev
を説明します およびsys
。それは役に立ちますが、両方がどのように異なり、どのように使用されるべきかについて、もう少し深い知識を得たいと思いました。
承認された回答:
非常に大まかに:
/dev
以前のUnixシステムではカーネルと対話する唯一の方法であったデバイスノードが含まれています。これらには、ブロックの2つのタイプがあります。 デバイスと文字 デバイス。対応するAPIは、ブロックベースのI / O(ある種のディスク)または文字ベースのI / O(シリアルポートなど)を可能にするものを対象としています。
/sys
(および/proc
)は後で追加されました。おそらくPlan9OSに触発されたものです。これらは完全なディレクトリサブツリーを提供し、これらのサブツリーのファイルエントリには、読み取り時のカーネルモジュールの内部状態を説明するテキストが含まれ、書き込み時の内部状態を設定します。
したがって、一般的なアプリケーションは次のようになります。
ある種のストレージデバイス用のカーネルドライバを作成したいですか? /dev
を使用する デバイス自体にアクセスするノード、および/sys
(または/proc
)ストレージへのアクセス方法を微調整するためのエントリ。