PCI Expressのマルチチャネル DMA インテル® FPGA IPユーザー ガイド

ID 683821
日付 4/20/2022
Public
ドキュメント目次

8.3.3.3. 完了管理

カーネルモジュールは、ディスクリプター・プロセス完了表示の 2 つのモードをサポートします。これは、ハードウェアのサポートによるものです。

  • これらのモードの両方で、完了した要求カウンターをドライバーからアプリケーションに渡すために eventfds が使用されます。
  • eventfds は、制御メッセージを使用してユーザー・アプリケーションからカーネルドライバーに渡されます。
  • 制御メッセージ: eventfds、ファイルサイズ (ファイルごとの #descriptors)、およびキューごとのペイロードサイズの詳細を含む構造体です。
    • read/write システムコールによる転送開始前にユーザー・アプリケーションから渡される。
    • 制御メッセージと DMA 要求を区別するには、前者を示すために、読み出し/書き込みシステムコール引数でサイズをゼロに設定する必要がある。
  • アプリケーションは、eventfdに対する読み出し操作を使用して、完了した要求の数を取得します。
図 45. 完全なデザインフロー
両方のモード:
  • 関連付けられたディスクリプター・キューのコンテキストを更新すると、キューに関連付けられたアプリケーションの eventfd の 64 ビットカウンターも増加します。
  • アプリケーションは、eventfd で読み出し操作を使用して、最近完了した要求の数を受け取ります。
Interrupt Mode:
  • 要求が完了すると、MCDMA IP は MSI-X 信号を生成します。
  • この割り込み信号は、ドライバーの割り込みハンドラーを呼び出します。
  • 上の図では、Interrupt Modeドのステップ 1 と 2 が非同期で発生します。
Poll Mode:
  • アプリケーションは、ポーリング・ファイル操作を使用してチャネルをポーリングします。
  • カーネルドライバーの ifc_device_poll 関数は、チャネルの両方のキューをポーリングし、キューのステータスに応じてフラグ POLLIN、POLLOUT および/または POLLRDNORM、POLLWRNORM を返します。