30 March 2012

O’REILLY の LINUXデバイスドライバ 第3版を勉強中。

サンプルコードは以下からダウンロードできました。
ftp://ar.linux.it/pub/ldd3/

scull を make してみるものの、Kernelのversionによってちょこちょこ直さないといけない。

修正箇所を以下にメモ。(手元の Kernel のバージョンは 2.6.32-40)

Makefile の

CFLAGS += $(DEBFLAGS)
CFLAGS += -I$(LDDINC)

EXTRA_CFLAGS += $(DEBFLAGS)
EXTRA_CFLAGS += -I$(LDDINC)

に修正。

main.c

#include <linux/config.h>

#include <linux/autoconf.h>

に変更。

pipe.caccess.c

#include <linux/sched.h>

を追加。

access.c 中の current->uidcurrent->euid をそれぞれ current->cred->uidcurrent->cred->euid に変更。

これで makeが通った。

$ sudo ./scull_load

とするとエラーが出るので、

major=$(awk "\\$2==\"$module\" {print \\$1}" /proc/devices)

major=$(awk "\$2==\"$module\" {print \$1}" /proc/devices)

に修正するとうまくいきました。



blog comments powered by Disqus