本文主要是介绍linux内核模块开发笔记一,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
内核模块开发:
如果将所有的组件都编译进内核,会造成内核文件过大,修改组件后,需要重新编译整个内核,效率比较低。内核模块就相当于补丁,在需要的时候才会起作用,模块本身不被编译进内核文件,在运行期间动态的添加和卸载。
模块加载函数:
安装内核模块时,内核模块加载函数被调用,通过module_init宏指定内核模块加载函数。
模块卸载函数:
卸载内核模块时,调用模块卸载函数,通过module_exit宏指定卸载函数。
内核模块的编译:
obj-m 编译成模块
obj-y 编译进内核
模块参数:
module_param(name, type, perm)
name:模块参数的名称;
type:模块参数的类型;
perm:访问的权限;
解析模块参数。
Printk 可以根据严重程度,根据不同的优先级来对消息进行分类。控制信息打印到不同地方去。
<linux/kernel.h>中定义了8中优先级
KERN_EMERG “<0>”优先级最高
KERN_ALERT “<1>”
KERN_CRIT “<2>”
KERN_ERR “<3>”
KERN_WARNING “<4>”
KERN_NOTICE “<5>”
KERN_INFO “<6>”
KERN_DEBUG “<7>这篇关于linux内核模块开发笔记一的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!