博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
谈谈Linux内核驱动的coding style
阅读量:6323 次
发布时间:2019-06-22

本文共 1033 字,大约阅读时间需要 3 分钟。

hot3.png

最近在向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”的选项。

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

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.c

检查的结果是:

ERROR: switch and case should be at the same indent

转载于:https://my.oschina.net/u/3611008/blog/1860130

你可能感兴趣的文章
日月如梭,玩转JavaScript日期
查看>>
Android:BLE智能硬件开发详解
查看>>
C#语法造成的小问题(编译原理知识)
查看>>
oc 协议
查看>>
PowerShell 自动化管理 AWS (1) - 初始化连接
查看>>
什么是微服务
查看>>
CNN 那么多的网络有什么区别吗?看这里了解 CNN 的发展历程
查看>>
多云中如何共享责任模式
查看>>
Adenium约旦57MW太阳能光伏项目投产
查看>>
《Servlet和JSP学习指南》一3.6 动作
查看>>
物联网市场FD-SOI制程会取代FinFET吗?
查看>>
《VMware、Citrix和Microsoft虚拟化技术详解与应用实践》一2.2 ESXi简介
查看>>
CSS3中linear-gradient实现百分比进度条
查看>>
Java设计模式精讲
查看>>
数据库索引为什么用B+树实现?
查看>>
Gensim训练维基百科语料库
查看>>
iOS 10.3应用内更换icon
查看>>
无线通信基础资料整理2 之3G 4G
查看>>
全局光照---光子映射
查看>>
支持向量机---线性支持向量机与软间隔最大化
查看>>