#author("2018-11-19T09:25:10+09:00","default:honma","honma")
* Linuxデバイスドライバ開発 はじめの一歩 [#ya31929d]

何もしないドライバを書いてみる。
ソースファイル名は skel_drv.c

#highlight(c){{
#include <linux/init.h>
#include <linux/module.h>

MODULE_LICENSE("Dual BSD/GPL");

static int skel_init(void)
{
	pr_info("%s\n", __FUNCTION__);
	return 0;
}
static void skel_exit(void)
{
	pr_info("%s\n", __FUNCTION__);
}

module_init(skel_init);
module_exit(skel_exit);
}}
#highlight(end)

Makefileはシンプルに1行だけ
 obj-m := skel_drv.o

Makeの仕方は
 $ make -C /lib/modules/`uname -r`/build M=`pwd` modules

クリーンにする方法は
 $ make -C /lib/modules/`uname -r`/build M=`pwd` modules clean

デバイス出来上がったデバイスドライバのロードは
 $ sudo insmod skel_drv.ko

アンロードは
 $ sudo rmmod skel_drv

実行確認
 $ dmesg | tail
  :
 [472924.981255] skel_drv: loading out-of-tree module taints kernel.
 [472924.984092] skel_drv: module verification failed: signature and/or required key missing - tainting kernel
 [472925.004224] skel_init
 [472936.566017] skel_exit

これだけで、デバイスドライバを作った気になれる。

トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS