| .. include:: ../disclaimer-sp.rst |
| |
| :Original: Documentation/process/submit-checklist.rst |
| :Translator: Avadhut Naik <avadhut.naik@amd.com> |
| |
| .. _sp_submitchecklist: |
| |
| Lista de comprobación para enviar parches del kernel de Linux |
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
| |
| Aquí hay algunas cosas básicas que los desarrolladores deben hacer si |
| quieren que sus envíos de parches del kernel sean aceptados más |
| rápidamente. |
| |
| Todo esto está más allá de la documentación que se proporciona en |
| :ref:`Documentation/translations/sp_SP/process/submitting-patches.rst <sp_submittingpatches>` |
| y en otros lugares con respecto al envío de parches del kernel de Linux. |
| |
| 1) Si utiliza una funcionalidad, #include el archivo que define/declara |
| esa funcionalidad. No dependa de otros archivos de encabezado que |
| extraigan los que utiliza. |
| |
| 2) Compile limpiamente: |
| |
| a) Con las opciones ``CONFIG`` aplicables o modificadas ``=y``, ``=m``, |
| y ``=n``. Sin advertencias/errores del compilador ``gcc``, ni |
| advertencias/errores del linker. |
| |
| b) Aprobar ``allnoconfig``, ``allmodconfig`` |
| |
| c) Compila correctamente cuando se usa ``O=builddir`` |
| |
| d) Cualquier documentación o cambios se compilan correctamente sin |
| nuevas advertencias/errores. Utilice ``make htmldocs`` o |
| ``make pdfdocs`` para comprobar la compilación y corregir cualquier |
| problema. |
| |
| 3) Se compila en varias arquitecturas de CPU mediante herramientas de |
| compilación cruzada locales o alguna otra granja de compilación. |
| |
| 4) ppc64 es una buena arquitectura para verificar la compilación cruzada |
| por que tiende a usar ``unsigned long`` para cantidades de 64-bits. |
| |
| 5) Verifique su parche para el estilo general según se detalla en |
| :ref:`Documentation/translations/sp_SP/process/coding-style.rst <sp_codingstyle>`. |
| Verifique las infracciones triviales con el verificador de estilo de |
| parches antes de la entrega (``scripts/checkpatch.pl``). |
| Debería ser capaz de justificar todas las infracciones que permanezcan |
| en su parche. |
| |
| 6) Cualquier opción ``CONFIG`` nueva o modificada no altera el menú de |
| configuración y se desactiva por defecto, a menos que cumpla con los |
| criterios de excepción documentados en |
| ``Documentation/kbuild/kconfig-language.rst`` Atributos del menú: valor por defecto. |
| |
| 7) Todas las nuevas opciones de ``Kconfig`` tienen texto de ayuda. |
| |
| 8) Ha sido revisado cuidadosamente con respecto a las combinaciones |
| relevantes de ``Kconfig``. Esto es muy difícil de hacer correctamente |
| con las pruebas -- la concentración mental da resultados aquí. |
| |
| 9) Verifique limpiamente con sparse. |
| |
| 10) Use ``make checkstack`` y solucione cualquier problema que encuentre. |
| |
| .. note:: |
| |
| ``checkstack`` no señala los problemas explícitamente, pero |
| cualquier función que use más de 512 bytes en la pila es |
| candidata para el cambio. |
| |
| 11) Incluya :ref:`kernel-doc <kernel_doc>` para documentar las API |
| globales del kernel. (No es necesario para funciones estáticas, pero |
| también está bien.) Utilice ``make htmldocs`` o ``make pdfdocs`` |
| para comprobar el :ref:`kernel-doc <kernel_doc>` y solucionar |
| cualquier problema. |
| |
| 12) Ha sido probado con ``CONFIG_PREEMPT``, ``CONFIG_DEBUG_PREEMPT``, |
| ``CONFIG_DEBUG_SLAB``, ``CONFIG_DEBUG_PAGEALLOC``, ``CONFIG_DEBUG_MUTEXES``, |
| ``CONFIG_DEBUG_SPINLOCK``, ``CONFIG_DEBUG_ATOMIC_SLEEP`` |
| ``CONFIG_PROVE_RCU`` y ``CONFIG_DEBUG_OBJECTS_RCU_HEAD`` todos |
| habilitados simultáneamente. |
| |
| 13) Ha sido probado en tiempo de compilación y ejecución con y sin |
| ``CONFIG_SMP`` y ``CONFIG_PREEMPT``. |
| |
| 14) Todas las rutas de código se han ejercido con todas las |
| características de lockdep habilitadas. |
| |
| 15) Todas las nuevas entradas de ``/proc`` están documentadas en |
| ``Documentation/``. |
| |
| 16) Todos los nuevos parámetros de arranque del kernel están documentados |
| en ``Documentation/admin-guide/kernel-parameters.rst``. |
| |
| 17) Todos los nuevos parámetros del módulo están documentados con |
| ``MODULE_PARM_DESC()``. |
| |
| 18) Todas las nuevas interfaces de espacio de usuario están documentadas |
| en ``Documentation/ABI/``. Consulte ``Documentation/ABI/README`` para |
| obtener más información. Los parches que cambian las interfaces del |
| espacio de usuario deben ser CCed a linux-api@vger.kernel.org. |
| |
| 19) Se ha comprobado con la inyección de al menos errores de asignación |
| de slab y página. Consulte ``Documentation/fault-injection/``. |
| |
| Si el nuevo código es sustancial, la adición de la inyección de |
| errores específica del subsistema podría ser apropiada. |
| |
| 20) El nuevo código añadido ha sido compilado con ``gcc -W`` (use |
| ``make KCFLAGS=-W``). Esto generara mucho ruido per es buena para |
| encontrar errores como "warning: comparison between signed and unsigned". |
| |
| 21) Se prueba después de que se haya fusionado en el conjunto de |
| parches -mm para asegurarse de que siga funcionando con todos los |
| demás parches en cola y varios cambios en VM, VFS y otros subsistemas. |
| |
| 22) Todas las barreras de memoria {p.ej., ``barrier()``, ``rmb()``, |
| ``wmb()``} necesitan un comentario en el código fuente que explique |
| la lógica de lo que están haciendo y por qué. |
| |
| 23) Si se añaden algún ioctl en el parche, actualice también |
| ``Documentation/userspace-api/ioctl/ioctl-number.rst``. |
| |
| 24) Si su código fuente modificado depende o utiliza cualquiera de las |
| API o características del kernel que están relacionadas con los |
| siguientes símbolos ``Kconfig`` entonces pruebe varias compilaciones |
| con los símbolos ``Kconfig`` relacionados deshabilitados y/o ``=m`` |
| (si esa opción esta disponible) [no todos estos al mismo tiempo, solo |
| varias/aleatorias combinaciones de ellos]: |
| |
| ``CONFIG_SMP``, ``CONFIG_SYSFS``, ``CONFIG_PROC_FS``, ``CONFIG_INPUT``, ``CONFIG_PCI``, ``CONFIG_BLOCK``, ``CONFIG_PM``, ``CONFIG_MAGIC_SYSRQ`` |
| ``CONFIG_NET``, ``CONFIG_INET=n`` (pero luego con ``CONFIG_NET=y``). |