エラーログ
error: implicit declaration of function ‘vmalloc’ [-Werror=implicit-function-declaration] channel->buf = vmalloc(CHANNEL_DMA_SIZE); ^ /home/luis/pt1-c8688d7d6382/driver/pt1_pci.c:857:18: warning: assignment makes pointer from integer without a cast [-Wint-conversion] channel->buf = vmalloc(CHANNEL_DMA_SIZE); ^ /home/luis/pt1-c8688d7d6382/driver/pt1_pci.c:862:18: warning: assignment makes pointer from integer without a cast [-Wint-conversion] channel->buf = vmalloc(BS_CHANNEL_DMA_SIZE); ^ /home/luis/pt1-c8688d7d6382/driver/pt1_pci.c:911:5: error: implicit declaration of function ‘vfree’ [-Werror=implicit-function-declaration] vfree(dev_conf->channel[lp]->buf); ^ cc1: some warnings being treated as errors scripts/Makefile.build:258: ターゲット '/home/luis/pt1-c8688d7d6382/driver/pt1_pci.o' のレシピで失敗しました make[2]: *** [/home/luis/pt1-c8688d7d6382/driver/pt1_pci.o] エラー 1 Makefile:1396: ターゲット '_module_/home/luis/pt1-c8688d7d6382/driver' のレシピで失敗しました make[1]: *** [_module_/home/luis/pt1-c8688d7d6382/driver] エラー 2 make[1]: ディレクトリ '/usr/src/linux-headers-4.4.0-22-generic' から出ます Makefile:10: ターゲット 'pt1_drv.ko' のレシピで失敗しました make: *** [pt1_drv.ko] エラー 2
Kernel 4.2 から <asm/io.h> からの include で vmalloc.h が削除されたので使うためには明示的に追記する必要があるらしい。
参考 – https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=d6472302f242
ということで、ファイルを書き換えます。
pt1_pci.c を書き換える
$ vim pt1_pci.c #include <linux/vmalloc.h> ←追記
5行目ぐらいに追加して make をすると通ると思います。
Ubuntu16.04ベースのLinuxMint18に移行したらmakeできなくて困ってたので助かりました。ありがとうございます。
お役にたてれたようで何よりです。