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

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

8.3.2. libmcmem ライブラリ情報

libmcmem ライブラリは、アプリケーションが使用する DMA メモリーを管理します。 hugepage を使用して、アプリケーションに必要な DMA メモリーを提供します。

ifc_env_init:

  • 機能の説明: hugepages の割り当てと初期化
  • プロトタイプ:int ifc_env_init(char *bdf, size_t payload)
  • 戻り値: 成功した場合は 0、それ以外の場合は負を返します。

ifc_env_exit

  • 機能の説明: 無料のヒュージページ
  • プロトタイプ: void ifc_env_exit(void)

ifc_dma_alloc:

  • 関数の説明: I/O 要求のバッファーを割り当てます。
  • プロトタイプ: struct ifc_mem_struct *ifc_dma_alloc(void)
  • 戻り値: 成功した場合の ifc_mem_struct へのポインター。失敗の場合は NULLです。

ifc_dma_free

  • 機能説明:フリーバッファー
  • プロトタイプ: void ifc_dma_free(struct ifc_mem_struct *r)

ifc_allocated_chunks

  • 関数の説明: 割り当てられた DMA バッファー チャンクの総数を取得します。
  • プロトタイプ: int ifc_allocated_chunks(void)

libmcmem は、次に示すように ifc_mem_struct を使用して、DMA バッファーをアプリケーションに渡します。

ifc_mem_struct

表 133.  構造の説明
構造 DMAディスクリプターの構造
void *virt_addr バッファーの仮想アドレス
uint64_t phy_addr バッファーの物理アドレス
size_t len プレーンの長さ
int ctx 申請用ではなく図書館用

software/user/common/include/ifc_libmcmem.hで次の NUM_HUGE_PAGESマクロを使用して、ライブラリが使用するヒュージ ページの数を構成できます。