2011-12-30 13 views
3

私はLinux初心者で、Linuxデバイスモデルを理解しようとしています。私は、Linux 3.1.6のコードベース、特にドライバ部を通過するとLinuxデバイスドライバ登録手順

  1. は、ドライバの一部は、(例えばI2Cバスデバイス使用していたことが判明した:Linuxベース3.1.6 /ドライバ/ I2C/I2Cを-dev.c)* register_chrdev()*と
  2. 他にもいくつかのものがあります(例えば、pciバス:linux-3.1.6/drivers/pci/bus.c)* device_register()*を使用していました。

私の質問は、いつregister_chrdevを使用するのですか(はい、私はキャラクターデバイスについて知っていますが、device_registerを使用しない理由)とdevice_register?

devfsとsysfsのように、ドライバの開発者がデバイス/ドライバをどこに表示させたいのですか?または、デバイスにアクセスするためのユーザー空間にインターフェイスが公開されていますか?

答えて

3

一つの機能は、(主要なフックアップ:あなたの関数への未成年者を)キャラクタデバイス関連を登録し、他はちょうど、抽象デバイスオブジェクト(のみ)を作成し、いわば。 2つは相補的です。デバイスオブジェクトはイベントの生成に使用されるため、udevには、cdevアソシエーションが登録されている場合は、/devにノードを作成します。 (。、例えば、とdrivers/char/misc.cの比較)

+0

お返事ありがとうございます。しかし、いくつかのオンライン投稿を経て、register_chr/blk/net/dev APIが廃止されるようです。つまり、sysfsはdevfsを置き換えます。 – Shash316

+2

devfsはすでに6年以上経過していますので、sysfsはdevfsの置き換えではありません(少なくとも1にはならなかった)、register_chrdevは廃止されず、廃止されていないので、/ devを見ると、ファッションのtmpfs。時代遅れの唯一のものは、あなたが読んだ「それらのオンライン投稿」です。 –

0

キャラクタデバイスは、特に、次のことが起こるようにあなたは、デバイスを登録する際に参照してください:

メジャー番号を合わせて与えられています。文字デバイス(tty、入力など)に基づいて登録されている機能に応じてデバイスを使用する場合は、それぞれのメジャー番号が割り当てられます。 その理由は、そのことは、メジャー番号が静的に割り当てられていないと言います。

そして

のみチャーデバイス上で実行され得る動作に対応する特定のファイル操作があります。

質問があれば質問してください。

関連する問題