Estilo de código no Kernel Linux
Baseado em Documentation/CodingStyle do kernel do Linux
1 – Indentação de 8 characteres
Exemplo:
if (x is true) { we do y}
2 – Linhas podem possuir apenas 80 colunas
Exemplo:
printk(KERN_WARNING "Warning this is a long printk with " "3 parameters a: %u b: %u " "c: %u \n", a, b, c);
3 – Localização de Chaves
Localizacao das chaves deve ser na ultima coluna do primeira linha e na
primeira coluna da ultima linha
if (x is true) { we do y}
4 – Nomes de variaveis
LOCAIS devem ser curtas e simples
exemplo: tmp
GLOBAIS devem ser bem descritas, evitando contrações
exemplo: count_active_users()
5 – Evita typedefs.
Evite utilizar typedefs para ponteiros e estruturas, tornando o código
mais complicado.
Exemplo: “struct virtual_container *a;” é muito mais claro do que “vps_t a;”
6 – Funtions devem ser curtas e claras.
Condições:
6.1 - Dimensões (80x24) 6.2 - Não mais do que 5-10 variáveis. 6.3 - Sem isto, você provavelmente está fazendo algo errado.
7 – Centralizar saída de funções.
GOTO não é péssima prático como muitos dizem.
Exemplo:
int fun(int a){ int result = 0; char *buffer = kmalloc(SIZE);
if (buffer == NULL) return -ENOMEM;
if (condition1) { while (loop1) { ... } result = 1; goto out; } ...out: kfree(buffer); return result;}
8 – Comentar é bom, mas NÃO EXAGERE.
Seu código deve ser claro, por isto não coloque no comentário explicações
sobre como seu cógigo funciona.
Veja: Documentation/kernel-doc-nano-HOWTO.txt
9 – Dica pro pessoal que usa emacs.
Eu uso VIM.
10 – Configuração no Kconfig
Definições são indentadas com TAB e help com 2 espaços.
11 – Estruturas de dados.
No kernel não tem garbage collector para corrigir suas porcarias.
Se você sujou então vai ter que limpar. Não esqueça que sua estrutura
pode ser acessada por outra thread, por isto lembre de realizar controle
ou você terá um bug.
12 – Macros
Macros devem ser escritas em letras MAIUSCULAS.
13 – Printing messages
Cuidados com erros de escrita nas mensagens.
14 – Alocando memoria
O kernel possui diversas formas de alocação de memória. A forma mais
recomendada de passar o tamanho memória que deve ser alocado é:
p = kmalloc(sizeof(*p), …);
15 – Funções inline
Neste tópico ele desistimula a utilização de funções inline.
16 – Funções retornam valores ou nomes
0 = sucesso
-Exxx = falhou
17 – Não re-invente macros
18 – Editor modelines
Não adicionei configurações para o seu editor em código fontes.
Comentários e correções são bem vindos em alecrim@gmail.com
Agora sim!