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:
- 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 |
|
APM_BIOS_MAGIC |
0x4101 |
apm_user |
|
FASYNC_MAGIC |
0x4601 |
fasync_struct |
|
SLIP_MAGIC |
0x5302 |
slip |
|
KV_MAGIC |
0x5f4b565f |
kernel_vars_s |
|
CODA_MAGIC |
0xC0DAC0DA |
coda_file_info |
|
CCB_MAGIC |
0xf2691ad2 |
ccb |
|
QUEUE_MAGIC_FREE |
0xf7e1c9a3 |
queue_entry |
|
QUEUE_MAGIC_USED |
0xf7e1cc33 |
queue_entry |
|
NMI_MAGIC |
0x48414d4d455201 |
nmi_s |
|