2017-11-30 5 views
0

Linux Device Drivers、Third Editionの書籍と第14章の「一緒に使う」セクションでは、「PCIコア、ドライバコアと個々のPCIドライバ」の間の相互作用について説明しています。そして、彼らは "ドライバーコア"という言葉を別の言葉で使った。 「ドライバコア」は「キャラクタデバイスドライバ」と異なっていますか?Linuxカーネルデバイスドライバのコンテキストで「ドライバコア」の意味は何ですか?

私の質問は、InfiniBandスタックの理解の意図から発生します。 IBスタックは、ユーザ空間とカーネル空間の両方にまたがっています。したがって、私がMellanox ConnectX-4 NIC上で実行するための簡単なピンポンInfiniBandプログラムを作成している場合、私のバイナリはlibibverbsとlibmlx5、および3 kernel-modules:ib_uverbs、mlx5_ib、mlx5_coreの2つのユーザスペースライブラリに依存します。私はib_uverbsが文字デバイスドライバであることを知っています。しかし、mlx5_ibとmlx5_coreカーネルモジュールをドライバのカテゴリと見なすことはできますか?あるいは、それらの機能はそれらとインターフェースするために単にグローバルにエクスポートされていますか?

答えて

2

ドライバーコアは、ドライバー、デバイス、バス、クラスなどを管理する汎用コードです。特定のバスまたはデバイスに関連付けられていません。私が参照している章では、PCIバスドライバとドライバコア間の分業にいくつかの例があると考えています(図14-3(デバイス作成プロセス)を参照)。

あなたが言及した3つのカーネルモジュールのうち、2つがデバイスコアに参加します。ib_uverbsはRDMA機能をユーザースペースにエクスポートするために文字デバイスを登録します。 mlx5_coreは、ConnectX NICを処理するためのPCIドライバを登録します。 mlx5_ibはドライバと見なすこともできますが、RDMAサブシステムはドライバを登録するためにデバイスコアを使用しません(独自のAPI - ib_register_deviceを持っています)。

+0

よろしくお願いします。明確な返答をいただきありがとうございますhaggai_e! –

関連する問題