linux内核模块开发笔记一
2015-11-03 17:50
253 查看
内核模块开发:
如果将所有的组件都编译进内核,会造成内核文件过大,修改组件后,需要重新编译整个内核,效率比较低。内核模块就相当于补丁,在需要的时候才会起作用,模块本身不被编译进内核文件,在运行期间动态的添加和卸载。
模块加载函数:
安装内核模块时,内核模块加载函数被调用,通过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>
如果将所有的组件都编译进内核,会造成内核文件过大,修改组件后,需要重新编译整个内核,效率比较低。内核模块就相当于补丁,在需要的时候才会起作用,模块本身不被编译进内核文件,在运行期间动态的添加和卸载。
模块加载函数:
安装内核模块时,内核模块加载函数被调用,通过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驱动学习一
- Linux中的常用内存有关问题检测工具
- linux IPC 通信 study 六:套接字socket
- linux IPC 通信 study 五:system v 共享内存
- linux IPC 通信 study 四:SYSTEM_V消息队列
- Linux_系统破坏性修复实验
- linux IPC 通信 study 三:system v 信号量semphore
- linux IPC 通信 study 二:信号signal
- RHEL/CentOS 7.x/6.x/5.x EPEL Repository
- linux IPC 通信 study 一:管道
- linux下rarlinux安装后找不到rar命令处理方法
- centos编译安装svn
- linux网卡统计信息清零
- centos 新增用户, 然后他在主目录添加网站403Forbbiden
- Linux C中读取/dev/input/event设备来判断键盘按键是否按下
- linux线程异常保护
- linux一天一命令博客链接
- linux下静态库的ranlib使用
- linux ar命令用法
- linux的crontab定时服务备份mysql数据