您的位置:首页 > 运维架构 > Linux

《Linux内核设计与实现》——补丁、开发和社区

2014-12-05 16:04 176 查看
一、社区

二、编码风格

1、与其他大型软件项目一样,Linux制订了一套编码风格,对代码的格式、风格和布局做错了规定。编码风格的主要规范都记录在内核源码树的Documemtation/CodingStyle

中。

2、缩进

1)、缩进风格是用制表符(Tab)每次缩进8个字符长度。这不是说用八个空格就可以了。这里的规定很明确,每次缩进通过制表符进行,每个制表位8个字符长度。

3、awitch语句

1)、Switch语句下属的case标记应该缩进到和switch声明对齐,这样将有助于减少8个字符的tab键带来的排版缩进。

4、空格

1)、一般来说,Linux的编码风格规定,空格放在关键字周围,函数名和圆括号之间无空格。

2)、相反,函数、宏以及函数相像的关键字在关键字和圆括号之间没有空格。在圆括号内,参数前后也不加空格。

3)、对于大多数二元和三元操作符,在操作符的两边加上空格。相反,对于大多数一元操作符,在操作符和操作数之间不加空格。

4)、在提领运算符的周围加上合适的空格尤为重要。在提领运算符的以便加上空格是不良的风格。把提领运算符放在紧挨类型的地方也是借用C++的一种不良风格。

5、花括号

1)、内核选定的风格是左括号紧跟在语句的最后,与语句在相同的一行。而括号要新起一行,作为该行的第一个字符。注意,在接下来的标识符是相同语句块的一部分,那

么花括号就不单独占一行,而是与那个标识符在同一行。

2)、函数不采用下列书写方式,因为函数不会在内部嵌套定义:

unsigned long func(void);

{

/* . . . */

};

3)、不需要一定使用括号的语句就可以忽略它。

6、每行代码的长度

1)、源代码中要尽可能地保证每行长度不超过80个字符,因为这样做可以最适合在标准的80X24的终端上显示。

2)、有些开发者会在圆括号内来分行,对齐排列函数参数。

3)、而另一些开发者虽然也会将分行输入,但不会把它们对齐排列,而是在开头简单的加上标准tab。

7、命令规范

1)、名称中不允许使用骆驼拼写法、Studly Caps或者其他混合的大小写字符。

2)、匈牙利命名法是不必要的,绝对不允许使用。

3)、而全局变量和函数应该选择包含描述性内容的名称,并且使用小写字母,必要时加上上下划线区分单词。

8、函数

1)、根据经验,函数的代码长度不应该超过两屏,局部变量不应该超过10个。

9、注释

1)、一般情况下,你应该描述的是你的代码要做什么和为什么要做,而不是具体通过什么方式实现。

2)、注释不应该包含谁写了那个函数、修改日期和其他那些琐碎而无实际意义的内容。这些信息应该集中在文件最开头的地方。

3)、在注释中,重要信息常常以“XXX :”开头,而bug通常以“FIXME:”开头。

10、多用现成的东西。

11、在源码中少用itdef。

12、结构初始化

1)、结构初始化的时候必须在它的成员前加上结构标识符。这种初始化避免错误地使用其他结构而引发一个初始化错误。

13、代码的事后修正。

1)、indent是一个在大多数Linux系统中都能够找到的好工具,它可以按照指定的方式对源代码进行格式化,默认情况下它按照不怎么好看的GNU编码风格格式化代码。

三、管理系统

四、提交错误报告

五、补丁

一)、创建补丁

1、创建补丁最简单的办法是通过两份内核源代码进行的,一份源码,另一份是加进了所修改部分的源代码。一般会给原来的内核代码起名linux-x.y.z,而修改过的就起名

linux,然后利用下面的命令通过这两份代码创建补丁:

diff -urN linux-x.y.z/ linux/ > my-patch

1)、通过-u参数指定使用特殊的diff输出格式。

2)、-r参数保证会变异所有子目录进行操作,而-N参数指明做出修改的源代码中所有新加入的文件在diff操作时包含在内。

3)、如果想对一个单独的文件进行diff,你也可以这么做:

diff -u linux-x.y.z/some/file linux/file > my->patch

2、diffstat可以列出补丁所引起的变更的统计。输出关于补丁的信息,执行:

diffstat -pl my-patch

二)、用Git创建补丁

1、用Git创建补丁过程:

1)、首先,你必须是修改者,然后在本地提交你的修改。

2)、作出修改后,就需要把所做的修改提交到你的Git版本库:

git commit -a

3)、如果你仅仅想提交某个指定文件的修改,则如下实例:

git commit some/file.c

4)、要增加一个文件,然后提交(以及其它所有修改),则输入下列两条命令:

git add some/other/file.c

git commit -a

2、Git的设计可谓考虑周全,多个提交甚至可以针对同一文件,每个提交的创建各自独立。当在源代码有一个(或两个)提交创建一个补丁,可以用下列命令:

git firmat -patch origin

3、GIT产生的补丁位于源代码树中的根目录中。如果指向为最后第N次提交产生补丁,则可以执行下列命令:

git format -patch -N

三)、提交补丁
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: