Back to home page

OSCL-LXR

 
 

    


0001 .. include:: ../disclaimer-ita.rst
0002 
0003 :Original: :ref:`Documentation/process/submit-checklist.rst <submitchecklist>`
0004 :Translator: Federico Vaga <federico.vaga@vaga.pv.it>
0005 
0006 .. _it_submitchecklist:
0007 
0008 Lista delle verifiche da fare prima di inviare una patch per il kernel Linux
0009 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
0010 
0011 Qui troverete una lista di cose che uno sviluppatore dovrebbe fare per
0012 vedere le proprie patch accettate più rapidamente.
0013 
0014 Tutti questi punti integrano la documentazione fornita riguardo alla
0015 sottomissione delle patch, in particolare
0016 :ref:`Documentation/translations/it_IT/process/submitting-patches.rst <it_submittingpatches>`.
0017 
0018 1) Se state usando delle funzionalità del kernel allora includete (#include)
0019    i file che le dichiarano/definiscono.  Non dipendente dal fatto che un file
0020    d'intestazione include anche quelli usati da voi.
0021 
0022 2) Compilazione pulita:
0023 
0024   a) con le opzioni ``CONFIG`` negli stati ``=y``, ``=m`` e ``=n``. Nessun
0025      avviso/errore di ``gcc`` e nessun avviso/errore dal linker.
0026 
0027   b) con ``allnoconfig``, ``allmodconfig``
0028 
0029   c) quando si usa ``O=builddir``
0030 
0031   d) Qualsiasi modifica in Documentation/ deve compilare con successo senza
0032      avvisi o errori. Usare ``make htmldocs`` o ``make pdfdocs`` per verificare
0033      e correggere i problemi
0034 
0035 3) Compilare per diverse architetture di processore usando strumenti per
0036    la cross-compilazione o altri.
0037 
0038 4) Una buona architettura per la verifica della cross-compilazione è la ppc64
0039    perché tende ad usare ``unsigned long`` per le quantità a 64-bit.
0040 
0041 5) Controllate lo stile del codice della vostra patch secondo le direttive
0042    scritte in :ref:`Documentation/translations/it_IT/process/coding-style.rst <it_codingstyle>`.
0043    Prima dell'invio della patch, usate il verificatore di stile
0044    (``script/checkpatch.pl``) per scovare le violazioni più semplici.
0045    Dovreste essere in grado di giustificare tutte le violazioni rimanenti nella
0046    vostra patch.
0047 
0048 6) Le opzioni ``CONFIG``, nuove o modificate, non scombussolano il menu
0049    di configurazione e sono preimpostate come disabilitate a meno che non
0050    soddisfino i criteri descritti in ``Documentation/kbuild/kconfig-language.rst``
0051    alla punto "Voci di menu: valori predefiniti".
0052 
0053 7) Tutte le nuove opzioni ``Kconfig`` hanno un messaggio di aiuto.
0054 
0055 8) La patch è stata accuratamente revisionata rispetto alle più importanti
0056    configurazioni ``Kconfig``.  Questo è molto difficile da fare
0057    correttamente - un buono lavoro di testa sarà utile.
0058 
0059 9) Verificare con sparse.
0060 
0061 10) Usare ``make checkstack`` e correggere tutti i problemi rilevati.
0062 
0063     .. note::
0064 
0065        ``checkstack`` non evidenzia esplicitamente i problemi, ma una funzione
0066        che usa più di 512 byte sullo stack è una buona candidata per una
0067        correzione.
0068 
0069 11) Includete commenti :ref:`kernel-doc <kernel_doc>` per documentare API
0070     globali del kernel.  Usate ``make htmldocs`` o ``make pdfdocs`` per
0071     verificare i commenti :ref:`kernel-doc <kernel_doc>` ed eventualmente
0072     correggerli.
0073 
0074 12) La patch è stata verificata con le seguenti opzioni abilitate
0075     contemporaneamente: ``CONFIG_PREEMPT``, ``CONFIG_DEBUG_PREEMPT``,
0076     ``CONFIG_DEBUG_SLAB``, ``CONFIG_DEBUG_PAGEALLOC``, ``CONFIG_DEBUG_MUTEXES``,
0077     ``CONFIG_DEBUG_SPINLOCK``, ``CONFIG_DEBUG_ATOMIC_SLEEP``,
0078     ``CONFIG_PROVE_RCU`` e ``CONFIG_DEBUG_OBJECTS_RCU_HEAD``.
0079 
0080 13) La patch è stata compilata e verificata in esecuzione con, e senza,
0081     le opzioni ``CONFIG_SMP`` e ``CONFIG_PREEMPT``.
0082 
0083 14) Se la patch ha effetti sull'IO dei dischi, eccetera: allora dev'essere
0084     verificata con, e senza, l'opzione ``CONFIG_LBDAF``.
0085 
0086 15) Tutti i percorsi del codice sono stati verificati con tutte le funzionalità
0087     di lockdep abilitate.
0088 
0089 16) Tutti i nuovi elementi in ``/proc`` sono documentati in ``Documentation/``.
0090 
0091 17) Tutti i nuovi parametri d'avvio del kernel sono documentati in
0092     ``Documentation/admin-guide/kernel-parameters.rst``.
0093 
0094 18) Tutti i nuovi parametri dei moduli sono documentati con ``MODULE_PARM_DESC()``.
0095 
0096 19) Tutte le nuove interfacce verso lo spazio utente sono documentate in
0097     ``Documentation/ABI/``.  Leggete ``Documentation/ABI/README`` per maggiori
0098     informazioni.  Le patch che modificano le interfacce utente dovrebbero
0099     essere inviate in copia anche a linux-api@vger.kernel.org.
0100 
0101 20) La patch è stata verificata con l'iniezione di fallimenti in slab e
0102     nell'allocazione di pagine.  Vedere ``Documentation/fault-injection/``.
0103 
0104     Se il nuovo codice è corposo, potrebbe essere opportuno aggiungere
0105     l'iniezione di fallimenti specifici per il sottosistema.
0106 
0107 21) Il nuovo codice è stato compilato con ``gcc -W`` (usate
0108     ``make KCFLAGS=-W``).  Questo genererà molti avvisi, ma è ottimo
0109     per scovare bachi come  "warning: comparison between signed and unsigned".
0110 
0111 22) La patch è stata verificata dopo essere stata inclusa nella serie di patch
0112     -mm; questo al fine di assicurarsi che continui a funzionare assieme a
0113     tutte le altre patch in coda e i vari cambiamenti nei sottosistemi VM, VFS
0114     e altri.
0115 
0116 23) Tutte le barriere di sincronizzazione {per esempio, ``barrier()``,
0117     ``rmb()``, ``wmb()``} devono essere accompagnate da un commento nei
0118     sorgenti che ne spieghi la logica: cosa fanno e perché.
0119 
0120 24) Se la patch aggiunge nuove chiamate ioctl, allora aggiornate
0121     ``Documentation/userspace-api/ioctl/ioctl-number.rst``.
0122 
0123 25) Se il codice che avete modificato dipende o usa una qualsiasi interfaccia o
0124     funzionalità del kernel che è associata a uno dei seguenti simboli
0125     ``Kconfig``, allora verificate che il kernel compili con diverse
0126     configurazioni dove i simboli sono disabilitati e/o ``=m`` (se c'è la
0127     possibilità) [non tutti contemporaneamente, solo diverse combinazioni
0128     casuali]:
0129 
0130     ``CONFIG_SMP``, ``CONFIG_SYSFS``, ``CONFIG_PROC_FS``, ``CONFIG_INPUT``,
0131     ``CONFIG_PCI``, ``CONFIG_BLOCK``, ``CONFIG_PM``, ``CONFIG_MAGIC_SYSRQ``,
0132     ``CONFIG_NET``, ``CONFIG_INET=n`` (ma l'ultimo con ``CONFIG_NET=y``).