xref: /linux/Documentation/translations/pt_BR/process/submit-checklist.rst (revision 72fdff1416e280e2baaa3cca69574defb998437e)
1*6a6267a2SDaniel Pereira.. SPDX-License-Identifier: GPL-2.0
2*6a6267a2SDaniel Pereira
3*6a6267a2SDaniel Pereira==============================================================
4*6a6267a2SDaniel PereiraLista de verificação para submissão de patches do kernel Linux
5*6a6267a2SDaniel Pereira==============================================================
6*6a6267a2SDaniel Pereira
7*6a6267a2SDaniel PereiraAqui estão algumas coisas básicas que os desenvolvedores devem fazer se
8*6a6267a2SDaniel Pereiraquiserem ver suas submissões de patches de kernel aceitas mais rapidamente.
9*6a6267a2SDaniel Pereira
10*6a6267a2SDaniel PereiraEstas diretrizes vão além da documentação fornecida em
11*6a6267a2SDaniel Pereira:ref:`Documentation/process/submitting-patches.rst <submittingpatches>`
12*6a6267a2SDaniel Pereirae em outros locais sobre o envio de patches para o kernel Linux.
13*6a6267a2SDaniel Pereira
14*6a6267a2SDaniel PereiraRevise seu código
15*6a6267a2SDaniel Pereira=================
16*6a6267a2SDaniel Pereira
17*6a6267a2SDaniel Pereira1) Se você usar um recurso, faça o #include do arquivo que define/declara
18*6a6267a2SDaniel Pereira   esse recurso. Não dependa de outros arquivos de cabeçalho que incluam
19*6a6267a2SDaniel Pereira   os que você usa de forma indireta.
20*6a6267a2SDaniel Pereira
21*6a6267a2SDaniel Pereira2) Verifique o estilo geral do seu patch conforme detalhado em
22*6a6267a2SDaniel Pereira   :ref:`Documentation//process/coding-style.rst <codingstyle>`.
23*6a6267a2SDaniel Pereira
24*6a6267a2SDaniel Pereira3) Todas as barreiras de memória {por exemplo, ``barrier()``, ``rmb()``,
25*6a6267a2SDaniel Pereira   ``wmb()``} precisam de um comentário no código-fonte que explique a
26*6a6267a2SDaniel Pereira   lógica do que estão fazendo e o porquê.
27*6a6267a2SDaniel Pereira
28*6a6267a2SDaniel PereiraRevise as alterações do Kconfig
29*6a6267a2SDaniel Pereira===============================
30*6a6267a2SDaniel Pereira
31*6a6267a2SDaniel Pereira1) Quaisquer novas ou modificadas opções de ``CONFIG`` não bagunçam o
32*6a6267a2SDaniel Pereira   menu de configuração e têm 'desativado' (off) como padrão, a menos que
33*6a6267a2SDaniel Pereira   atendam aos critérios de exceção documentados em
34*6a6267a2SDaniel Pereira   ``Documentation/kbuild/kconfig-language.rst``, atributos de menu: valor
35*6a6267a2SDaniel Pereira   padrão.
36*6a6267a2SDaniel Pereira
37*6a6267a2SDaniel Pereira2) Todas as novas opções de ``Kconfig`` possuem texto de ajuda.
38*6a6267a2SDaniel Pereira
39*6a6267a2SDaniel Pereira3) Foram cuidadosamente revisadas com relação às combinações relevantes de
40*6a6267a2SDaniel Pereira   ``Kconfig``. Isso é muito difícil de acertar apenas com testes --- exige
41*6a6267a2SDaniel Pereira   capacidade de raciocínio.
42*6a6267a2SDaniel Pereira   pays off here.
43*6a6267a2SDaniel Pereira
44*6a6267a2SDaniel PereiraForneça documentação
45*6a6267a2SDaniel Pereira====================
46*6a6267a2SDaniel Pereira
47*6a6267a2SDaniel Pereira1) Inclua :ref:`kernel-doc <kernel_doc>` para documentar as APIs globais
48*6a6267a2SDaniel Pereira   do kernel. (Não é obrigatório para funções estáticas, mas também é
49*6a6267a2SDaniel Pereira   aceitável nelas.)
50*6a6267a2SDaniel Pereira
51*6a6267a2SDaniel Pereira2) Todas as novas entradas em ``/proc`` devem ser documentadas sob
52*6a6267a2SDaniel Pereira   ``Documentation/``.
53*6a6267a2SDaniel Pereira
54*6a6267a2SDaniel Pereira3) Todos os novos parâmetros de inicialização (boot) do kernel devem ser
55*6a6267a2SDaniel Pereira   documentados em ``Documentation/admin-guide/kernel-parameters.rst``.
56*6a6267a2SDaniel Pereira
57*6a6267a2SDaniel Pereira4) Todos os novos parâmetros de módulo devem ser documentados com
58*6a6267a2SDaniel Pereira   ``MODULE_PARM_DESC()``.
59*6a6267a2SDaniel Pereira
60*6a6267a2SDaniel Pereira5) Todas as novas interfaces com o espaço de usuário (userspace) devem ser
61*6a6267a2SDaniel Pereira   documentadas em ``Documentation/ABI/``. Consulte
62*6a6267a2SDaniel Pereira   ``Documentation/admin-guide/abi.rst`` (ou ``Documentation/ABI/README``)
63*6a6267a2SDaniel Pereira   para obter mais informações. Patches que alteram interfaces de espaço
64*6a6267a2SDaniel Pereira   de usuário devem incluir em cópia (CC) linux-api@vger.kernel.org.
65*6a6267a2SDaniel Pereira
66*6a6267a2SDaniel Pereira6) Se quaisquer ioctls forem adicionados pelo patch, atualize também
67*6a6267a2SDaniel Pereira   ``Documentation/userspace-api/ioctl/ioctl-number.rst``.
68*6a6267a2SDaniel Pereira
69*6a6267a2SDaniel PereiraVerifique seu código com ferramentas
70*6a6267a2SDaniel Pereira====================================
71*6a6267a2SDaniel Pereira
72*6a6267a2SDaniel Pereira1) Verifique se há violações triviais com o verificador de estilo de patch
73*6a6267a2SDaniel Pereira   antes do envio (``scripts/checkpatch.pl``). Você deve ser capaz de
74*6a6267a2SDaniel Pereira   justificar todas as violações que permanecerem no seu patch.
75*6a6267a2SDaniel Pereira
76*6a6267a2SDaniel Pereira2) Faça uma verificação limpa com o sparse.
77*6a6267a2SDaniel Pereira
78*6a6267a2SDaniel Pereira3) Use ``make checkstack`` e corrija quaisquer problemas encontrados por ele.
79*6a6267a2SDaniel Pereira   Observe que o ``checkstack`` não aponta problemas explicitamente, mas
80*6a6267a2SDaniel Pereira   qualquer função individual que utilize mais de 512 bytes na pilha é uma
81*6a6267a2SDaniel Pereira   candidata a alteração.
82*6a6267a2SDaniel Pereira
83*6a6267a2SDaniel PereiraCompile seu código
84*6a6267a2SDaniel Pereira==================
85*6a6267a2SDaniel Pereira
86*6a6267a2SDaniel Pereira1) Compila de forma limpa:
87*6a6267a2SDaniel Pereira
88*6a6267a2SDaniel Pereira  a) com as opções de ``CONFIG`` aplicáveis ou modificadas definidas como
89*6a6267a2SDaniel Pereira     ``=y``, ``=m`` e ``=n``. Sem avisos/erros do ``gcc``, sem avisos/erros do
90*6a6267a2SDaniel Pereira     vinculador (linker).
91*6a6267a2SDaniel Pereira
92*6a6267a2SDaniel Pereira  b) Passa em ``allnoconfig``, ``allmodconfig``
93*6a6267a2SDaniel Pereira
94*6a6267a2SDaniel Pereira  c) Compila com sucesso ao usar ``O=builddir``
95*6a6267a2SDaniel Pereira
96*6a6267a2SDaniel Pereira  d) Quaisquer alterações em Documentation/ compilam com sucesso sem novos
97*6a6267a2SDaniel Pereira     avisos/erros. Use ``make htmldocs`` ou ``make pdfdocs`` para verificar
98*6a6267a2SDaniel Pereira     a compilação e corrigir quaisquer problemas.
99*6a6267a2SDaniel Pereira
100*6a6267a2SDaniel Pereira2) Compila em múltiplas arquiteturas de CPU usando ferramentas locais de
101*6a6267a2SDaniel Pereira   compilação cruzada (cross-compile) ou alguma outra fazenda de compilação
102*6a6267a2SDaniel Pereira   (build farm).
103*6a6267a2SDaniel Pereira   Observe que testar em arquiteturas de diferentes tamanhos de palavra
104*6a6267a2SDaniel Pereira   (32 e 64 bits) e diferentes endianness (big- e little-endian) é eficaz
105*6a6267a2SDaniel Pereira   para capturar vários problemas de portabilidade decorrentes de falsas
106*6a6267a2SDaniel Pereira   suposições sobre o intervalo de quantidade representável, alinhamento
107*6a6267a2SDaniel Pereira   de dados ou endianness, entre outros.
108*6a6267a2SDaniel Pereira
109*6a6267a2SDaniel Pereira3) O novo código adicionado foi compilado com ``gcc -W`` (use
110*6a6267a2SDaniel Pereira   ``make KCFLAGS=-W``). Isso gerará muito ruído, mas é bom para encontrar
111*6a6267a2SDaniel Pereira   bugs como "warning: comparison between signed and unsigned".
112*6a6267a2SDaniel Pereira
113*6a6267a2SDaniel Pereira4) Se o seu código-fonte modificado depender ou usar quaisquer APIs ou
114*6a6267a2SDaniel Pereira   recursos do kernel relacionados aos seguintes símbolos do ``Kconfig``,
115*6a6267a2SDaniel Pereira   teste múltiplas compilações com os símbolos relacionados do ``Kconfig``
116*6a6267a2SDaniel Pereira   desativados e/ou definidos como ``=m`` (se essa opção estiver disponível)
117*6a6267a2SDaniel Pereira   [não todos ao mesmo tempo, apenas combinações variadas/aleatórias deles]:
118*6a6267a2SDaniel Pereira
119*6a6267a2SDaniel Pereira   ``CONFIG_SMP``, ``CONFIG_SYSFS``, ``CONFIG_PROC_FS``, ``CONFIG_INPUT``,
120*6a6267a2SDaniel Pereira   ``CONFIG_PCI``, ``CONFIG_BLOCK``, ``CONFIG_PM``, ``CONFIG_MAGIC_SYSRQ``,
121*6a6267a2SDaniel Pereira   ``CONFIG_NET``, ``CONFIG_INET=n`` (mas este último com ``CONFIG_NET=y``).
122*6a6267a2SDaniel Pereira
123*6a6267a2SDaniel PereiraTeste seu código
124*6a6267a2SDaniel Pereira================
125*6a6267a2SDaniel Pereira
126*6a6267a2SDaniel Pereira1) Foi testado com ``CONFIG_PREEMPT``, ``CONFIG_DEBUG_PREEMPT``,
127*6a6267a2SDaniel Pereira   ``CONFIG_SLUB_DEBUG``, ``CONFIG_DEBUG_PAGEALLOC``,
128*6a6267a2SDaniel Pereira   ``CONFIG_DEBUG_MUTEXES``, ``CONFIG_DEBUG_SPINLOCK``,
129*6a6267a2SDaniel Pereira   ``CONFIG_DEBUG_ATOMIC_SLEEP``, ``CONFIG_PROVE_RCU`` e
130*6a6267a2SDaniel Pereira   ``CONFIG_DEBUG_OBJECTS_RCU_HEAD`` todos habilitados simultaneamente.
131*6a6267a2SDaniel Pereira
132*6a6267a2SDaniel Pereira2) Foi testado em tempo de compilação e de execução com e sem ``CONFIG_SMP``
133*6a6267a2SDaniel Pereira   e ``CONFIG_PREEMPT``.
134*6a6267a2SDaniel Pereira
135*6a6267a2SDaniel Pereira3) Todos os caminhos de código foram executados com todos os recursos de
136*6a6267a2SDaniel Pereira   lockdep ativados.
137*6a6267a2SDaniel Pereira
138*6a6267a2SDaniel Pereira4) Foi verificado com a injeção de falhas de pelo menos slab e alocação de
139*6a6267a2SDaniel Pereira   páginas. Consulte ``Documentation/fault-injection/``.
140*6a6267a2SDaniel Pereira   Se o novo código for substancial, a adição de injeção de falhas específica
141*6a6267a2SDaniel Pereira   do subsistema pode ser apropriada.
142*6a6267a2SDaniel Pereira
143*6a6267a2SDaniel Pereira5) Testado com a tag mais recente do linux-next para garantir que ele ainda
144*6a6267a2SDaniel Pereira   funcione com todos os outros patches enfileirados e com várias alterações
145*6a6267a2SDaniel Pereira   na VM, VFS e outros subsistemas.
146