LKMPG: Fasi preliminari: differenze tra le versioni

Riga 33: Riga 33:


===Name Space===
===Name Space===
Quando scrivi un piccolo programma in C, usi variabili che sono convenienti ed hanno senso se le leggi. Se, d'altra parte, stai scrivendo delle funzioni che saranno parte di un problema più grande, qualsiasi variabile globale hai scritto è parte di una comunità di variabili globali scritte da altre persone; alcuni nomi di queste variabili possono coincidere. Quando un programma ha molte variabili globali che non hanno abbastanza significato da essere distinte, hai ottenuto un inquinamento dello spazio dei nomi (namespace). In grandi progetti, uno sforzo deve essere fatto per ricordarsi i nomi riservati, e trovare un modo per sviluppare schemi per creare nomi univoci di variabili e simboli.


Quando si scrive codice per il kernel, anche il più piccolo dei moduli sarà collegato all'intero kernel, rendendo quanto detto sopra, un problema. Il miglior modo per evitare questo problema è di dichiarare tutte le variabili come statiche ed usare un prefisso ben definito per i simboli. Per convenzione, tutti i prefissi del kernel sono minuscoli. Se non vuoi dichiarare tutto come statico, un'altra opzione è di dichiarare una tabella dei simboli e registrarla con il kernel. Arriveremo a questo dopo.
Il file <code>/proc/kallsyms</code> contiene tutti i simboli che il kernel conosce e che sono accessibili al tuo modulo poichè condividono lo spazio del codice (codespace) del kernel.


===Code Space===
===Code Space===
43

contributi