I'm coding a simple kernel module, in linux ubuntu 17.04, that takes a string and prints it in the kernel log.
#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);
I run command make
and then when I run insmod test.ko mystring="blahblahblah"
, the module will be inserted correctly but when I run dmesg
it doesn't show the "blahblahblah".
after I run rmmod test.ko
and dmseg
the expression "blahblahblah" will appear in the terminal. when I run insmod test.ko mystring="blahblahblah"
again and then dmesg
the "blahblahblah" will be printed.
what is the problem exactly?
is it my problem or the system?