如何提交内核补丁--checkpatch.pl使用

转自: http://blog.csdn.net/ganggexiongqi/article/details/7032625#


补丁检测:./scripts/checkpatch.pl xxx.patch

这个时候补丁就制作成了,但是还要使用内核提供的补丁检测工具检测一下补丁的正确性,应为我们发布的补丁不能把很明显错误带进去。


  1. helight@Zhwen:linux-2.6$ ./scripts/checkpatch.pl 0001-clean-up-code-style-on-samples-tracepoints-tracepoin.patch   
  2. total: 0 errors, 0 warnings, 9 lines checked  
  3.   
  4. 0001-clean-up-code-style-on-samples-tracepoints-tracepoin.patch has no obvious style problems and is ready for submission.  
  5. helight@Zhwen:linux-2.6$   


使用checkpatch.pl输出的主要错误或警告:

scripts/checkpatch.pl输出的错误或警告有很多种,其中有一些比较具有代表性的,如下所示。在编写的阶段就应当充分注意它们。

错误

 换行符为DOS格式(CR+LF)。

 行首、行尾有多余的空格。

 不是用制表符,而是用空格缩进。

 switch语句和case语句的缩进不一致。

 函数定义块(block)以外的“{”写在独立的行中。

 注释符使用的是“//”。

 全局变量或静态变量是明确指定以0初始化的。

 前括号“(”或“[”后面有多余的空格。

 后括号“)”或“]”前面有多余的空格。

 逗号“,”后面没有空格。

 if、for、while的前括号“(”前面没有空格。

 else未与if块结尾的“}”写在同一行。

 使用了将来要废弃的头文件或函数。

 补丁内没有Signed-off-by行。

警告

 补丁内含有的路径起点不是内核源码树的根目录。

 1行的长度超过80字。

 制表符前面有空格。

 const关键词的使用方法有问题。

 printk()没有指定输出级别(KERN_*)。

 goto的分支终点的标签label缩进。

 用“{}”括住了只有1行的代码块。

 使用了volatile修饰符。

 kmalloc()的返回值已经转换。

小结

使用scripts/checkpatch.pl可以在投稿前检查补丁的格式。将补丁列入邮件列表时,经常可以看到“未按照规则编写,请修改”的提示。一定要在发布前检查补丁的格式,才能集中对补丁内容进行讨论。

参考文献

 Documentation/CodingStyle(内核源文档)
—Munehiro IKEDA

转自: http://book.2cto.com/201302/16274.html


你可能感兴趣的:(linux设备驱动)