我们下载一份内核源码,修改了一些代码,需要制作补丁,用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的时候会警告