[[SiioLaboratory]] #author("2022-01-13T19:14:49+09:00","","") *パラレルポートを読み書きするLinuxのデバイスドライバを作る(未完です) [#m5be3e9a] Linux kernel 2.6に対応した、パラレルポート(プリンタポート)を読み書きする 簡単なデバイスドライバを作ってみる。 参考ホームページ - http://lwn.net/Articles/driver-porting/ -- kernel 2.5からの変更点の解説 - http://web.yl.is.s.u-tokyo.ac.jp/~sumii/linux/writing-linux-driver -- kernel 2.2(?)用で古いけどわかりやすい - http://www.mech.tohoku-gakuin.ac.jp/rde/contents/linux/drivers/index_jp.html -- これも2.2用かな ** とりあえず何もしない超簡単なKernelのローダブルモジュールを作ってみる [#pca98cd5] 適当なディレクトリに以下のようなhello.cを作る。 #include <linux/init.h> #include <linux/module.h> #include <linux/kernel.h> MODULE_LICENSE("Dual BSD/GPL"); static int hello_init(void) { printk(KERN_ALERT "Hello, world?n"); return 0; } static void hello_exit(void) { printk(KERN_ALERT "Goodbye, cruel world?n"); } module_init(hello_init); module_exit(hello_exit); 同じ場所に以下のようなMakefileをつくる。(default:の次の行の行頭はタブであること) ifneq ($(KERNELRELEASE),) obj-m := hello.o else KDIR := /lib/modules/$(shell uname -r)/build PWD := $(shell pwd) default: $(MAKE) -C $(KDIR) SUBDIRS=$(PWD) modules endif そこでmakeすると、hello.koが出来る。 suになって、 /sbin/insmod hello.ko とするとモジュールがロードされる。 /sbin/rmmod hello.ko とするとモジュールがアンロードされる。 cat /var/log/message を見ると、最後の方に、 printkで指定したメッセージが残っているはずである。