PT3は地上波を録画するためのPCIeボードだが、基本的にLinuxで動作させることを前提に作られており、一般にはLinuxのドライバしか流通していない。ただ、有志がなんとかパッチを当ててFreeBSDでも動作させられるようにしている。POSIX万歳という感じである。
FreebSD 13.2までは以下の手順を踏んでパッチを当てることで動作させられていたのだが、昨年末に出たFreeBSD 14.0でバスまわりのAPIが変わったのかコンパイルが通らなくなってしまった:
要するに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用のドライバでも、似たようなパッチが当てられている。
とりいそぎこのパッチでkldload
したところ正常に動作している。
(パッチあてる) $ make # make install (必要に応じて)# echo 'ptx_load="YES"' >> /boot/loader.conf # kldload ptx