#include <linux/init.h>
#include <linux/module.h>
#include <linux/kernel.h>
#include "test.h"
MODULE_LICENSE("Dual BSD/GPL");
static int hello_init(void) {
printk("DRIVER LOADED\n");
printk("DRIVER INIT\n");
printk("result : %d",add(12,234));
return 0;
}
static void hello_exit(void) {
printk("DRIVER REMOVED\n");
}
module_init(hello_init);
module_exit(hello_exit);
这里,当insmod发出时,addk输出不会由printk打印 我是新手,请问有人可以帮助我了解为什么会这样吗?
我的test.c包含以下功能主体
int add(int a , int b){
return a+b;
}
和Makefile如下
obj-m = initial.o
all:
make -C /lib/modules/$(shell uname -r)/build/ M=$(PWD) modules
clean:
make -C /lib/modules/$(shell uname -r)/build/ M=$(PWD) clean
我的输出显示:
Aug 16 11:15:44 beaglebone kernel: [13616.191741] DRIVER LOADED
Aug 16 11:15:44 beaglebone kernel: [13616.191758] DRIVER INIT
Aug 16 11:15:47 beaglebone kernel: [13616.191784] result : 246
Aug 16 11:15:47 beaglebone kernel: [13619.465555] DRIVER REMOVED
答案 0 :(得分:1)
printk
输出。当您在\n
的末尾缺少printk
时,在删除内核模块时将在下一次刷新时打印生成的字符串。
因此printk("result : %d\n",add(12,234));
应该可以工作。