カーネルモジュールベース
カーネルのモジュール
ステップ1:helloを作成します.cファイル
ステップ2:makefileファイルを作成する
makeコマンドを実行する生成ファイルにhelloが含まれます.ko
ステップ3:$insmod hello.koはhellをロードします.koファイルをカーネルに
$lsmodは存在するmodulesを表示します
$dmesgカーネルログ情報が表示され、プログラム実行の結果がログに表示されます.
$rmmod hello helloモジュールのアンインストール
今日の質問:
1.`pwd`は大分号です
2.ifneq not ifnep
3.obj-m :=hello.oのフォーマット.
4.パラメータがロード時に入力:insmod hello.ko num=20
5.gccでコンパイルしてライブラリファイルに接続し、ユーザーのスクリプト、ユーザーのランタイム環境に接続するため、カーネルコンパイルはgccでは使用できません.
6.システム呼び出しと標準ライブラリはカーネルでは呼び出せません
ステップ1:helloを作成します.cファイル
#include
#include /* */
MODULE_LICENSE("DUAL BSD/GPL");
static int num=300;
module_param(num,int,S_IRUGO);/* , */
static int xtl_init(void)
{
printk("welcome to you
");
return 0;
}
static void xtl_exit(void)
{
printk("goodbye
");
return ;
}
module_init(xtl_init);
module_exit(xtl_exit);
MODULE_AUTHOR("XTL");
ステップ2:makefileファイルを作成する
ifneq ($(KERNELRELEASE),)
obj-m :=hello.o
else
KDIR:=/lib/modules/2.6.28/build
all:
make -C $(KDIR) M=`pwd` modules
# KDIR makefile , M modules, hello.ko
#`pwd`
clean:
-rm -f *.ko *.o *.mod.o *.mod.c *.symvers
endif
makeコマンドを実行する生成ファイルにhelloが含まれます.ko
ステップ3:$insmod hello.koはhellをロードします.koファイルをカーネルに
$lsmodは存在するmodulesを表示します
$dmesgカーネルログ情報が表示され、プログラム実行の結果がログに表示されます.
$rmmod hello helloモジュールのアンインストール
今日の質問:
1.`pwd`は大分号です
2.ifneq not ifnep
3.obj-m :=hello.oのフォーマット.
4.パラメータがロード時に入力:insmod hello.ko num=20
5.gccでコンパイルしてライブラリファイルに接続し、ユーザーのスクリプト、ユーザーのランタイム環境に接続するため、カーネルコンパイルはgccでは使用できません.
6.システム呼び出しと標準ライブラリはカーネルでは呼び出せません