162306a36Sopenharmony_ci.. include:: ../disclaimer-ita.rst 262306a36Sopenharmony_ci 362306a36Sopenharmony_ci:Original: :ref:`Documentation/process/magic-number.rst <magicnumbers>` 462306a36Sopenharmony_ci:Translator: Federico Vaga <federico.vaga@vaga.pv.it> 562306a36Sopenharmony_ci 662306a36Sopenharmony_ci.. _it_magicnumbers: 762306a36Sopenharmony_ci 862306a36Sopenharmony_ciI numeri magici di Linux 962306a36Sopenharmony_ci======================== 1062306a36Sopenharmony_ci 1162306a36Sopenharmony_ciQuesto documento è un registro dei numeri magici in uso. Quando 1262306a36Sopenharmony_ciaggiungete un numero magico ad una struttura, dovreste aggiungerlo anche 1362306a36Sopenharmony_cia questo documento; la cosa migliore è che tutti i numeri magici usati 1462306a36Sopenharmony_cidalle varie strutture siano unici. 1562306a36Sopenharmony_ci 1662306a36Sopenharmony_ciÈ **davvero** un'ottima idea proteggere le strutture dati del kernel con 1762306a36Sopenharmony_cidei numeri magici. Questo vi permette in fase d'esecuzione di (a) verificare 1862306a36Sopenharmony_cise una struttura è stata malmenata, o (b) avete passato a una procedura la 1962306a36Sopenharmony_cistruttura errata. Quest'ultimo è molto utile - particolarmente quando si passa 2062306a36Sopenharmony_ciuna struttura dati tramite un puntatore void \*. Il codice tty, per esempio, 2162306a36Sopenharmony_cieffettua questa operazione con regolarità passando avanti e indietro le 2262306a36Sopenharmony_cistrutture specifiche per driver e discipline. 2362306a36Sopenharmony_ci 2462306a36Sopenharmony_ciPer utilizzare un numero magico, dovete dichiararlo all'inizio della struttura 2562306a36Sopenharmony_cidati, come di seguito:: 2662306a36Sopenharmony_ci 2762306a36Sopenharmony_ci struct tty_ldisc { 2862306a36Sopenharmony_ci int magic; 2962306a36Sopenharmony_ci ... 3062306a36Sopenharmony_ci }; 3162306a36Sopenharmony_ci 3262306a36Sopenharmony_ciPer favore, seguite questa direttiva quando aggiungerete migliorie al kernel! 3362306a36Sopenharmony_ciMi ha risparmiato un numero illimitato di ore di debug, specialmente nei casi 3462306a36Sopenharmony_cipiù ostici dove si è andati oltre la dimensione di un vettore e la struttura 3562306a36Sopenharmony_cidati che lo seguiva in memoria è stata sovrascritta. Seguendo questa 3662306a36Sopenharmony_cidirettiva, questi casi vengono identificati velocemente e in sicurezza. 3762306a36Sopenharmony_ci 3862306a36Sopenharmony_ciRegistro dei cambiamenti:: 3962306a36Sopenharmony_ci 4062306a36Sopenharmony_ci Theodore Ts'o 4162306a36Sopenharmony_ci 31 Mar 94 4262306a36Sopenharmony_ci 4362306a36Sopenharmony_ci La tabella magica è aggiornata a Linux 2.1.55. 4462306a36Sopenharmony_ci 4562306a36Sopenharmony_ci Michael Chastain 4662306a36Sopenharmony_ci <mailto:mec@shout.net> 4762306a36Sopenharmony_ci 22 Sep 1997 4862306a36Sopenharmony_ci 4962306a36Sopenharmony_ci Ora dovrebbe essere aggiornata a Linux 2.1.112. Dato che 5062306a36Sopenharmony_ci siamo in un momento di congelamento delle funzionalità 5162306a36Sopenharmony_ci (*feature freeze*) è improbabile che qualcosa cambi prima 5262306a36Sopenharmony_ci della versione 2.2.x. Le righe sono ordinate secondo il 5362306a36Sopenharmony_ci campo numero. 5462306a36Sopenharmony_ci 5562306a36Sopenharmony_ci Krzysztof G. Baranowski 5662306a36Sopenharmony_ci <mailto: kgb@knm.org.pl> 5762306a36Sopenharmony_ci 29 Jul 1998 5862306a36Sopenharmony_ci 5962306a36Sopenharmony_ci Aggiornamento della tabella a Linux 2.5.45. Giusti nel congelamento 6062306a36Sopenharmony_ci delle funzionalità ma è comunque possibile che qualche nuovo 6162306a36Sopenharmony_ci numero magico s'intrufoli prima del kernel 2.6.x. 6262306a36Sopenharmony_ci 6362306a36Sopenharmony_ci Petr Baudis 6462306a36Sopenharmony_ci <pasky@ucw.cz> 6562306a36Sopenharmony_ci 03 Nov 2002 6662306a36Sopenharmony_ci 6762306a36Sopenharmony_ci Aggiornamento della tabella magica a Linux 2.5.74. 6862306a36Sopenharmony_ci 6962306a36Sopenharmony_ci Fabian Frederick 7062306a36Sopenharmony_ci <ffrederick@users.sourceforge.net> 7162306a36Sopenharmony_ci 09 Jul 2003 7262306a36Sopenharmony_ci 7362306a36Sopenharmony_ci 7462306a36Sopenharmony_ci===================== ================ ======================== ========================================== 7562306a36Sopenharmony_ciNome magico Numero Struttura File 7662306a36Sopenharmony_ci===================== ================ ======================== ========================================== 7762306a36Sopenharmony_ciPG_MAGIC 'P' pg_{read,write}_hdr ``include/linux/pg.h`` 7862306a36Sopenharmony_ciAPM_BIOS_MAGIC 0x4101 apm_user ``arch/x86/kernel/apm_32.c`` 7962306a36Sopenharmony_ciFASYNC_MAGIC 0x4601 fasync_struct ``include/linux/fs.h`` 8062306a36Sopenharmony_ciSLIP_MAGIC 0x5302 slip ``drivers/net/slip.h`` 8162306a36Sopenharmony_ciBAYCOM_MAGIC 0x19730510 baycom_state ``drivers/net/baycom_epp.c`` 8262306a36Sopenharmony_ciHDLCDRV_MAGIC 0x5ac6e778 hdlcdrv_state ``include/linux/hdlcdrv.h`` 8362306a36Sopenharmony_ciKV_MAGIC 0x5f4b565f kernel_vars_s ``arch/mips/include/asm/sn/klkernvars.h`` 8462306a36Sopenharmony_ciCODA_MAGIC 0xC0DAC0DA coda_file_info ``fs/coda/coda_fs_i.h`` 8562306a36Sopenharmony_ciYAM_MAGIC 0xF10A7654 yam_port ``drivers/net/hamradio/yam.c`` 8662306a36Sopenharmony_ciCCB_MAGIC 0xf2691ad2 ccb ``drivers/scsi/ncr53c8xx.c`` 8762306a36Sopenharmony_ciQUEUE_MAGIC_FREE 0xf7e1c9a3 queue_entry ``drivers/scsi/arm/queue.c`` 8862306a36Sopenharmony_ciQUEUE_MAGIC_USED 0xf7e1cc33 queue_entry ``drivers/scsi/arm/queue.c`` 8962306a36Sopenharmony_ciNMI_MAGIC 0x48414d4d455201 nmi_s ``arch/mips/include/asm/sn/nmi.h`` 9062306a36Sopenharmony_ci===================== ================ ======================== ========================================== 91