Lambdaカクテル

京都在住Webエンジニアの日記です

Invite link for Scalaわいわいランド

FreeBSD 14.0でPT3を動かす

PT3は地上波を録画するためのPCIeボードだが、基本的にLinuxで動作させることを前提に作られており、一般にはLinuxのドライバしか流通していない。ただ、有志がなんとかパッチを当ててFreeBSDでも動作させられるようにしている。POSIX万歳という感じである。

FreebSD 13.2までは以下の手順を踏んでパッチを当てることで動作させられていたのだが、昨年末に出たFreeBSD 14.0でバスまわりのAPIが変わったのかコンパイルが通らなくなってしまった:

github.com

www.mousou.org

要するにptx.h#include <sys/lock.h>を追加してやればよい、というもの。

で、FreeBSD14.0にアップデートしたところこのパッチでも動かなくなってしまった。

結論としては次のようなパッチを当てて、ドライバまわりのAPIの変更に追従すればよい:

--- ptx.c.orig  2024-01-21 16:09:14.713485000 +0900
+++ ptx.c       2024-01-21 16:10:59.645234000 +0900
@@ -29,7 +29,6 @@
 
 
 
-static devclass_t ptx_devclass;
 
 /*
  ***************************************
@@ -56,7 +55,12 @@
        sizeof(struct ptx_softc),
 };
 
-DRIVER_MODULE(ptx, pci, ptx_driver, ptx_devclass, 0, 0);
+#if __FreeBSD_version >= 1400058
+ DRIVER_MODULE(ptx, pci, ptx_driver, 0, 0);
+#else
+ static devclass_t ptx_devclass;
+ DRIVER_MODULE(ptx, pci, ptx_driver, ptx_devclass, 0, 0);
+#endif
 MODULE_VERSION(ptx, 1);
 
 #define VENDOR_XILINX 0x10ee

詳細はさっぱり分からないが、ptx_devclassは不要になったようだ。#ifで分岐させて対処可能。

PT1/2用のドライバでも、似たようなパッチが当てられている。

lists.freebsd.org

とりいそぎこのパッチでkldloadしたところ正常に動作している。

 (パッチあてる)
 $ make
 # make install
 (必要に応じて)# echo 'ptx_load="YES"' >> /boot/loader.conf
 # kldload ptx
★記事をRTしてもらえると喜びます
Webアプリケーション開発関連の記事を投稿しています.読者になってみませんか?