浏览代码

Documentation/CodingStyle: improve text layout

Try to make coding style documentation look a bit more readable and
consistent with the following:

 - indent every code example in C to first tab-stop;
 - surround every code example with empty lines, both top and bottom;
 - remove empty lines where text looked way too spare;
 - do not indent examples in elisp and kconfig;
 - do not do any non-whitespace changes.

Signed-off-by: Pavel Kretov <firegurafiku@gmail.com>
Signed-off-by: Jonathan Corbet <corbet@lwn.net>
Pavel Kretov 10 年之前
父节点
当前提交
09677e0ff8
共有 1 个文件被更改,包括 72 次插入69 次删除
  1. 72 69
      Documentation/CodingStyle

+ 72 - 69
Documentation/CodingStyle

@@ -56,7 +56,6 @@ instead of "double-indenting" the "case" labels.  E.g.:
 		break;
 		break;
 	}
 	}
 
 
-
 Don't put multiple statements on a single line unless you have
 Don't put multiple statements on a single line unless you have
 something to hide:
 something to hide:
 
 
@@ -156,25 +155,25 @@ comments on.
 
 
 Do not unnecessarily use braces where a single statement will do.
 Do not unnecessarily use braces where a single statement will do.
 
 
-if (condition)
-	action();
+	if (condition)
+		action();
 
 
 and
 and
 
 
-if (condition)
-	do_this();
-else
-	do_that();
+	if (condition)
+		do_this();
+	else
+		do_that();
 
 
 This does not apply if only one branch of a conditional statement is a single
 This does not apply if only one branch of a conditional statement is a single
 statement; in the latter case use braces in both branches:
 statement; in the latter case use braces in both branches:
 
 
-if (condition) {
-	do_this();
-	do_that();
-} else {
-	otherwise();
-}
+	if (condition) {
+		do_this();
+		do_that();
+	} else {
+		otherwise();
+	}
 
 
 		3.1:  Spaces
 		3.1:  Spaces
 
 
@@ -186,8 +185,11 @@ although they are not required in the language, as in: "sizeof info" after
 "struct fileinfo info;" is declared).
 "struct fileinfo info;" is declared).
 
 
 So use a space after these keywords:
 So use a space after these keywords:
+
 	if, switch, case, for, do, while
 	if, switch, case, for, do, while
+
 but not with sizeof, typeof, alignof, or __attribute__.  E.g.,
 but not with sizeof, typeof, alignof, or __attribute__.  E.g.,
+
 	s = sizeof(struct file);
 	s = sizeof(struct file);
 
 
 Do not add spaces around (inside) parenthesized expressions.  This example is
 Do not add spaces around (inside) parenthesized expressions.  This example is
@@ -209,12 +211,15 @@ such as any of these:
 	=  +  -  <  >  *  /  %  |  &  ^  <=  >=  ==  !=  ?  :
 	=  +  -  <  >  *  /  %  |  &  ^  <=  >=  ==  !=  ?  :
 
 
 but no space after unary operators:
 but no space after unary operators:
+
 	&  *  +  -  ~  !  sizeof  typeof  alignof  __attribute__  defined
 	&  *  +  -  ~  !  sizeof  typeof  alignof  __attribute__  defined
 
 
 no space before the postfix increment & decrement unary operators:
 no space before the postfix increment & decrement unary operators:
+
 	++  --
 	++  --
 
 
 no space after the prefix increment & decrement unary operators:
 no space after the prefix increment & decrement unary operators:
+
 	++  --
 	++  --
 
 
 and no space around the '.' and "->" structure member operators.
 and no space around the '.' and "->" structure member operators.
@@ -268,13 +273,11 @@ See chapter 6 (Functions).
 		Chapter 5: Typedefs
 		Chapter 5: Typedefs
 
 
 Please don't use things like "vps_t".
 Please don't use things like "vps_t".
-
 It's a _mistake_ to use typedef for structures and pointers. When you see a
 It's a _mistake_ to use typedef for structures and pointers. When you see a
 
 
 	vps_t a;
 	vps_t a;
 
 
 in the source, what does it mean?
 in the source, what does it mean?
-
 In contrast, if it says
 In contrast, if it says
 
 
 	struct virtual_container *a;
 	struct virtual_container *a;
@@ -372,11 +375,11 @@ In source files, separate functions with one blank line.  If the function is
 exported, the EXPORT* macro for it should follow immediately after the closing
 exported, the EXPORT* macro for it should follow immediately after the closing
 function brace line.  E.g.:
 function brace line.  E.g.:
 
 
-int system_is_up(void)
-{
-	return system_state == SYSTEM_RUNNING;
-}
-EXPORT_SYMBOL(system_is_up);
+	int system_is_up(void)
+	{
+		return system_state == SYSTEM_RUNNING;
+	}
+	EXPORT_SYMBOL(system_is_up);
 
 
 In function prototypes, include parameter names with their data types.
 In function prototypes, include parameter names with their data types.
 Although this is not required by the C language, it is preferred in Linux
 Although this is not required by the C language, it is preferred in Linux
@@ -405,34 +408,34 @@ The rationale for using gotos is:
     modifications are prevented
     modifications are prevented
 - saves the compiler work to optimize redundant code away ;)
 - saves the compiler work to optimize redundant code away ;)
 
 
-int fun(int a)
-{
-	int result = 0;
-	char *buffer;
-
-	buffer = kmalloc(SIZE, GFP_KERNEL);
-	if (!buffer)
-		return -ENOMEM;
-
-	if (condition1) {
-		while (loop1) {
-			...
+	int fun(int a)
+	{
+		int result = 0;
+		char *buffer;
+
+		buffer = kmalloc(SIZE, GFP_KERNEL);
+		if (!buffer)
+			return -ENOMEM;
+
+		if (condition1) {
+			while (loop1) {
+				...
+			}
+			result = 1;
+			goto out_buffer;
 		}
 		}
-		result = 1;
-		goto out_buffer;
+		...
+	out_buffer:
+		kfree(buffer);
+		return result;
 	}
 	}
-	...
-out_buffer:
-	kfree(buffer);
-	return result;
-}
 
 
 A common type of bug to be aware of it "one err bugs" which look like this:
 A common type of bug to be aware of it "one err bugs" which look like this:
 
 
-err:
-	kfree(foo->bar);
-	kfree(foo);
-	return ret;
+	err:
+		kfree(foo->bar);
+		kfree(foo);
+		return ret;
 
 
 The bug in this code is that on some exit paths "foo" is NULL.  Normally the
 The bug in this code is that on some exit paths "foo" is NULL.  Normally the
 fix for this is to split it up into two error labels "err_bar:" and "err_foo:".
 fix for this is to split it up into two error labels "err_bar:" and "err_foo:".
@@ -612,7 +615,7 @@ have a reference count on it, you almost certainly have a bug.
 
 
 Names of macros defining constants and labels in enums are capitalized.
 Names of macros defining constants and labels in enums are capitalized.
 
 
-#define CONSTANT 0x12345
+	#define CONSTANT 0x12345
 
 
 Enums are preferred when defining several related constants.
 Enums are preferred when defining several related constants.
 
 
@@ -623,28 +626,28 @@ Generally, inline functions are preferable to macros resembling functions.
 
 
 Macros with multiple statements should be enclosed in a do - while block:
 Macros with multiple statements should be enclosed in a do - while block:
 
 
-#define macrofun(a, b, c) 			\
-	do {					\
-		if (a == 5)			\
-			do_this(b, c);		\
-	} while (0)
+	#define macrofun(a, b, c) 			\
+		do {					\
+			if (a == 5)			\
+				do_this(b, c);		\
+		} while (0)
 
 
 Things to avoid when using macros:
 Things to avoid when using macros:
 
 
 1) macros that affect control flow:
 1) macros that affect control flow:
 
 
-#define FOO(x)					\
-	do {					\
-		if (blah(x) < 0)		\
-			return -EBUGGERED;	\
-	} while(0)
+	#define FOO(x)					\
+		do {					\
+			if (blah(x) < 0)		\
+				return -EBUGGERED;	\
+		} while(0)
 
 
 is a _very_ bad idea.  It looks like a function call but exits the "calling"
 is a _very_ bad idea.  It looks like a function call but exits the "calling"
 function; don't break the internal parsers of those who will read the code.
 function; don't break the internal parsers of those who will read the code.
 
 
 2) macros that depend on having a local variable with a magic name:
 2) macros that depend on having a local variable with a magic name:
 
 
-#define FOO(val) bar(index, val)
+	#define FOO(val) bar(index, val)
 
 
 might look like a good thing, but it's confusing as hell when one reads the
 might look like a good thing, but it's confusing as hell when one reads the
 code and it's prone to breakage from seemingly innocent changes.
 code and it's prone to breakage from seemingly innocent changes.
@@ -656,8 +659,8 @@ bite you if somebody e.g. turns FOO into an inline function.
 must enclose the expression in parentheses. Beware of similar issues with
 must enclose the expression in parentheses. Beware of similar issues with
 macros using parameters.
 macros using parameters.
 
 
-#define CONSTANT 0x4000
-#define CONSTEXP (CONSTANT | 3)
+	#define CONSTANT 0x4000
+	#define CONSTEXP (CONSTANT | 3)
 
 
 The cpp manual deals with macros exhaustively. The gcc internals manual also
 The cpp manual deals with macros exhaustively. The gcc internals manual also
 covers RTL which is used frequently with assembly language in the kernel.
 covers RTL which is used frequently with assembly language in the kernel.
@@ -796,11 +799,11 @@ you should use, rather than explicitly coding some variant of them yourself.
 For example, if you need to calculate the length of an array, take advantage
 For example, if you need to calculate the length of an array, take advantage
 of the macro
 of the macro
 
 
-  #define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0]))
+	#define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0]))
 
 
 Similarly, if you need to calculate the size of some structure member, use
 Similarly, if you need to calculate the size of some structure member, use
 
 
-  #define FIELD_SIZEOF(t, f) (sizeof(((t*)0)->f))
+	#define FIELD_SIZEOF(t, f) (sizeof(((t*)0)->f))
 
 
 There are also min() and max() macros that do strict type checking if you
 There are also min() and max() macros that do strict type checking if you
 need them.  Feel free to peruse that header file to see what else is already
 need them.  Feel free to peruse that header file to see what else is already
@@ -813,19 +816,19 @@ Some editors can interpret configuration information embedded in source files,
 indicated with special markers.  For example, emacs interprets lines marked
 indicated with special markers.  For example, emacs interprets lines marked
 like this:
 like this:
 
 
--*- mode: c -*-
+	-*- mode: c -*-
 
 
 Or like this:
 Or like this:
 
 
-/*
-Local Variables:
-compile-command: "gcc -DMAGIC_DEBUG_FLAG foo.c"
-End:
-*/
+	/*
+	Local Variables:
+	compile-command: "gcc -DMAGIC_DEBUG_FLAG foo.c"
+	End:
+	*/
 
 
 Vim interprets markers that look like this:
 Vim interprets markers that look like this:
 
 
-/* vim:set sw=8 noet */
+	/* vim:set sw=8 noet */
 
 
 Do not include any of these in source files.  People have their own personal
 Do not include any of these in source files.  People have their own personal
 editor configurations, and your source files should not override them.  This
 editor configurations, and your source files should not override them.  This
@@ -902,9 +905,9 @@ At the end of any non-trivial #if or #ifdef block (more than a few lines),
 place a comment after the #endif on the same line, noting the conditional
 place a comment after the #endif on the same line, noting the conditional
 expression used.  For instance:
 expression used.  For instance:
 
 
-#ifdef CONFIG_SOMETHING
-...
-#endif /* CONFIG_SOMETHING */
+	#ifdef CONFIG_SOMETHING
+	...
+	#endif /* CONFIG_SOMETHING */
 
 
 
 
 		Appendix I: References
 		Appendix I: References