Italian

Warning

In caso di dubbi sulla correttezza del contenuto di questa traduzione, l’unico riferimento valido ÃĻ la documentazione ufficiale in inglese. Per maggiori informazioni consultate le avvertenze.

Original:

Documentation/staging/magic-number.rst

Translator:

Federico Vaga <federico.vaga@vaga.pv.it>

I numeri magici di LinuxÂķ

Questo documento ÃĻ un registro dei numeri magici in uso. Quando aggiungete un numero magico ad una struttura, dovreste aggiungerlo anche a questo documento; la cosa migliore ÃĻ che tutti i numeri magici usati dalle varie strutture siano unici.

È davvero un’ottima idea proteggere le strutture dati del kernel con dei numeri magici. Questo vi permette in fase d’esecuzione di (a) verificare se una struttura ÃĻ stata malmenata, o (b) avete passato a una procedura la struttura errata. Quest’ultimo ÃĻ molto utile - particolarmente quando si passa una struttura dati tramite un puntatore void *. Il codice tty, per esempio, effettua questa operazione con regolarità passando avanti e indietro le strutture specifiche per driver e discipline.

Per utilizzare un numero magico, dovete dichiararlo all’inizio della struttura dati, come di seguito:

struct tty_ldisc {
        int     magic;
        ...
};

Per favore, seguite questa direttiva quando aggiungerete migliorie al kernel! Mi ha risparmiato un numero illimitato di ore di debug, specialmente nei casi piÃđ ostici dove si ÃĻ andati oltre la dimensione di un vettore e la struttura dati che lo seguiva in memoria ÃĻ stata sovrascritta. Seguendo questa direttiva, questi casi vengono identificati velocemente e in sicurezza.

Registro dei cambiamenti:

                                      Theodore Ts'o
                                      31 Mar 94

La tabella magica ÃĻ aggiornata a Linux 2.1.55.

                                      Michael Chastain
                                      <mailto:mec@shout.net>
                                      22 Sep 1997

Ora dovrebbe essere aggiornata a Linux 2.1.112. Dato che
siamo in un momento di congelamento delle funzionalità
(*feature freeze*) ÃĻ improbabile che qualcosa cambi prima
della versione 2.2.x.  Le righe sono ordinate secondo il
campo numero.

                                      Krzysztof G. Baranowski
                                      <mailto: kgb@knm.org.pl>
                                      29 Jul 1998

Aggiornamento della tabella a Linux 2.5.45. Giusti nel congelamento
delle funzionalità ma ÃĻ comunque possibile che qualche nuovo
numero magico s'intrufoli prima del kernel 2.6.x.

                                      Petr Baudis
                                      <pasky@ucw.cz>
                                      03 Nov 2002

Aggiornamento della tabella magica a Linux 2.5.74.

                                      Fabian Frederick
                                      <ffrederick@users.sourceforge.net>
                                      09 Jul 2003

Nome magico

Numero

Struttura

File

PG_MAGIC

‘P’

pg_{read,write}_hdr

include/linux/pg.h

APM_BIOS_MAGIC

0x4101

apm_user

arch/x86/kernel/apm_32.c

FASYNC_MAGIC

0x4601

fasync_struct

include/linux/fs.h

SLIP_MAGIC

0x5302

slip

drivers/net/slip.h

KV_MAGIC

0x5f4b565f

kernel_vars_s

arch/mips/include/asm/sn/klkernvars.h

CODA_MAGIC

0xC0DAC0DA

coda_file_info

fs/coda/coda_fs_i.h

CCB_MAGIC

0xf2691ad2

ccb

drivers/scsi/ncr53c8xx.c

QUEUE_MAGIC_FREE

0xf7e1c9a3

queue_entry

drivers/scsi/arm/queue.c

QUEUE_MAGIC_USED

0xf7e1cc33

queue_entry

drivers/scsi/arm/queue.c

NMI_MAGIC

0x48414d4d455201

nmi_s

arch/mips/include/asm/sn/nmi.h