[[SiioLaboratory]]
*パラレルポートを読み書きする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で指定したメッセージが残っているはずである。