修改内核代码-打补丁-checkpatch.pl
2015-11-25 15:30
190 查看
我们下载一份内核源码,修改了一些代码,需要制作补丁,用diff命令
比如现在有两份内核源码
kernel-old, kernel-new
打补丁,命令为
diff -ruN kernel-old kernel-new > diff.patch
可以通过Kompare,或者直接用gedit打开查看修改的代码
打补丁的命令:
patch -p1或-p0 < ../diff.patch
接着要查看我们修改的代码是否符合内核编码规范
就需要用到内核的脚本checkpatch.pl
命令如下
cd kernel-new
./script/checkpatch.pl ../diff.patch > ../checkresult.txt
打开checkresult.txt查看不符合规范的地方,再修改代码,重新打补丁,直到没有不符合规范的地方
很多都是空格,单行不超过80个字符,tab等错误
下面列出一些碰到过的
ERROR: Macros with complex values should be enclosed in parentheses
复杂的宏要用小括号括起来
ERROR: Missing Signed-off-by: line(s)
这个好像是补丁签名的意思,就是谁打的这个补丁,我是直接忽略这个错误
WARNING: do not add new typedefs
用typedefs出现的警告,不知道怎么把这个取消掉
比如你定义一个结构体 struct xxx
typedef struct xxx *p1;
typedef struct xxx *p2;
就会出现上述警告
WARNING: Prefer [subsystem eg: netdev]_err([subsystem]dev, ... then dev_err(dev, ... then pr_err(... to printk(KERN_ERR ...
这是用printk的时候会警告
比如现在有两份内核源码
kernel-old, kernel-new
打补丁,命令为
diff -ruN kernel-old kernel-new > diff.patch
可以通过Kompare,或者直接用gedit打开查看修改的代码
打补丁的命令:
patch -p1或-p0 < ../diff.patch
接着要查看我们修改的代码是否符合内核编码规范
就需要用到内核的脚本checkpatch.pl
命令如下
cd kernel-new
./script/checkpatch.pl ../diff.patch > ../checkresult.txt
打开checkresult.txt查看不符合规范的地方,再修改代码,重新打补丁,直到没有不符合规范的地方
很多都是空格,单行不超过80个字符,tab等错误
下面列出一些碰到过的
ERROR: Macros with complex values should be enclosed in parentheses
复杂的宏要用小括号括起来
ERROR: Missing Signed-off-by: line(s)
这个好像是补丁签名的意思,就是谁打的这个补丁,我是直接忽略这个错误
WARNING: do not add new typedefs
用typedefs出现的警告,不知道怎么把这个取消掉
比如你定义一个结构体 struct xxx
typedef struct xxx *p1;
typedef struct xxx *p2;
就会出现上述警告
WARNING: Prefer [subsystem eg: netdev]_err([subsystem]dev, ... then dev_err(dev, ... then pr_err(... to printk(KERN_ERR ...
这是用printk的时候会警告
相关文章推荐
- Java随手笔记8之包、环境变量和访问控制及maven profile实现多环境打包
- 35 个 Java 代码性能优化总结
- SSH框架学习(四、struts+spring搭建,spring注解注入)
- PHP中关于private权限的继承
- eclipse报错:This Android SDK requires Android Developer Toolkit version 23.0.0 or above.
- python的signal
- Scala学习第十四天 Scala中作为接口的trait、在对象中混入trait代码实战
- java中对象的克隆
- 速来膜拜!20位活跃在Github上的国内技术大牛
- Universal-Image-Loader完全解析(三)---源代码解读
- C#指定日期为一年中的第几周
- c++实现读取配置文件
- asp.net ajax 调用错误解决
- 如何使用Notepad++编译运行php
- eclipse中如何对jar包关联的源代码进行调试?
- windows下python绘图库matplotlib安装方法(亲测)
- 阅读优秀的JAVA模板引擎Beetl的使用说明有感
- Java的安全学习(包括加密,数字签名,证书和认证)
- github上优秀的开源项目
- A Scala Tutorial for Java Programmers