ワタタツの日記
2022 年 12 月 30 日 (金)
☆ Linuxカーネルの関数の書き方が変わっていたので対応した
LinuxカーネルのPCI関係のモジュールに使っていた関数の書き方が変わっていたので対応しました。
具体的には次のAPIが無くなっていました。
- pci_alloc_consistent
- pci_free_consistent
- pci_set_dma_mask
遅くとも Linux 6.1.0 にはもうありませんでした。実際にはもう少し前から無くなっていたようです。以前までは pci-dma-compat.h に入っていたようです。
Christophe JAILLETさんの Remove usage of the deprecated "pci-dma-compat.h" API という投稿によるととっくにdeprecatedだったようです。を見ます。ここにいくつかのドライバのパッチもあたっているので、どう書き換えればいいのかわかりました。
書き換え方
関数の名前は、
- pci_alloc_consistent は dma_alloc_coherent に
- pci_free_consistent は dma_free_coherent に
- pci_set_dma_mask は dma_set_mask_and_coherent に
それぞれ変更します。
次に、どの関数も、第1引数を p
とすると &p->dev
に変更します。
dma_alloc_coherent だけは、第4引数として GFP_KERNEL
を追加します。
成功
以上でコンパイルも通りました。カーネルにロードして少し使ってみたところ正常に動いているようでした。