谈谈Linux内核驱动的coding style

最近在向Linux内核提交一些驱动程序,在提交的过程当中,发现本身的代码离Linux内核的coding style要求仍是差不少。当初本身对内核文档里的CodingStyle一文只是粗略的浏览,真正写代码的时候在不少细节上会照顾不周。不过, 在不遵照规则的程序员队伍里,我并非孤独的。若是去看drivers/staging下的代码,就会发现不少驱动程序都没有严格遵照内核的coding style,并且在不少驱动程序的TODO文件里,都会把"checkpatch.pl fixes"做为本身的目标之一(checkpatch.pl是用来检查代码是否符合coding style的脚本)。程序员

不能否认,coding style是仁者见仁、智者见智的事情。好比Microsoft所推崇的匈牙利命名法,在Linus看来就是及其脑残(brain damaged)的作法。也许您并不同意Linus制定的coding style,但在提交内核驱动这件事上,最好仍是以大局为重。对于这么一个庞大的集市式的开发来讲,随意书写代码必将带来严重的可维护性的灾难。工具

一些辅助工具
当代码量达到必定程度时,手动去检查和修改coding style是很是繁琐的工做,幸亏,咱们还有一些工具可使用。编码

scripts/checkpatch.pl
这是一个检查代码是否符合内核编码规范的的脚本。顾名思义,checkpatch是用来检查patch的,默认的调用也确实如此。若是用来检查原文件,须要加上“-f”的选项。code

咱们来看一段无聊的代码(文件名为print_msg.c):ip

1
2
3
4
5
6
7
8
9
10
11
12
void print_msg(int a)
{开发

switch (a) {
    case 1:
        printf("a == 1\n");
        break;

    case 2:
        printf("a == 2\n");
        break;
}

}
这段代码的coding style是否有问题呢?用checkpatch.pl来检查一下:文档

scripts/checkpatch.pl -f print_msg.cit

检查的结果是:coding

ERROR: switch and case should be at the same indent程序

相关文章
相关标签/搜索