写一个简单的Linux2.6内核模块
您的内核必须已经启用这些选项进行了编译:
Loadable module support ---> [*] Enable loadable module support [*] Module unloading [ ] Module versioning support (EXPERIMENTAL) [*] Automatic kernel module loading |
如果按照第一篇教程中的说明编译内核,那么就已经正确地设置了这些选项。否则,修改这些选项,重新编译内核,并引导到新内核。
引导模块时,可以向它传递参数。要使用模块参数加载模块,这样写:
insmod module.ko [param1=value param2=value ...] |
为了使用这些参数的值,要在模块中声明变量来保存它们,并在所有函数之外的某个地方使用宏
MODULE_PARM(variable, type)
和
MODULE_PARM_DESC(variable, description)
来接收它们。
type
参数应该是一个格式为
[min[-max]]{b,h,i,l,s}
字符串,其中 min 和 max 是数组的长度限度。如果两者都忽略了,则默认为 1。最后一个字符是类型说明符:
b byte h short i int l long s string |
可以在 MODULE_PARM_DESC 的 description 域中添加任何需要的说明符。