制表符是8个字符
避免3级以上的缩进
在switch语句中switch与case对齐
不要把多个语句放在一行里
除了注释、文档和Kconfig之外,不要使用空格缩进
不要在行尾留空格
每一行的长度限制是80列
起始大括号放在行尾,结束大括号放在行首(if、switch、for、while、do)
函数的起始大括号放置于下一行开头
只有一个单独语句的时候,不用加不必要的大括号
(大多数)关键字后要加一个空格
不要在小括号里的表达式两侧加空格
“*”的首选方式是使之靠近变量名或者函数名
在大多数二元和三元操作符两侧使用一个空格
一元操作符后不加空格
前缀、后缀自加和自减一元操作符前后不加空格
“.”和“->”结构体成员操作符前后不加空格
不要在行尾留白
使用简单的命名
全局变量需要有一个具描述性的名字
不要使用匈牙利命名法
本地变量名应该简短
不要使用类似“vps_t”之类的东西
函数应该简短而漂亮,并且只完成一件事情
本地变量的数量不应超过5-10个
使用空行隔开不同的函数
在函数原型中,包含函数名和它们的数据类型
使用goto语句做一些通用的清理工作
注释告诉别人你的代码做了什么,而不是怎么做的
使用C89“/* ... */”风格
注释数据
使用“scripts/Lindent”
Documentation/kbuild/kconfig-language.txt
使用引用计数
定义常量的宏的名字及枚举里的标签需要大写
定义几个相关的常量时,最好用枚举
宏的名字请用大写字母,不过形如函数的宏的名字可以用小写字母
cpp手册
Gcc internals手册
保证信息简单、明了、无歧义
使用dev_err(),dev_warn(),dev_info()等
使用pr_debug()和pr_info()等
使用p = kmalloc(sizeof(*p), ...);
强制转换一个void指针的返回值是多余的
如果一个函数有3行以上,就不要把它变成内联函数
如果函数的名字是一个动作或者强制性的命令,那么这个函数应该返回错误代码整数。
如果是一个判断,那么函数应该返回一个“成功”布尔值。
返回值是实际计算结果而不是计算是否成功的标志的函数不受此惯例的限制
使用头文件include/linux/kernel.h
不要覆盖别人的配置
----
参考资料:Documentation/zh_CN/CodingStyle