声明:在注明出处的情况下可以随意转载(blog.csdn.net/innotech)
本代码修改自the linux kernel module programming guaid version 2.6
原本的代码是在2.6.10中编写的。调试的时候出现了错误。
经过修改在2.6.32内核下编译运行。本代码只是实现了一个虚拟的字符型驱动。
需要自己手动设置mknod major数需要通过查看/var/log/message得到。然后就是
mknod /dev/<device name> c major 进行设置。
具体修改为将
init_module(void) -> module_init(function)
cleanup_module(void) ->module_exit(function)
更符合新版本内核模块风格。
还有就是unregister_chrdev是否有返回,原文代码是有返回的并且测试了返回值。但是我编译却出现了错误。
然后查看了内核中其他驱动程序的代码。发现都没有返回。因此我就取消了返回。没有错误,不知的为什么。