1edba5eecSFederico Vaga.. include:: ../disclaimer-ita.rst 2edba5eecSFederico Vaga 3*165915c1SFederico Vaga:Original: :ref:`Documentation/process/magic-number.rst <magicnumbers>` 4edba5eecSFederico Vaga:Translator: Federico Vaga <federico.vaga@vaga.pv.it> 5edba5eecSFederico Vaga 6edba5eecSFederico Vaga.. _it_magicnumbers: 7edba5eecSFederico Vaga 8edba5eecSFederico VagaI numeri magici di Linux 9edba5eecSFederico Vaga======================== 10edba5eecSFederico Vaga 11edba5eecSFederico VagaQuesto documento è un registro dei numeri magici in uso. Quando 12edba5eecSFederico Vagaaggiungete un numero magico ad una struttura, dovreste aggiungerlo anche 13edba5eecSFederico Vagaa questo documento; la cosa migliore è che tutti i numeri magici usati 14edba5eecSFederico Vagadalle varie strutture siano unici. 15edba5eecSFederico Vaga 16edba5eecSFederico VagaÈ **davvero** un'ottima idea proteggere le strutture dati del kernel con 17edba5eecSFederico Vagadei numeri magici. Questo vi permette in fase d'esecuzione di (a) verificare 18edba5eecSFederico Vagase una struttura è stata malmenata, o (b) avete passato a una procedura la 19edba5eecSFederico Vagastruttura errata. Quest'ultimo è molto utile - particolarmente quando si passa 20edba5eecSFederico Vagauna struttura dati tramite un puntatore void \*. Il codice tty, per esempio, 21edba5eecSFederico Vagaeffettua questa operazione con regolarità passando avanti e indietro le 22edba5eecSFederico Vagastrutture specifiche per driver e discipline. 23edba5eecSFederico Vaga 24edba5eecSFederico VagaPer utilizzare un numero magico, dovete dichiararlo all'inizio della struttura 25edba5eecSFederico Vagadati, come di seguito:: 26edba5eecSFederico Vaga 27edba5eecSFederico Vaga struct tty_ldisc { 28edba5eecSFederico Vaga int magic; 29edba5eecSFederico Vaga ... 30edba5eecSFederico Vaga }; 31edba5eecSFederico Vaga 32edba5eecSFederico VagaPer favore, seguite questa direttiva quando aggiungerete migliorie al kernel! 33edba5eecSFederico VagaMi ha risparmiato un numero illimitato di ore di debug, specialmente nei casi 34edba5eecSFederico Vagapiù ostici dove si è andati oltre la dimensione di un vettore e la struttura 35edba5eecSFederico Vagadati che lo seguiva in memoria è stata sovrascritta. Seguendo questa 36edba5eecSFederico Vagadirettiva, questi casi vengono identificati velocemente e in sicurezza. 37edba5eecSFederico Vaga 38edba5eecSFederico VagaRegistro dei cambiamenti:: 39edba5eecSFederico Vaga 40edba5eecSFederico Vaga Theodore Ts'o 41edba5eecSFederico Vaga 31 Mar 94 42edba5eecSFederico Vaga 43edba5eecSFederico Vaga La tabella magica è aggiornata a Linux 2.1.55. 44edba5eecSFederico Vaga 45edba5eecSFederico Vaga Michael Chastain 46edba5eecSFederico Vaga <mailto:mec@shout.net> 47edba5eecSFederico Vaga 22 Sep 1997 48edba5eecSFederico Vaga 49edba5eecSFederico Vaga Ora dovrebbe essere aggiornata a Linux 2.1.112. Dato che 50edba5eecSFederico Vaga siamo in un momento di congelamento delle funzionalità 51edba5eecSFederico Vaga (*feature freeze*) è improbabile che qualcosa cambi prima 52edba5eecSFederico Vaga della versione 2.2.x. Le righe sono ordinate secondo il 53edba5eecSFederico Vaga campo numero. 54edba5eecSFederico Vaga 55edba5eecSFederico Vaga Krzysztof G. Baranowski 56edba5eecSFederico Vaga <mailto: kgb@knm.org.pl> 57edba5eecSFederico Vaga 29 Jul 1998 58edba5eecSFederico Vaga 59edba5eecSFederico Vaga Aggiornamento della tabella a Linux 2.5.45. Giusti nel congelamento 60edba5eecSFederico Vaga delle funzionalità ma è comunque possibile che qualche nuovo 61edba5eecSFederico Vaga numero magico s'intrufoli prima del kernel 2.6.x. 62edba5eecSFederico Vaga 63edba5eecSFederico Vaga Petr Baudis 64edba5eecSFederico Vaga <pasky@ucw.cz> 65edba5eecSFederico Vaga 03 Nov 2002 66edba5eecSFederico Vaga 67edba5eecSFederico Vaga Aggiornamento della tabella magica a Linux 2.5.74. 68edba5eecSFederico Vaga 69edba5eecSFederico Vaga Fabian Frederick 70edba5eecSFederico Vaga <ffrederick@users.sourceforge.net> 71edba5eecSFederico Vaga 09 Jul 2003 72edba5eecSFederico Vaga 73edba5eecSFederico Vaga 74edba5eecSFederico Vaga===================== ================ ======================== ========================================== 75edba5eecSFederico VagaNome magico Numero Struttura File 76edba5eecSFederico Vaga===================== ================ ======================== ========================================== 77edba5eecSFederico VagaPG_MAGIC 'P' pg_{read,write}_hdr ``include/linux/pg.h`` 78edba5eecSFederico VagaAPM_BIOS_MAGIC 0x4101 apm_user ``arch/x86/kernel/apm_32.c`` 79edba5eecSFederico VagaFASYNC_MAGIC 0x4601 fasync_struct ``include/linux/fs.h`` 80edba5eecSFederico VagaSLIP_MAGIC 0x5302 slip ``drivers/net/slip.h`` 81edba5eecSFederico VagaBAYCOM_MAGIC 0x19730510 baycom_state ``drivers/net/baycom_epp.c`` 82edba5eecSFederico VagaHDLCDRV_MAGIC 0x5ac6e778 hdlcdrv_state ``include/linux/hdlcdrv.h`` 83edba5eecSFederico VagaKV_MAGIC 0x5f4b565f kernel_vars_s ``arch/mips/include/asm/sn/klkernvars.h`` 84edba5eecSFederico VagaCODA_MAGIC 0xC0DAC0DA coda_file_info ``fs/coda/coda_fs_i.h`` 85edba5eecSFederico VagaYAM_MAGIC 0xF10A7654 yam_port ``drivers/net/hamradio/yam.c`` 86edba5eecSFederico VagaCCB_MAGIC 0xf2691ad2 ccb ``drivers/scsi/ncr53c8xx.c`` 87edba5eecSFederico VagaQUEUE_MAGIC_FREE 0xf7e1c9a3 queue_entry ``drivers/scsi/arm/queue.c`` 88edba5eecSFederico VagaQUEUE_MAGIC_USED 0xf7e1cc33 queue_entry ``drivers/scsi/arm/queue.c`` 89edba5eecSFederico VagaNMI_MAGIC 0x48414d4d455201 nmi_s ``arch/mips/include/asm/sn/nmi.h`` 90edba5eecSFederico Vaga===================== ================ ======================== ========================================== 91