1.. include:: ../disclaimer-ita.rst 2 3:Original: :ref:`Documentation/process/submit-checklist.rst <submitchecklist>` 4:Translator: Federico Vaga <federico.vaga@vaga.pv.it> 5 6.. _it_submitchecklist: 7 8Lista delle verifiche da fare prima di inviare una patch per il kernel Linux 9~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 10 11Qui troverete una lista di cose che uno sviluppatore dovrebbe fare per 12vedere le proprie patch accettate pi�� rapidamente. 13 14Tutti questi punti integrano la documentazione fornita riguardo alla 15sottomissione delle patch, in particolare 16:ref:`Documentation/translations/it_IT/process/submitting-patches.rst <it_submittingpatches>`. 17 181) Se state usando delle funzionalit�� del kernel allora includete (#include) 19 i file che le dichiarano/definiscono. Non dipendente dal fatto che un file 20 d'intestazione include anche quelli usati da voi. 21 222) Compilazione pulita: 23 24 a) con le opzioni ``CONFIG`` negli stati ``=y``, ``=m`` e ``=n``. Nessun 25 avviso/errore di ``gcc`` e nessun avviso/errore dal linker. 26 27 b) con ``allnoconfig``, ``allmodconfig`` 28 29 c) quando si usa ``O=builddir`` 30 31 d) Qualsiasi modifica in Documentation/ deve compilare con successo senza 32 avvisi o errori. Usare ``make htmldocs`` o ``make pdfdocs`` per verificare 33 e correggere i problemi 34 353) Compilare per diverse architetture di processore usando strumenti per 36 la cross-compilazione o altri. 37 384) Una buona architettura per la verifica della cross-compilazione �� la ppc64 39 perch�� tende ad usare ``unsigned long`` per le quantit�� a 64-bit. 40 415) Controllate lo stile del codice della vostra patch secondo le direttive 42 scritte in :ref:`Documentation/translations/it_IT/process/coding-style.rst <it_codingstyle>`. 43 Prima dell'invio della patch, usate il verificatore di stile 44 (``script/checkpatch.pl``) per scovare le violazioni pi�� semplici. 45 Dovreste essere in grado di giustificare tutte le violazioni rimanenti nella 46 vostra patch. 47 486) Le opzioni ``CONFIG``, nuove o modificate, non scombussolano il menu 49 di configurazione e sono preimpostate come disabilitate a meno che non 50 soddisfino i criteri descritti in ``Documentation/kbuild/kconfig-language.rst`` 51 alla punto "Voci di menu: valori predefiniti". 52 537) Tutte le nuove opzioni ``Kconfig`` hanno un messaggio di aiuto. 54 558) La patch �� stata accuratamente revisionata rispetto alle pi�� importanti 56 configurazioni ``Kconfig``. Questo �� molto difficile da fare 57 correttamente - un buono lavoro di testa sar�� utile. 58 599) Verificare con sparse. 60 6110) Usare ``make checkstack`` e correggere tutti i problemi rilevati. 62 63 .. note:: 64 65 ``checkstack`` non evidenzia esplicitamente i problemi, ma una funzione 66 che usa pi�� di 512 byte sullo stack �� una buona candidata per una 67 correzione. 68 6911) Includete commenti :ref:`kernel-doc <kernel_doc>` per documentare API 70 globali del kernel. Usate ``make htmldocs`` o ``make pdfdocs`` per 71 verificare i commenti :ref:`kernel-doc <kernel_doc>` ed eventualmente 72 correggerli. 73 7412) La patch �� stata verificata con le seguenti opzioni abilitate 75 contemporaneamente: ``CONFIG_PREEMPT``, ``CONFIG_DEBUG_PREEMPT``, 76 ``CONFIG_DEBUG_SLAB``, ``CONFIG_DEBUG_PAGEALLOC``, ``CONFIG_DEBUG_MUTEXES``, 77 ``CONFIG_DEBUG_SPINLOCK``, ``CONFIG_DEBUG_ATOMIC_SLEEP``, 78 ``CONFIG_PROVE_RCU`` e ``CONFIG_DEBUG_OBJECTS_RCU_HEAD``. 79 8013) La patch �� stata compilata e verificata in esecuzione con, e senza, 81 le opzioni ``CONFIG_SMP`` e ``CONFIG_PREEMPT``. 82 8314) Se la patch ha effetti sull'IO dei dischi, eccetera: allora dev'essere 84 verificata con, e senza, l'opzione ``CONFIG_LBDAF``. 85 8615) Tutti i percorsi del codice sono stati verificati con tutte le funzionalit�� 87 di lockdep abilitate. 88 8916) Tutti i nuovi elementi in ``/proc`` sono documentati in ``Documentation/``. 90 9117) Tutti i nuovi parametri d'avvio del kernel sono documentati in 92 ``Documentation/admin-guide/kernel-parameters.rst``. 93 9418) Tutti i nuovi parametri dei moduli sono documentati con ``MODULE_PARM_DESC()``. 95 9619) Tutte le nuove interfacce verso lo spazio utente sono documentate in 97 ``Documentation/ABI/``. Leggete ``Documentation/ABI/README`` per maggiori 98 informazioni. Le patch che modificano le interfacce utente dovrebbero 99 essere inviate in copia anche a linux-api@vger.kernel.org. 100 10120) La patch �� stata verificata con l'iniezione di fallimenti in slab e 102 nell'allocazione di pagine. Vedere ``Documentation/fault-injection/``. 103 104 Se il nuovo codice �� corposo, potrebbe essere opportuno aggiungere 105 l'iniezione di fallimenti specifici per il sottosistema. 106 10721) Il nuovo codice �� stato compilato con ``gcc -W`` (usate 108 ``make KCFLAGS=-W``). Questo generer�� molti avvisi, ma �� ottimo 109 per scovare bachi come "warning: comparison between signed and unsigned". 110 11122) La patch �� stata verificata dopo essere stata inclusa nella serie di patch 112 -mm; questo al fine di assicurarsi che continui a funzionare assieme a 113 tutte le altre patch in coda e i vari cambiamenti nei sottosistemi VM, VFS 114 e altri. 115 11623) Tutte le barriere di sincronizzazione {per esempio, ``barrier()``, 117 ``rmb()``, ``wmb()``} devono essere accompagnate da un commento nei 118 sorgenti che ne spieghi la logica: cosa fanno e perch��. 119 12024) Se la patch aggiunge nuove chiamate ioctl, allora aggiornate 121 ``Documentation/userspace-api/ioctl/ioctl-number.rst``. 122 12325) Se il codice che avete modificato dipende o usa una qualsiasi interfaccia o 124 funzionalit�� del kernel che �� associata a uno dei seguenti simboli 125 ``Kconfig``, allora verificate che il kernel compili con diverse 126 configurazioni dove i simboli sono disabilitati e/o ``=m`` (se c'�� la 127 possibilit��) [non tutti contemporaneamente, solo diverse combinazioni 128 casuali]: 129 130 ``CONFIG_SMP``, ``CONFIG_SYSFS``, ``CONFIG_PROC_FS``, ``CONFIG_INPUT``, 131 ``CONFIG_PCI``, ``CONFIG_BLOCK``, ``CONFIG_PM``, ``CONFIG_MAGIC_SYSRQ``, 132 ``CONFIG_NET``, ``CONFIG_INET=n`` (ma l'ultimo con ``CONFIG_NET=y``). 133