tarfs について (14)
ええと、ためしに make してみたらヘッダが探せていない模様。何故だー、と言いつつ試行錯誤。LINUXINCLUDE とか EXTRA_CFLAGS とかいぢくり回しつつ、Documentation/kbuild/modules.txt 見てたら Makefile の記述が足らないコトが判明。
${tarfs-objs}: ${HEADERS} ${MAKE} -C ${KDIR} M=${PWD}
*.o を作るためのソレを追加したところ、一応ヘッダは見つけている模様。ここからコンパイルを通しつつ、なログを記録した方が手は動きそげ。
dir.c から
以下
$ LANG=C make dir.o make -C /lib/modules/2.6.20/build M=/home/rms/kernel/tarfs/src make[1]: Entering directory `/home/rms/kernel/linux-2.6.20' CC [M] /home/rms/kernel/tarfs/src/file.o /home/rms/kernel/tarfs/src/file.c: In function 'tarfs_file_lseek': /home/rms/kernel/tarfs/src/file.c:52: error: 'struct file' has no member named 'f_reada' /home/rms/kernel/tarfs/src/file.c:53: error: 'event' undeclared (first use in this function) /home/rms/kernel/tarfs/src/file.c:53: error: (Each undeclared identifier is reported only once /home/rms/kernel/tarfs/src/file.c:53: error: for each function it appears in.) /home/rms/kernel/tarfs/src/file.c: At top level: /home/rms/kernel/tarfs/src/file.c:68: error: 'generic_file_read' undeclared here (not in a function) make[2]: *** [/home/rms/kernel/tarfs/src/file.o] Error 1 make[1]: *** [_module_/home/rms/kernel/tarfs/src] Error 2 make[1]: Leaving directory `/home/rms/kernel/linux-2.6.20' make: *** [dir.o] Error 2
- struct file 型には f_reada という属性は無い。確かに無い。
- event というグローバル変数もたしかに無い。2.4 では include/linux/sched.h にて定義。あ、sched.h では外部参照な宣言になっているな。定義はどこだろ。
- generic_file_read 未定義。2.6 系では include/linux/fs.h に do_generic_file_read という inline な手続きの定義はある。しかも static なので外部参照不能。
とりあえずぼちぼちヤリます。