Back to home page

OSCL-LXR

 
 

    


0001 .. include:: ../disclaimer-ita.rst
0002 
0003 :Original: :ref:`Documentation/process/magic-number.rst <magicnumbers>`
0004 :Translator: Federico Vaga <federico.vaga@vaga.pv.it>
0005 
0006 .. _it_magicnumbers:
0007 
0008 I numeri magici di Linux
0009 ========================
0010 
0011 Questo documento è un registro dei numeri magici in uso.  Quando
0012 aggiungete un numero magico ad una struttura, dovreste aggiungerlo anche
0013 a questo documento; la cosa migliore è che tutti i numeri magici usati
0014 dalle varie strutture siano unici.
0015 
0016 È **davvero** un'ottima idea proteggere le strutture dati del kernel con
0017 dei numeri magici.  Questo vi permette in fase d'esecuzione di (a) verificare
0018 se una struttura è stata malmenata, o (b) avete passato a una procedura la
0019 struttura errata.  Quest'ultimo è molto utile - particolarmente quando si passa
0020 una struttura dati tramite un puntatore void \*.  Il codice tty, per esempio,
0021 effettua questa operazione con regolarità passando avanti e indietro le
0022 strutture specifiche per driver e discipline.
0023 
0024 Per utilizzare un numero magico, dovete dichiararlo all'inizio della struttura
0025 dati, come di seguito::
0026 
0027         struct tty_ldisc {
0028                 int     magic;
0029                 ...
0030         };
0031 
0032 Per favore, seguite questa direttiva quando aggiungerete migliorie al kernel!
0033 Mi ha risparmiato un numero illimitato di ore di debug, specialmente nei casi
0034 più ostici dove si è andati oltre la dimensione di un vettore e la struttura
0035 dati che lo seguiva in memoria è stata sovrascritta.  Seguendo questa
0036 direttiva, questi casi vengono identificati velocemente e in sicurezza.
0037 
0038 Registro dei cambiamenti::
0039 
0040                                         Theodore Ts'o
0041                                         31 Mar 94
0042 
0043   La tabella magica è aggiornata a Linux 2.1.55.
0044 
0045                                         Michael Chastain
0046                                         <mailto:mec@shout.net>
0047                                         22 Sep 1997
0048 
0049   Ora dovrebbe essere aggiornata a Linux 2.1.112. Dato che
0050   siamo in un momento di congelamento delle funzionalità
0051   (*feature freeze*) è improbabile che qualcosa cambi prima
0052   della versione 2.2.x.  Le righe sono ordinate secondo il
0053   campo numero.
0054 
0055                                         Krzysztof G. Baranowski
0056                                         <mailto: kgb@knm.org.pl>
0057                                         29 Jul 1998
0058 
0059   Aggiornamento della tabella a Linux 2.5.45. Giusti nel congelamento
0060   delle funzionalità ma è comunque possibile che qualche nuovo
0061   numero magico s'intrufoli prima del kernel 2.6.x.
0062 
0063                                         Petr Baudis
0064                                         <pasky@ucw.cz>
0065                                         03 Nov 2002
0066 
0067   Aggiornamento della tabella magica a Linux 2.5.74.
0068 
0069                                         Fabian Frederick
0070                                         <ffrederick@users.sourceforge.net>
0071                                         09 Jul 2003
0072 
0073 
0074 ===================== ================ ======================== ==========================================
0075 Nome magico           Numero           Struttura                File
0076 ===================== ================ ======================== ==========================================
0077 PG_MAGIC              'P'              pg_{read,write}_hdr      ``include/linux/pg.h``
0078 CMAGIC                0x0111           user                     ``include/linux/a.out.h``
0079 MKISS_DRIVER_MAGIC    0x04bf           mkiss_channel            ``drivers/net/mkiss.h``
0080 HDLC_MAGIC            0x239e           n_hdlc                   ``drivers/char/n_hdlc.c``
0081 APM_BIOS_MAGIC        0x4101           apm_user                 ``arch/x86/kernel/apm_32.c``
0082 DB_MAGIC              0x4442           fc_info                  ``drivers/net/iph5526_novram.c``
0083 DL_MAGIC              0x444d           fc_info                  ``drivers/net/iph5526_novram.c``
0084 FASYNC_MAGIC          0x4601           fasync_struct            ``include/linux/fs.h``
0085 FF_MAGIC              0x4646           fc_info                  ``drivers/net/iph5526_novram.c``
0086 PTY_MAGIC             0x5001                                    ``drivers/char/pty.c``
0087 PPP_MAGIC             0x5002           ppp                      ``include/linux/if_pppvar.h``
0088 SSTATE_MAGIC          0x5302           serial_state             ``include/linux/serial.h``
0089 SLIP_MAGIC            0x5302           slip                     ``drivers/net/slip.h``
0090 STRIP_MAGIC           0x5303           strip                    ``drivers/net/strip.c``
0091 SIXPACK_MAGIC         0x5304           sixpack                  ``drivers/net/hamradio/6pack.h``
0092 AX25_MAGIC            0x5316           ax_disp                  ``drivers/net/mkiss.h``
0093 TTY_MAGIC             0x5401           tty_struct               ``include/linux/tty.h``
0094 MGSL_MAGIC            0x5401           mgsl_info                ``drivers/char/synclink.c``
0095 TTY_DRIVER_MAGIC      0x5402           tty_driver               ``include/linux/tty_driver.h``
0096 MGSLPC_MAGIC          0x5402           mgslpc_info              ``drivers/char/pcmcia/synclink_cs.c``
0097 USB_SERIAL_MAGIC      0x6702           usb_serial               ``drivers/usb/serial/usb-serial.h``
0098 FULL_DUPLEX_MAGIC     0x6969                                    ``drivers/net/ethernet/dec/tulip/de2104x.c``
0099 USB_BLUETOOTH_MAGIC   0x6d02           usb_bluetooth            ``drivers/usb/class/bluetty.c``
0100 RFCOMM_TTY_MAGIC      0x6d02                                    ``net/bluetooth/rfcomm/tty.c``
0101 USB_SERIAL_PORT_MAGIC 0x7301           usb_serial_port          ``drivers/usb/serial/usb-serial.h``
0102 CG_MAGIC              0x00090255       ufs_cylinder_group       ``include/linux/ufs_fs.h``
0103 LSEMAGIC              0x05091998       lse                      ``drivers/fc4/fc.c``
0104 RIEBL_MAGIC           0x09051990                                ``drivers/net/atarilance.c``
0105 NBD_REQUEST_MAGIC     0x12560953       nbd_request              ``include/linux/nbd.h``
0106 RED_MAGIC2            0x170fc2a5       (any)                    ``mm/slab.c``
0107 BAYCOM_MAGIC          0x19730510       baycom_state             ``drivers/net/baycom_epp.c``
0108 ISDN_X25IFACE_MAGIC   0x1e75a2b9       isdn_x25iface_proto_data ``drivers/isdn/isdn_x25iface.h``
0109 ECP_MAGIC             0x21504345       cdkecpsig                ``include/linux/cdk.h``
0110 LSOMAGIC              0x27091997       lso                      ``drivers/fc4/fc.c``
0111 LSMAGIC               0x2a3b4d2a       ls                       ``drivers/fc4/fc.c``
0112 WANPIPE_MAGIC         0x414C4453       sdla_{dump,exec}         ``include/linux/wanpipe.h``
0113 CS_CARD_MAGIC         0x43525553       cs_card                  ``sound/oss/cs46xx.c``
0114 LABELCL_MAGIC         0x4857434c       labelcl_info_s           ``include/asm/ia64/sn/labelcl.h``
0115 ISDN_ASYNC_MAGIC      0x49344C01       modem_info               ``include/linux/isdn.h``
0116 CTC_ASYNC_MAGIC       0x49344C01       ctc_tty_info             ``drivers/s390/net/ctctty.c``
0117 ISDN_NET_MAGIC        0x49344C02       isdn_net_local_s         ``drivers/isdn/i4l/isdn_net_lib.h``
0118 SAVEKMSG_MAGIC2       0x4B4D5347       savekmsg                 ``arch/*/amiga/config.c``
0119 CS_STATE_MAGIC        0x4c4f4749       cs_state                 ``sound/oss/cs46xx.c``
0120 SLAB_C_MAGIC          0x4f17a36d       kmem_cache               ``mm/slab.c``
0121 COW_MAGIC             0x4f4f4f4d       cow_header_v1            ``arch/um/drivers/ubd_user.c``
0122 I810_CARD_MAGIC       0x5072696E       i810_card                ``sound/oss/i810_audio.c``
0123 TRIDENT_CARD_MAGIC    0x5072696E       trident_card             ``sound/oss/trident.c``
0124 ROUTER_MAGIC          0x524d4157       wan_device               [in ``wanrouter.h`` pre 3.9]
0125 SAVEKMSG_MAGIC1       0x53415645       savekmsg                 ``arch/*/amiga/config.c``
0126 GDA_MAGIC             0x58464552       gda                      ``arch/mips/include/asm/sn/gda.h``
0127 RED_MAGIC1            0x5a2cf071       (any)                    ``mm/slab.c``
0128 EEPROM_MAGIC_VALUE    0x5ab478d2       lanai_dev                ``drivers/atm/lanai.c``
0129 HDLCDRV_MAGIC         0x5ac6e778       hdlcdrv_state            ``include/linux/hdlcdrv.h``
0130 PCXX_MAGIC            0x5c6df104       channel                  ``drivers/char/pcxx.h``
0131 KV_MAGIC              0x5f4b565f       kernel_vars_s            ``arch/mips/include/asm/sn/klkernvars.h``
0132 I810_STATE_MAGIC      0x63657373       i810_state               ``sound/oss/i810_audio.c``
0133 TRIDENT_STATE_MAGIC   0x63657373       trient_state             ``sound/oss/trident.c``
0134 M3_CARD_MAGIC         0x646e6f50       m3_card                  ``sound/oss/maestro3.c``
0135 FW_HEADER_MAGIC       0x65726F66       fw_header                ``drivers/atm/fore200e.h``
0136 SLOT_MAGIC            0x67267321       slot                     ``drivers/hotplug/cpqphp.h``
0137 SLOT_MAGIC            0x67267322       slot                     ``drivers/hotplug/acpiphp.h``
0138 LO_MAGIC              0x68797548       nbd_device               ``include/linux/nbd.h``
0139 M3_STATE_MAGIC        0x734d724d       m3_state                 ``sound/oss/maestro3.c``
0140 VMALLOC_MAGIC         0x87654320       snd_alloc_track          ``sound/core/memory.c``
0141 KMALLOC_MAGIC         0x87654321       snd_alloc_track          ``sound/core/memory.c``
0142 PWC_MAGIC             0x89DC10AB       pwc_device               ``drivers/usb/media/pwc.h``
0143 NBD_REPLY_MAGIC       0x96744668       nbd_reply                ``include/linux/nbd.h``
0144 ENI155_MAGIC          0xa54b872d       midway_eprom             ``drivers/atm/eni.h``
0145 CODA_MAGIC            0xC0DAC0DA       coda_file_info           ``fs/coda/coda_fs_i.h``
0146 YAM_MAGIC             0xF10A7654       yam_port                 ``drivers/net/hamradio/yam.c``
0147 CCB_MAGIC             0xf2691ad2       ccb                      ``drivers/scsi/ncr53c8xx.c``
0148 QUEUE_MAGIC_FREE      0xf7e1c9a3       queue_entry              ``drivers/scsi/arm/queue.c``
0149 QUEUE_MAGIC_USED      0xf7e1cc33       queue_entry              ``drivers/scsi/arm/queue.c``
0150 HTB_CMAGIC            0xFEFAFEF1       htb_class                ``net/sched/sch_htb.c``
0151 NMI_MAGIC             0x48414d4d455201 nmi_s                    ``arch/mips/include/asm/sn/nmi.h``
0152 ===================== ================ ======================== ==========================================
0153 
0154 Da notare che ci sono anche dei numeri magici specifici per driver nel
0155 *sound memory management*. Consultate ``include/sound/sndmagic.h`` per una
0156 lista completa.  Molti driver audio OSS hanno i loro numeri magici costruiti a
0157 partire dall'identificativo PCI della scheda audio - nemmeno questi sono
0158 elencati in questo file.
0159 
0160 Il file-system HFS è un altro grande utilizzatore di numeri magici - potete
0161 trovarli qui ``fs/hfs/hfs.h``.