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