Skip to content
Daniele Lacamera edited this page Nov 3, 2016 · 7 revisions

Coding style in kernel space

Please follow the following rules when coding in kernel:

  • Indentation and code arrangement

    • Use 4-spaces indentation, no tabs.
    • Never mix declaration and code. Put all the declarations at the beginning of the block.
    • Don't define variables within the for() statement, even if allowed by C99. This is not java.
    • The opening bracket { at the beginning of the function must be put after a newline, and must not be in the same line as the function signature
    • Don't put multiple statements on the same line, as a general rule. Also avoid if (condition) statement; situations.
    • switch/case blocks: every case must have either a break statement at the end, a return, or a comment that says /* Fall through */
    • One-line statements after a condition are allowed.
  • Standard types usage

    • Use standard types for integers (from stdint.h), so always prefer uint8_t to unsigned char and int32_t to int whenever possible.
  • Custom data types definition and usage

    • typedef is evil and should be avoided whenever possible. Some interfaces require an exception to this (e.g. heap.h requires to define a custom type to be used). This is the only allowed case.
    • In no case ever use typedef to describe a function pointer type. Function pointer declarations must be explicit.
    • Custom types cannot be anonymous (e.g. they must always be referred to using enum foo, struct bar or union foobar)

Work in progress

Clone this wiki locally