我是内核模块开发的新手,并决定今天编写我的第一个内核模块。
我的模块应该接收 2 个数字作为输入,用空格分隔并将这些数字加在一起。
内核模块通过名为 calc (/proc/calc) 的 proc 条目进行通信,因此从文件中读取将返回输出,写入该文件将提供新输入(2 个数字由空格分隔)
加载模块(insmod)时,我的 shell 卡住了,当中断它并查看 dmesg 时,我看到了内核 BUG 行, 这是跟踪。
我不确定这是否是我的代码中的错误,还是 linux 内核中的实际错误,并且很想了解我做错了什么以及如何使用给定的 dmesg 日志开始调试我的模块。
我的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,非常标准。