18c2ecf20Sopenharmony_ci.. include:: ../disclaimer-ita.rst 28c2ecf20Sopenharmony_ci 38c2ecf20Sopenharmony_ci:Original: :ref:`Documentation/process/magic-number.rst <magicnumbers>` 48c2ecf20Sopenharmony_ci:Translator: Federico Vaga <federico.vaga@vaga.pv.it> 58c2ecf20Sopenharmony_ci 68c2ecf20Sopenharmony_ci.. _it_magicnumbers: 78c2ecf20Sopenharmony_ci 88c2ecf20Sopenharmony_ciI numeri magici di Linux 98c2ecf20Sopenharmony_ci======================== 108c2ecf20Sopenharmony_ci 118c2ecf20Sopenharmony_ciQuesto documento è un registro dei numeri magici in uso. Quando 128c2ecf20Sopenharmony_ciaggiungete un numero magico ad una struttura, dovreste aggiungerlo anche 138c2ecf20Sopenharmony_cia questo documento; la cosa migliore è che tutti i numeri magici usati 148c2ecf20Sopenharmony_cidalle varie strutture siano unici. 158c2ecf20Sopenharmony_ci 168c2ecf20Sopenharmony_ciÈ **davvero** un'ottima idea proteggere le strutture dati del kernel con 178c2ecf20Sopenharmony_cidei numeri magici. Questo vi permette in fase d'esecuzione di (a) verificare 188c2ecf20Sopenharmony_cise una struttura è stata malmenata, o (b) avete passato a una procedura la 198c2ecf20Sopenharmony_cistruttura errata. Quest'ultimo è molto utile - particolarmente quando si passa 208c2ecf20Sopenharmony_ciuna struttura dati tramite un puntatore void \*. Il codice tty, per esempio, 218c2ecf20Sopenharmony_cieffettua questa operazione con regolarità passando avanti e indietro le 228c2ecf20Sopenharmony_cistrutture specifiche per driver e discipline. 238c2ecf20Sopenharmony_ci 248c2ecf20Sopenharmony_ciPer utilizzare un numero magico, dovete dichiararlo all'inizio della struttura 258c2ecf20Sopenharmony_cidati, come di seguito:: 268c2ecf20Sopenharmony_ci 278c2ecf20Sopenharmony_ci struct tty_ldisc { 288c2ecf20Sopenharmony_ci int magic; 298c2ecf20Sopenharmony_ci ... 308c2ecf20Sopenharmony_ci }; 318c2ecf20Sopenharmony_ci 328c2ecf20Sopenharmony_ciPer favore, seguite questa direttiva quando aggiungerete migliorie al kernel! 338c2ecf20Sopenharmony_ciMi ha risparmiato un numero illimitato di ore di debug, specialmente nei casi 348c2ecf20Sopenharmony_cipiù ostici dove si è andati oltre la dimensione di un vettore e la struttura 358c2ecf20Sopenharmony_cidati che lo seguiva in memoria è stata sovrascritta. Seguendo questa 368c2ecf20Sopenharmony_cidirettiva, questi casi vengono identificati velocemente e in sicurezza. 378c2ecf20Sopenharmony_ci 388c2ecf20Sopenharmony_ciRegistro dei cambiamenti:: 398c2ecf20Sopenharmony_ci 408c2ecf20Sopenharmony_ci Theodore Ts'o 418c2ecf20Sopenharmony_ci 31 Mar 94 428c2ecf20Sopenharmony_ci 438c2ecf20Sopenharmony_ci La tabella magica è aggiornata a Linux 2.1.55. 448c2ecf20Sopenharmony_ci 458c2ecf20Sopenharmony_ci Michael Chastain 468c2ecf20Sopenharmony_ci <mailto:mec@shout.net> 478c2ecf20Sopenharmony_ci 22 Sep 1997 488c2ecf20Sopenharmony_ci 498c2ecf20Sopenharmony_ci Ora dovrebbe essere aggiornata a Linux 2.1.112. Dato che 508c2ecf20Sopenharmony_ci siamo in un momento di congelamento delle funzionalità 518c2ecf20Sopenharmony_ci (*feature freeze*) è improbabile che qualcosa cambi prima 528c2ecf20Sopenharmony_ci della versione 2.2.x. Le righe sono ordinate secondo il 538c2ecf20Sopenharmony_ci campo numero. 548c2ecf20Sopenharmony_ci 558c2ecf20Sopenharmony_ci Krzysztof G. Baranowski 568c2ecf20Sopenharmony_ci <mailto: kgb@knm.org.pl> 578c2ecf20Sopenharmony_ci 29 Jul 1998 588c2ecf20Sopenharmony_ci 598c2ecf20Sopenharmony_ci Aggiornamento della tabella a Linux 2.5.45. Giusti nel congelamento 608c2ecf20Sopenharmony_ci delle funzionalità ma è comunque possibile che qualche nuovo 618c2ecf20Sopenharmony_ci numero magico s'intrufoli prima del kernel 2.6.x. 628c2ecf20Sopenharmony_ci 638c2ecf20Sopenharmony_ci Petr Baudis 648c2ecf20Sopenharmony_ci <pasky@ucw.cz> 658c2ecf20Sopenharmony_ci 03 Nov 2002 668c2ecf20Sopenharmony_ci 678c2ecf20Sopenharmony_ci Aggiornamento della tabella magica a Linux 2.5.74. 688c2ecf20Sopenharmony_ci 698c2ecf20Sopenharmony_ci Fabian Frederick 708c2ecf20Sopenharmony_ci <ffrederick@users.sourceforge.net> 718c2ecf20Sopenharmony_ci 09 Jul 2003 728c2ecf20Sopenharmony_ci 738c2ecf20Sopenharmony_ci 748c2ecf20Sopenharmony_ci===================== ================ ======================== ========================================== 758c2ecf20Sopenharmony_ciNome magico Numero Struttura File 768c2ecf20Sopenharmony_ci===================== ================ ======================== ========================================== 778c2ecf20Sopenharmony_ciPG_MAGIC 'P' pg_{read,write}_hdr ``include/linux/pg.h`` 788c2ecf20Sopenharmony_ciCMAGIC 0x0111 user ``include/linux/a.out.h`` 798c2ecf20Sopenharmony_ciMKISS_DRIVER_MAGIC 0x04bf mkiss_channel ``drivers/net/mkiss.h`` 808c2ecf20Sopenharmony_ciHDLC_MAGIC 0x239e n_hdlc ``drivers/char/n_hdlc.c`` 818c2ecf20Sopenharmony_ciAPM_BIOS_MAGIC 0x4101 apm_user ``arch/x86/kernel/apm_32.c`` 828c2ecf20Sopenharmony_ciCYCLADES_MAGIC 0x4359 cyclades_port ``include/linux/cyclades.h`` 838c2ecf20Sopenharmony_ciDB_MAGIC 0x4442 fc_info ``drivers/net/iph5526_novram.c`` 848c2ecf20Sopenharmony_ciDL_MAGIC 0x444d fc_info ``drivers/net/iph5526_novram.c`` 858c2ecf20Sopenharmony_ciFASYNC_MAGIC 0x4601 fasync_struct ``include/linux/fs.h`` 868c2ecf20Sopenharmony_ciFF_MAGIC 0x4646 fc_info ``drivers/net/iph5526_novram.c`` 878c2ecf20Sopenharmony_ciISICOM_MAGIC 0x4d54 isi_port ``include/linux/isicom.h`` 888c2ecf20Sopenharmony_ciPTY_MAGIC 0x5001 ``drivers/char/pty.c`` 898c2ecf20Sopenharmony_ciPPP_MAGIC 0x5002 ppp ``include/linux/if_pppvar.h`` 908c2ecf20Sopenharmony_ciSSTATE_MAGIC 0x5302 serial_state ``include/linux/serial.h`` 918c2ecf20Sopenharmony_ciSLIP_MAGIC 0x5302 slip ``drivers/net/slip.h`` 928c2ecf20Sopenharmony_ciSTRIP_MAGIC 0x5303 strip ``drivers/net/strip.c`` 938c2ecf20Sopenharmony_ciX25_ASY_MAGIC 0x5303 x25_asy ``drivers/net/x25_asy.h`` 948c2ecf20Sopenharmony_ciSIXPACK_MAGIC 0x5304 sixpack ``drivers/net/hamradio/6pack.h`` 958c2ecf20Sopenharmony_ciAX25_MAGIC 0x5316 ax_disp ``drivers/net/mkiss.h`` 968c2ecf20Sopenharmony_ciTTY_MAGIC 0x5401 tty_struct ``include/linux/tty.h`` 978c2ecf20Sopenharmony_ciMGSL_MAGIC 0x5401 mgsl_info ``drivers/char/synclink.c`` 988c2ecf20Sopenharmony_ciTTY_DRIVER_MAGIC 0x5402 tty_driver ``include/linux/tty_driver.h`` 998c2ecf20Sopenharmony_ciMGSLPC_MAGIC 0x5402 mgslpc_info ``drivers/char/pcmcia/synclink_cs.c`` 1008c2ecf20Sopenharmony_ciTTY_LDISC_MAGIC 0x5403 tty_ldisc ``include/linux/tty_ldisc.h`` 1018c2ecf20Sopenharmony_ciUSB_SERIAL_MAGIC 0x6702 usb_serial ``drivers/usb/serial/usb-serial.h`` 1028c2ecf20Sopenharmony_ciFULL_DUPLEX_MAGIC 0x6969 ``drivers/net/ethernet/dec/tulip/de2104x.c`` 1038c2ecf20Sopenharmony_ciUSB_BLUETOOTH_MAGIC 0x6d02 usb_bluetooth ``drivers/usb/class/bluetty.c`` 1048c2ecf20Sopenharmony_ciRFCOMM_TTY_MAGIC 0x6d02 ``net/bluetooth/rfcomm/tty.c`` 1058c2ecf20Sopenharmony_ciUSB_SERIAL_PORT_MAGIC 0x7301 usb_serial_port ``drivers/usb/serial/usb-serial.h`` 1068c2ecf20Sopenharmony_ciCG_MAGIC 0x00090255 ufs_cylinder_group ``include/linux/ufs_fs.h`` 1078c2ecf20Sopenharmony_ciRPORT_MAGIC 0x00525001 r_port ``drivers/char/rocket_int.h`` 1088c2ecf20Sopenharmony_ciLSEMAGIC 0x05091998 lse ``drivers/fc4/fc.c`` 1098c2ecf20Sopenharmony_ciGDTIOCTL_MAGIC 0x06030f07 gdth_iowr_str ``drivers/scsi/gdth_ioctl.h`` 1108c2ecf20Sopenharmony_ciRIEBL_MAGIC 0x09051990 ``drivers/net/atarilance.c`` 1118c2ecf20Sopenharmony_ciNBD_REQUEST_MAGIC 0x12560953 nbd_request ``include/linux/nbd.h`` 1128c2ecf20Sopenharmony_ciRED_MAGIC2 0x170fc2a5 (any) ``mm/slab.c`` 1138c2ecf20Sopenharmony_ciBAYCOM_MAGIC 0x19730510 baycom_state ``drivers/net/baycom_epp.c`` 1148c2ecf20Sopenharmony_ciISDN_X25IFACE_MAGIC 0x1e75a2b9 isdn_x25iface_proto_data ``drivers/isdn/isdn_x25iface.h`` 1158c2ecf20Sopenharmony_ciECP_MAGIC 0x21504345 cdkecpsig ``include/linux/cdk.h`` 1168c2ecf20Sopenharmony_ciLSOMAGIC 0x27091997 lso ``drivers/fc4/fc.c`` 1178c2ecf20Sopenharmony_ciLSMAGIC 0x2a3b4d2a ls ``drivers/fc4/fc.c`` 1188c2ecf20Sopenharmony_ciWANPIPE_MAGIC 0x414C4453 sdla_{dump,exec} ``include/linux/wanpipe.h`` 1198c2ecf20Sopenharmony_ciCS_CARD_MAGIC 0x43525553 cs_card ``sound/oss/cs46xx.c`` 1208c2ecf20Sopenharmony_ciLABELCL_MAGIC 0x4857434c labelcl_info_s ``include/asm/ia64/sn/labelcl.h`` 1218c2ecf20Sopenharmony_ciISDN_ASYNC_MAGIC 0x49344C01 modem_info ``include/linux/isdn.h`` 1228c2ecf20Sopenharmony_ciCTC_ASYNC_MAGIC 0x49344C01 ctc_tty_info ``drivers/s390/net/ctctty.c`` 1238c2ecf20Sopenharmony_ciISDN_NET_MAGIC 0x49344C02 isdn_net_local_s ``drivers/isdn/i4l/isdn_net_lib.h`` 1248c2ecf20Sopenharmony_ciSAVEKMSG_MAGIC2 0x4B4D5347 savekmsg ``arch/*/amiga/config.c`` 1258c2ecf20Sopenharmony_ciCS_STATE_MAGIC 0x4c4f4749 cs_state ``sound/oss/cs46xx.c`` 1268c2ecf20Sopenharmony_ciSLAB_C_MAGIC 0x4f17a36d kmem_cache ``mm/slab.c`` 1278c2ecf20Sopenharmony_ciCOW_MAGIC 0x4f4f4f4d cow_header_v1 ``arch/um/drivers/ubd_user.c`` 1288c2ecf20Sopenharmony_ciI810_CARD_MAGIC 0x5072696E i810_card ``sound/oss/i810_audio.c`` 1298c2ecf20Sopenharmony_ciTRIDENT_CARD_MAGIC 0x5072696E trident_card ``sound/oss/trident.c`` 1308c2ecf20Sopenharmony_ciROUTER_MAGIC 0x524d4157 wan_device [in ``wanrouter.h`` pre 3.9] 1318c2ecf20Sopenharmony_ciSAVEKMSG_MAGIC1 0x53415645 savekmsg ``arch/*/amiga/config.c`` 1328c2ecf20Sopenharmony_ciGDA_MAGIC 0x58464552 gda ``arch/mips/include/asm/sn/gda.h`` 1338c2ecf20Sopenharmony_ciRED_MAGIC1 0x5a2cf071 (any) ``mm/slab.c`` 1348c2ecf20Sopenharmony_ciEEPROM_MAGIC_VALUE 0x5ab478d2 lanai_dev ``drivers/atm/lanai.c`` 1358c2ecf20Sopenharmony_ciHDLCDRV_MAGIC 0x5ac6e778 hdlcdrv_state ``include/linux/hdlcdrv.h`` 1368c2ecf20Sopenharmony_ciPCXX_MAGIC 0x5c6df104 channel ``drivers/char/pcxx.h`` 1378c2ecf20Sopenharmony_ciKV_MAGIC 0x5f4b565f kernel_vars_s ``arch/mips/include/asm/sn/klkernvars.h`` 1388c2ecf20Sopenharmony_ciI810_STATE_MAGIC 0x63657373 i810_state ``sound/oss/i810_audio.c`` 1398c2ecf20Sopenharmony_ciTRIDENT_STATE_MAGIC 0x63657373 trient_state ``sound/oss/trident.c`` 1408c2ecf20Sopenharmony_ciM3_CARD_MAGIC 0x646e6f50 m3_card ``sound/oss/maestro3.c`` 1418c2ecf20Sopenharmony_ciFW_HEADER_MAGIC 0x65726F66 fw_header ``drivers/atm/fore200e.h`` 1428c2ecf20Sopenharmony_ciSLOT_MAGIC 0x67267321 slot ``drivers/hotplug/cpqphp.h`` 1438c2ecf20Sopenharmony_ciSLOT_MAGIC 0x67267322 slot ``drivers/hotplug/acpiphp.h`` 1448c2ecf20Sopenharmony_ciLO_MAGIC 0x68797548 nbd_device ``include/linux/nbd.h`` 1458c2ecf20Sopenharmony_ciOPROFILE_MAGIC 0x6f70726f super_block ``drivers/oprofile/oprofilefs.h`` 1468c2ecf20Sopenharmony_ciM3_STATE_MAGIC 0x734d724d m3_state ``sound/oss/maestro3.c`` 1478c2ecf20Sopenharmony_ciVMALLOC_MAGIC 0x87654320 snd_alloc_track ``sound/core/memory.c`` 1488c2ecf20Sopenharmony_ciKMALLOC_MAGIC 0x87654321 snd_alloc_track ``sound/core/memory.c`` 1498c2ecf20Sopenharmony_ciPWC_MAGIC 0x89DC10AB pwc_device ``drivers/usb/media/pwc.h`` 1508c2ecf20Sopenharmony_ciNBD_REPLY_MAGIC 0x96744668 nbd_reply ``include/linux/nbd.h`` 1518c2ecf20Sopenharmony_ciENI155_MAGIC 0xa54b872d midway_eprom ``drivers/atm/eni.h`` 1528c2ecf20Sopenharmony_ciCODA_MAGIC 0xC0DAC0DA coda_file_info ``fs/coda/coda_fs_i.h`` 1538c2ecf20Sopenharmony_ciDPMEM_MAGIC 0xc0ffee11 gdt_pci_sram ``drivers/scsi/gdth.h`` 1548c2ecf20Sopenharmony_ciYAM_MAGIC 0xF10A7654 yam_port ``drivers/net/hamradio/yam.c`` 1558c2ecf20Sopenharmony_ciCCB_MAGIC 0xf2691ad2 ccb ``drivers/scsi/ncr53c8xx.c`` 1568c2ecf20Sopenharmony_ciQUEUE_MAGIC_FREE 0xf7e1c9a3 queue_entry ``drivers/scsi/arm/queue.c`` 1578c2ecf20Sopenharmony_ciQUEUE_MAGIC_USED 0xf7e1cc33 queue_entry ``drivers/scsi/arm/queue.c`` 1588c2ecf20Sopenharmony_ciHTB_CMAGIC 0xFEFAFEF1 htb_class ``net/sched/sch_htb.c`` 1598c2ecf20Sopenharmony_ciNMI_MAGIC 0x48414d4d455201 nmi_s ``arch/mips/include/asm/sn/nmi.h`` 1608c2ecf20Sopenharmony_ci===================== ================ ======================== ========================================== 1618c2ecf20Sopenharmony_ci 1628c2ecf20Sopenharmony_ciDa notare che ci sono anche dei numeri magici specifici per driver nel 1638c2ecf20Sopenharmony_ci*sound memory management*. Consultate ``include/sound/sndmagic.h`` per una 1648c2ecf20Sopenharmony_cilista completa. Molti driver audio OSS hanno i loro numeri magici costruiti a 1658c2ecf20Sopenharmony_cipartire dall'identificativo PCI della scheda audio - nemmeno questi sono 1668c2ecf20Sopenharmony_cielencati in questo file. 1678c2ecf20Sopenharmony_ci 1688c2ecf20Sopenharmony_ciIl file-system HFS è un altro grande utilizzatore di numeri magici - potete 1698c2ecf20Sopenharmony_citrovarli qui ``fs/hfs/hfs.h``. 170