私はlinux ubuntu 17.04の簡単なカーネルモジュールをコーディングしています。これは文字列を受け取り、カーネルログに出力します。カーネルログに最新の出力が表示されないのはなぜですか?
#include<linux/module.h>
#include<linux/init.h>
#include<linux/moduleparam.h>
char* mystring = "hello world";
module_param(mystring ,charp ,S_IRUSR | S_IWUSR);
void display(void){
printk(KERN_ALERT "%s" ,mystring);
}
static int hello(void){
//printk(KERN_ALERT "hello module");
display();
return 0;
}
static void bye(void){
printk(KERN_ALERT "bye");
}
module_init(hello);
module_exit(bye);
私はコマンドmake
を実行し、その後、私はinsmod test.ko mystring="blahblahblah"
を実行すると、モジュールが正しく挿入されますが、私はdmesg
を実行すると、それは「blahblahblah」を表示しません。 rmmod test.ko
とdmseg
を実行した後、 "blahblahblah"という表現が端末に表示されます。 insmod test.ko mystring="blahblahblah"
をもう一度実行した後にdmesg
と入力すると、「blahblahblah」が表示されます。 問題は何ですか? それは私の問題かシステムですか?