Ubuntu 12.04 を実行していますが、実行時に表示されるすべての項目は、実際にはマシンに接続されている (または接続できる) すべてのデバイス/ハードウェア コンポーネントのデバイス ドライバーであると想定しています。ls /dev
これは正しいです?そうでない場合、Linux はすべてのデバイス ドライバーをどこに保存しますか?
C で書かれたドライバは何ですか? C++? アセンブラ?デバイス ドライバー開発者が使用する最新の IDE/技術スタックは何ですか?
Ubuntu 12.04 を実行していますが、実行時に表示されるすべての項目は、実際にはマシンに接続されている (または接続できる) すべてのデバイス/ハードウェア コンポーネントのデバイス ドライバーであると想定しています。ls /dev
これは正しいです?そうでない場合、Linux はすべてのデバイス ドライバーをどこに保存しますか?
C で書かれたドライバは何ですか? C++? アセンブラ?デバイス ドライバー開発者が使用する最新の IDE/技術スタックは何ですか?
いいえ、あなたは正しくありません。/dev
デバイスドライバを表す特別なデバイスファイルでいっぱいのフォルダです。したがって、何かをするとき/dev/sda
は、SATAドライバーのファイルではなく、ロードされているSATAドライバーへのインターフェイスを使用しています。デバイスファイルは、ドライバーがデバイスをユーザースペースに公開する方法です(ドライバーを呼び出すシステムコールとともに)。
通常、ドライバはに格納され/lib/modules
ます。
ワークロードを3倍にしてアセンブリに書き込む場合を除いて、ドライバーはCで記述されます。技術的および政治的な理由から、Linuxカーネル全体にC ++の単一行はありません(Linus Torvaldsはその光景を嫌っています)。
IDE?カーネル開発者がIDEを使用しているとは思えません。それらのほとんどはVimまたはEMACSを使用しています。次に、gitを使用してカーネルソースにコミットし、GDB/KDBを使用してデバッグします。そして、他に必要なコマンドラインツール(例diff
)。