我是新的内核模块开发,并决定今天编写我的第一个内核模块。内核模块负载导致错误
我的模块应该接收2个数字作为输入,由空格分隔并将这些数字加在一起。
内核模块通过一个名为calc(/ proc/calc)的proc入口进行通信,因此从文件中读取将返回输出并且写入该文件将给出新输入(2个数字由空白分隔)
当加载模块(insmod)时,我的外壳卡住了,在中断它并查看dmesg时,我看到一个内核BUG行, here is the trace。
我不确定这是否是我的代码中的错误,或者它是在Linux内核的实际错误,并希望了解我做错了什么,我该如何开始调试我的模块与给定dmesg日志。
here is the source code of my module。
我的makefile是很标准的一个,
obj-m += calc.o
KDIR := /lib/modules/$(shell uname -r)/build
all:
$(MAKE) -C $(KDIR) M=$(PWD) modules
clean:
$(MAKE) -C $(KDIR) M=$(PWD) clean
许多许多在此先感谢!
编辑:我使用Ubuntu 16.04.02,版本4.10.0-28,非常标准。
根据堆栈溢出的规则,你的驱动器和跟踪的代码应该是在问题本身**的**的文字,没有链接。 – Tsyvarev
好的,没有意识到,谢谢。 生病下一次更好 –