LKMPG: Ciao Mondo: differenze tra le versioni

Nessun cambiamento nella dimensione ,  25 apr 2010
Riga 165: Riga 165:
==Ciao, Mondo (parte 3): Le macro __init e __exit==
==Ciao, Mondo (parte 3): Le macro __init e __exit==


Ora vedremo una caratteristica dei kernel 2.2 e superiori. Si faccia caso alla diversa definizione delle funzioni di init e di cleanup. La macro <code>__init</code> permette, per i driver built-in, di ignorare la funzione init di essere ignorata e di liberare la memoria ad essa associata una volta che la funzione termina. Lo stesso non vale per i moduli caricabili: infatti quanto abbiamo detto vale quando viene invocata la funzione di init.
Ora vedremo una caratteristica dei kernel 2.2 e superiori. Si faccia caso alla diversa definizione delle funzioni di init e di cleanup. La macro <code>__init</code> permette, per i driver built-in, di scartare la funzione e di liberare la memoria ad essa associata una volta che la funzione termina. Lo stesso non vale per i moduli caricabili: infatti quanto abbiamo detto ha perfettamente senso se si pensa a come la funzione iniziale viene invocata.
Esiste anche la macro <code>__initdata</code> che funziona similmente a <code>__init</code> ma per le "variabili di init" piuttosto che per le funzioni.
Esiste anche la macro <code>__initdata</code> che funziona similmente a <code>__init</code> ma per le "variabili di init" piuttosto che per le funzioni.


Riga 210: Riga 210:
</pre>
</pre>
Nei kernel 2.4 e superiori, è stato messo a punto un meccanismo che permette di identificare il codice con licenza GPL (e simili) in modo tale che la gente può essere avvisata se il codice non è open-source. Ciò si può realizzare con la macro <code>MODULE_LICENSE</code> che è mostrata nel prossimo pezzo di codice. Impostando la licenza GPL, è possibile fare in modo che l'avviso venga stampato ugualmente. Questo meccanismo è definito e documentato in <code>linux/module.h</code>:
Nei kernel 2.4 e superiori, è stato messo a punto un meccanismo che permette di identificare il codice con licenza GPL (e simili) in modo tale che la gente può essere avvisata se il codice non è open-source. Ciò si può realizzare con la macro <code>MODULE_LICENSE</code> che è mostrata nel prossimo pezzo di codice. Impostando la licenza GPL, è possibile fare in modo che l'avviso non venga stampato. Questo meccanismo è definito e documentato in <code>linux/module.h</code>:
<pre>
<pre>
/*
/*
43

contributi