diff options
author | Linus Torvalds <torvalds@ppc970.osdl.org> | 2005-04-16 18:20:36 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@ppc970.osdl.org> | 2005-04-16 18:20:36 -0400 |
commit | 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 (patch) | |
tree | 0bba044c4ce775e45a88a51686b5d9f90697ea9d /Documentation/CodingStyle |
Linux-2.6.12-rc2v2.6.12-rc2
Initial git repository build. I'm not bothering with the full history,
even though we have it. We can create a separate "historical" git
archive of that later if we want to, and in the meantime it's about
3.2GB when imported into git - space that would just make the early
git days unnecessarily complicated, when we don't have a lot of good
infrastructure for it.
Let it rip!
Diffstat (limited to 'Documentation/CodingStyle')
-rw-r--r-- | Documentation/CodingStyle | 431 |
1 files changed, 431 insertions, 0 deletions
diff --git a/Documentation/CodingStyle b/Documentation/CodingStyle new file mode 100644 index 000000000000..f25b3953f513 --- /dev/null +++ b/Documentation/CodingStyle | |||
@@ -0,0 +1,431 @@ | |||
1 | |||
2 | Linux kernel coding style | ||
3 | |||
4 | This is a short document describing the preferred coding style for the | ||
5 | linux kernel. Coding style is very personal, and I won't _force_ my | ||
6 | views on anybody, but this is what goes for anything that I have to be | ||
7 | able to maintain, and I'd prefer it for most other things too. Please | ||
8 | at least consider the points made here. | ||
9 | |||
10 | First off, I'd suggest printing out a copy of the GNU coding standards, | ||
11 | and NOT read it. Burn them, it's a great symbolic gesture. | ||
12 | |||
13 | Anyway, here goes: | ||
14 | |||
15 | |||
16 | Chapter 1: Indentation | ||
17 | |||
18 | Tabs are 8 characters, and thus indentations are also 8 characters. | ||
19 | There are heretic movements that try to make indentations 4 (or even 2!) | ||
20 | characters deep, and that is akin to trying to define the value of PI to | ||
21 | be 3. | ||
22 | |||
23 | Rationale: The whole idea behind indentation is to clearly define where | ||
24 | a block of control starts and ends. Especially when you've been looking | ||
25 | at your screen for 20 straight hours, you'll find it a lot easier to see | ||
26 | how the indentation works if you have large indentations. | ||
27 | |||
28 | Now, some people will claim that having 8-character indentations makes | ||
29 | the code move too far to the right, and makes it hard to read on a | ||
30 | 80-character terminal screen. The answer to that is that if you need | ||
31 | more than 3 levels of indentation, you're screwed anyway, and should fix | ||
32 | your program. | ||
33 | |||
34 | In short, 8-char indents make things easier to read, and have the added | ||
35 | benefit of warning you when you're nesting your functions too deep. | ||
36 | Heed that warning. | ||
37 | |||
38 | Don't put multiple statements on a single line unless you have | ||
39 | something to hide: | ||
40 | |||
41 | if (condition) do_this; | ||
42 | do_something_everytime; | ||
43 | |||
44 | Outside of comments, documentation and except in Kconfig, spaces are never | ||
45 | used for indentation, and the above example is deliberately broken. | ||
46 | |||
47 | Get a decent editor and don't leave whitespace at the end of lines. | ||
48 | |||
49 | |||
50 | Chapter 2: Breaking long lines and strings | ||
51 | |||
52 | Coding style is all about readability and maintainability using commonly | ||
53 | available tools. | ||
54 | |||
55 | The limit on the length of lines is 80 columns and this is a hard limit. | ||
56 | |||
57 | Statements longer than 80 columns will be broken into sensible chunks. | ||
58 | Descendants are always substantially shorter than the parent and are placed | ||
59 | substantially to the right. The same applies to function headers with a long | ||
60 | argument list. Long strings are as well broken into shorter strings. | ||
61 | |||
62 | void fun(int a, int b, int c) | ||
63 | { | ||
64 | if (condition) | ||
65 | printk(KERN_WARNING "Warning this is a long printk with " | ||
66 | "3 parameters a: %u b: %u " | ||
67 | "c: %u \n", a, b, c); | ||
68 | else | ||
69 | next_statement; | ||
70 | } | ||
71 | |||
72 | Chapter 3: Placing Braces | ||
73 | |||
74 | The other issue that always comes up in C styling is the placement of | ||
75 | braces. Unlike the indent size, there are few technical reasons to | ||
76 | choose one placement strategy over the other, but the preferred way, as | ||
77 | shown to us by the prophets Kernighan and Ritchie, is to put the opening | ||
78 | brace last on the line, and put the closing brace first, thusly: | ||
79 | |||
80 | if (x is true) { | ||
81 | we do y | ||
82 | } | ||
83 | |||
84 | However, there is one special case, namely functions: they have the | ||
85 | opening brace at the beginning of the next line, thus: | ||
86 | |||
87 | int function(int x) | ||
88 | { | ||
89 | body of function | ||
90 | } | ||
91 | |||
92 | Heretic people all over the world have claimed that this inconsistency | ||
93 | is ... well ... inconsistent, but all right-thinking people know that | ||
94 | (a) K&R are _right_ and (b) K&R are right. Besides, functions are | ||
95 | special anyway (you can't nest them in C). | ||
96 | |||
97 | Note that the closing brace is empty on a line of its own, _except_ in | ||
98 | the cases where it is followed by a continuation of the same statement, | ||
99 | ie a "while" in a do-statement or an "else" in an if-statement, like | ||
100 | this: | ||
101 | |||
102 | do { | ||
103 | body of do-loop | ||
104 | } while (condition); | ||
105 | |||
106 | and | ||
107 | |||
108 | if (x == y) { | ||
109 | .. | ||
110 | } else if (x > y) { | ||
111 | ... | ||
112 | } else { | ||
113 | .... | ||
114 | } | ||
115 | |||
116 | Rationale: K&R. | ||
117 | |||
118 | Also, note that this brace-placement also minimizes the number of empty | ||
119 | (or almost empty) lines, without any loss of readability. Thus, as the | ||
120 | supply of new-lines on your screen is not a renewable resource (think | ||
121 | 25-line terminal screens here), you have more empty lines to put | ||
122 | comments on. | ||
123 | |||
124 | |||
125 | Chapter 4: Naming | ||
126 | |||
127 | C is a Spartan language, and so should your naming be. Unlike Modula-2 | ||
128 | and Pascal programmers, C programmers do not use cute names like | ||
129 | ThisVariableIsATemporaryCounter. A C programmer would call that | ||
130 | variable "tmp", which is much easier to write, and not the least more | ||
131 | difficult to understand. | ||
132 | |||
133 | HOWEVER, while mixed-case names are frowned upon, descriptive names for | ||
134 | global variables are a must. To call a global function "foo" is a | ||
135 | shooting offense. | ||
136 | |||
137 | GLOBAL variables (to be used only if you _really_ need them) need to | ||
138 | have descriptive names, as do global functions. If you have a function | ||
139 | that counts the number of active users, you should call that | ||
140 | "count_active_users()" or similar, you should _not_ call it "cntusr()". | ||
141 | |||
142 | Encoding the type of a function into the name (so-called Hungarian | ||
143 | notation) is brain damaged - the compiler knows the types anyway and can | ||
144 | check those, and it only confuses the programmer. No wonder MicroSoft | ||
145 | makes buggy programs. | ||
146 | |||
147 | LOCAL variable names should be short, and to the point. If you have | ||
148 | some random integer loop counter, it should probably be called "i". | ||
149 | Calling it "loop_counter" is non-productive, if there is no chance of it | ||
150 | being mis-understood. Similarly, "tmp" can be just about any type of | ||
151 | variable that is used to hold a temporary value. | ||
152 | |||
153 | If you are afraid to mix up your local variable names, you have another | ||
154 | problem, which is called the function-growth-hormone-imbalance syndrome. | ||
155 | See next chapter. | ||
156 | |||
157 | |||
158 | Chapter 5: Functions | ||
159 | |||
160 | Functions should be short and sweet, and do just one thing. They should | ||
161 | fit on one or two screenfuls of text (the ISO/ANSI screen size is 80x24, | ||
162 | as we all know), and do one thing and do that well. | ||
163 | |||
164 | The maximum length of a function is inversely proportional to the | ||
165 | complexity and indentation level of that function. So, if you have a | ||
166 | conceptually simple function that is just one long (but simple) | ||
167 | case-statement, where you have to do lots of small things for a lot of | ||
168 | different cases, it's OK to have a longer function. | ||
169 | |||
170 | However, if you have a complex function, and you suspect that a | ||
171 | less-than-gifted first-year high-school student might not even | ||
172 | understand what the function is all about, you should adhere to the | ||
173 | maximum limits all the more closely. Use helper functions with | ||
174 | descriptive names (you can ask the compiler to in-line them if you think | ||
175 | it's performance-critical, and it will probably do a better job of it | ||
176 | than you would have done). | ||
177 | |||
178 | Another measure of the function is the number of local variables. They | ||
179 | shouldn't exceed 5-10, or you're doing something wrong. Re-think the | ||
180 | function, and split it into smaller pieces. A human brain can | ||
181 | generally easily keep track of about 7 different things, anything more | ||
182 | and it gets confused. You know you're brilliant, but maybe you'd like | ||
183 | to understand what you did 2 weeks from now. | ||
184 | |||
185 | |||
186 | Chapter 6: Centralized exiting of functions | ||
187 | |||
188 | Albeit deprecated by some people, the equivalent of the goto statement is | ||
189 | used frequently by compilers in form of the unconditional jump instruction. | ||
190 | |||
191 | The goto statement comes in handy when a function exits from multiple | ||
192 | locations and some common work such as cleanup has to be done. | ||
193 | |||
194 | The rationale is: | ||
195 | |||
196 | - unconditional statements are easier to understand and follow | ||
197 | - nesting is reduced | ||
198 | - errors by not updating individual exit points when making | ||
199 | modifications are prevented | ||
200 | - saves the compiler work to optimize redundant code away ;) | ||
201 | |||
202 | int fun(int ) | ||
203 | { | ||
204 | int result = 0; | ||
205 | char *buffer = kmalloc(SIZE); | ||
206 | |||
207 | if (buffer == NULL) | ||
208 | return -ENOMEM; | ||
209 | |||
210 | if (condition1) { | ||
211 | while (loop1) { | ||
212 | ... | ||
213 | } | ||
214 | result = 1; | ||
215 | goto out; | ||
216 | } | ||
217 | ... | ||
218 | out: | ||
219 | kfree(buffer); | ||
220 | return result; | ||
221 | } | ||
222 | |||
223 | Chapter 7: Commenting | ||
224 | |||
225 | Comments are good, but there is also a danger of over-commenting. NEVER | ||
226 | try to explain HOW your code works in a comment: it's much better to | ||
227 | write the code so that the _working_ is obvious, and it's a waste of | ||
228 | time to explain badly written code. | ||
229 | |||
230 | Generally, you want your comments to tell WHAT your code does, not HOW. | ||
231 | Also, try to avoid putting comments inside a function body: if the | ||
232 | function is so complex that you need to separately comment parts of it, | ||
233 | you should probably go back to chapter 5 for a while. You can make | ||
234 | small comments to note or warn about something particularly clever (or | ||
235 | ugly), but try to avoid excess. Instead, put the comments at the head | ||
236 | of the function, telling people what it does, and possibly WHY it does | ||
237 | it. | ||
238 | |||
239 | |||
240 | Chapter 8: You've made a mess of it | ||
241 | |||
242 | That's OK, we all do. You've probably been told by your long-time Unix | ||
243 | user helper that "GNU emacs" automatically formats the C sources for | ||
244 | you, and you've noticed that yes, it does do that, but the defaults it | ||
245 | uses are less than desirable (in fact, they are worse than random | ||
246 | typing - an infinite number of monkeys typing into GNU emacs would never | ||
247 | make a good program). | ||
248 | |||
249 | So, you can either get rid of GNU emacs, or change it to use saner | ||
250 | values. To do the latter, you can stick the following in your .emacs file: | ||
251 | |||
252 | (defun linux-c-mode () | ||
253 | "C mode with adjusted defaults for use with the Linux kernel." | ||
254 | (interactive) | ||
255 | (c-mode) | ||
256 | (c-set-style "K&R") | ||
257 | (setq tab-width 8) | ||
258 | (setq indent-tabs-mode t) | ||
259 | (setq c-basic-offset 8)) | ||
260 | |||
261 | This will define the M-x linux-c-mode command. When hacking on a | ||
262 | module, if you put the string -*- linux-c -*- somewhere on the first | ||
263 | two lines, this mode will be automatically invoked. Also, you may want | ||
264 | to add | ||
265 | |||
266 | (setq auto-mode-alist (cons '("/usr/src/linux.*/.*\\.[ch]$" . linux-c-mode) | ||
267 | auto-mode-alist)) | ||
268 | |||
269 | to your .emacs file if you want to have linux-c-mode switched on | ||
270 | automagically when you edit source files under /usr/src/linux. | ||
271 | |||
272 | But even if you fail in getting emacs to do sane formatting, not | ||
273 | everything is lost: use "indent". | ||
274 | |||
275 | Now, again, GNU indent has the same brain-dead settings that GNU emacs | ||
276 | has, which is why you need to give it a few command line options. | ||
277 | However, that's not too bad, because even the makers of GNU indent | ||
278 | recognize the authority of K&R (the GNU people aren't evil, they are | ||
279 | just severely misguided in this matter), so you just give indent the | ||
280 | options "-kr -i8" (stands for "K&R, 8 character indents"), or use | ||
281 | "scripts/Lindent", which indents in the latest style. | ||
282 | |||
283 | "indent" has a lot of options, and especially when it comes to comment | ||
284 | re-formatting you may want to take a look at the man page. But | ||
285 | remember: "indent" is not a fix for bad programming. | ||
286 | |||
287 | |||
288 | Chapter 9: Configuration-files | ||
289 | |||
290 | For configuration options (arch/xxx/Kconfig, and all the Kconfig files), | ||
291 | somewhat different indentation is used. | ||
292 | |||
293 | Help text is indented with 2 spaces. | ||
294 | |||
295 | if CONFIG_EXPERIMENTAL | ||
296 | tristate CONFIG_BOOM | ||
297 | default n | ||
298 | help | ||
299 | Apply nitroglycerine inside the keyboard (DANGEROUS) | ||
300 | bool CONFIG_CHEER | ||
301 | depends on CONFIG_BOOM | ||
302 | default y | ||
303 | help | ||
304 | Output nice messages when you explode | ||
305 | endif | ||
306 | |||
307 | Generally, CONFIG_EXPERIMENTAL should surround all options not considered | ||
308 | stable. All options that are known to trash data (experimental write- | ||
309 | support for file-systems, for instance) should be denoted (DANGEROUS), other | ||
310 | experimental options should be denoted (EXPERIMENTAL). | ||
311 | |||
312 | |||
313 | Chapter 10: Data structures | ||
314 | |||
315 | Data structures that have visibility outside the single-threaded | ||
316 | environment they are created and destroyed in should always have | ||
317 | reference counts. In the kernel, garbage collection doesn't exist (and | ||
318 | outside the kernel garbage collection is slow and inefficient), which | ||
319 | means that you absolutely _have_ to reference count all your uses. | ||
320 | |||
321 | Reference counting means that you can avoid locking, and allows multiple | ||
322 | users to have access to the data structure in parallel - and not having | ||
323 | to worry about the structure suddenly going away from under them just | ||
324 | because they slept or did something else for a while. | ||
325 | |||
326 | Note that locking is _not_ a replacement for reference counting. | ||
327 | Locking is used to keep data structures coherent, while reference | ||
328 | counting is a memory management technique. Usually both are needed, and | ||
329 | they are not to be confused with each other. | ||
330 | |||
331 | Many data structures can indeed have two levels of reference counting, | ||
332 | when there are users of different "classes". The subclass count counts | ||
333 | the number of subclass users, and decrements the global count just once | ||
334 | when the subclass count goes to zero. | ||
335 | |||
336 | Examples of this kind of "multi-level-reference-counting" can be found in | ||
337 | memory management ("struct mm_struct": mm_users and mm_count), and in | ||
338 | filesystem code ("struct super_block": s_count and s_active). | ||
339 | |||
340 | Remember: if another thread can find your data structure, and you don't | ||
341 | have a reference count on it, you almost certainly have a bug. | ||
342 | |||
343 | |||
344 | Chapter 11: Macros, Enums, Inline functions and RTL | ||
345 | |||
346 | Names of macros defining constants and labels in enums are capitalized. | ||
347 | |||
348 | #define CONSTANT 0x12345 | ||
349 | |||
350 | Enums are preferred when defining several related constants. | ||
351 | |||
352 | CAPITALIZED macro names are appreciated but macros resembling functions | ||
353 | may be named in lower case. | ||
354 | |||
355 | Generally, inline functions are preferable to macros resembling functions. | ||
356 | |||
357 | Macros with multiple statements should be enclosed in a do - while block: | ||
358 | |||
359 | #define macrofun(a, b, c) \ | ||
360 | do { \ | ||
361 | if (a == 5) \ | ||
362 | do_this(b, c); \ | ||
363 | } while (0) | ||
364 | |||
365 | Things to avoid when using macros: | ||
366 | |||
367 | 1) macros that affect control flow: | ||
368 | |||
369 | #define FOO(x) \ | ||
370 | do { \ | ||
371 | if (blah(x) < 0) \ | ||
372 | return -EBUGGERED; \ | ||
373 | } while(0) | ||
374 | |||
375 | is a _very_ bad idea. It looks like a function call but exits the "calling" | ||
376 | function; don't break the internal parsers of those who will read the code. | ||
377 | |||
378 | 2) macros that depend on having a local variable with a magic name: | ||
379 | |||
380 | #define FOO(val) bar(index, val) | ||
381 | |||
382 | might look like a good thing, but it's confusing as hell when one reads the | ||
383 | code and it's prone to breakage from seemingly innocent changes. | ||
384 | |||
385 | 3) macros with arguments that are used as l-values: FOO(x) = y; will | ||
386 | bite you if somebody e.g. turns FOO into an inline function. | ||
387 | |||
388 | 4) forgetting about precedence: macros defining constants using expressions | ||
389 | must enclose the expression in parentheses. Beware of similar issues with | ||
390 | macros using parameters. | ||
391 | |||
392 | #define CONSTANT 0x4000 | ||
393 | #define CONSTEXP (CONSTANT | 3) | ||
394 | |||
395 | The cpp manual deals with macros exhaustively. The gcc internals manual also | ||
396 | covers RTL which is used frequently with assembly language in the kernel. | ||
397 | |||
398 | |||
399 | Chapter 12: Printing kernel messages | ||
400 | |||
401 | Kernel developers like to be seen as literate. Do mind the spelling | ||
402 | of kernel messages to make a good impression. Do not use crippled | ||
403 | words like "dont" and use "do not" or "don't" instead. | ||
404 | |||
405 | Kernel messages do not have to be terminated with a period. | ||
406 | |||
407 | Printing numbers in parentheses (%d) adds no value and should be avoided. | ||
408 | |||
409 | |||
410 | Chapter 13: References | ||
411 | |||
412 | The C Programming Language, Second Edition | ||
413 | by Brian W. Kernighan and Dennis M. Ritchie. | ||
414 | Prentice Hall, Inc., 1988. | ||
415 | ISBN 0-13-110362-8 (paperback), 0-13-110370-9 (hardback). | ||
416 | URL: http://cm.bell-labs.com/cm/cs/cbook/ | ||
417 | |||
418 | The Practice of Programming | ||
419 | by Brian W. Kernighan and Rob Pike. | ||
420 | Addison-Wesley, Inc., 1999. | ||
421 | ISBN 0-201-61586-X. | ||
422 | URL: http://cm.bell-labs.com/cm/cs/tpop/ | ||
423 | |||
424 | GNU manuals - where in compliance with K&R and this text - for cpp, gcc, | ||
425 | gcc internals and indent, all available from http://www.gnu.org | ||
426 | |||
427 | WG14 is the international standardization working group for the programming | ||
428 | language C, URL: http://std.dkuug.dk/JTC1/SC22/WG14/ | ||
429 | |||
430 | -- | ||
431 | Last updated on 16 February 2004 by a community effort on LKML. | ||