LKMPG: Fasi preliminari: differenze tra le versioni
Riga 2: | Riga 2: | ||
==Moduli vs Programmi== | ==Moduli vs Programmi== | ||
===Come i moduli iniziano e finiscono=== | ===Come i moduli iniziano e finiscono=== | ||
Un programma di solito inizia con la funzione main(), esegue una serie di istruzioni e termina al completamento di queste istruzioni. I moduli del kernel lavorano in modo leggermente diverso. Un modulo inizia sempre o con la funzione <code>init_module</code> o con la funzione che specifichi nella chiamata di <code>module_init</code>. Questa è la funzione d'ingresso per i moduli: dice al kernel che funzionalità il modulo fornisce e imposta il kernel in modo da eseguire le funzioni del modulo quando richieste. Una volta fatto tutto questo, la funzione d'ingresso termina ed il modulo non fa nulla finchè il kernel vuole fare qualcosa con il codice che il modulo fornisce. | |||
Tutti i moduli terminano chiamando o la funzione <code>cleanup_module</code> o la funzione specificata nella chiamata di <code>module_exit</code>. Questa è la funzione d'uscita dei moduli: questa rimuove qualsiasi cosa la funzione d'ingresso ha fatto. Elimina le funzionalità registrate dal modulo all'interno del kernel dalla funzione d'ingresso. | |||
Ogni modulo deve avere una funzione d'ingresso ed una d'uscita. Poichè c'è piu di un modo di specificare le funzioni d'ingresso ed uscita, cercherò di fare del mio meglio usando i termini `funzione d'ingresso' e `funzione d'uscita', ma se dovessi cosa intendo. | |||
===Funzioni disponibili per i moduli=== | ===Funzioni disponibili per i moduli=== |
Versione delle 21:08, 26 apr 2010
Moduli vs Programmi
Come i moduli iniziano e finiscono
Un programma di solito inizia con la funzione main(), esegue una serie di istruzioni e termina al completamento di queste istruzioni. I moduli del kernel lavorano in modo leggermente diverso. Un modulo inizia sempre o con la funzione init_module
o con la funzione che specifichi nella chiamata di module_init
. Questa è la funzione d'ingresso per i moduli: dice al kernel che funzionalità il modulo fornisce e imposta il kernel in modo da eseguire le funzioni del modulo quando richieste. Una volta fatto tutto questo, la funzione d'ingresso termina ed il modulo non fa nulla finchè il kernel vuole fare qualcosa con il codice che il modulo fornisce.
Tutti i moduli terminano chiamando o la funzione cleanup_module
o la funzione specificata nella chiamata di module_exit
. Questa è la funzione d'uscita dei moduli: questa rimuove qualsiasi cosa la funzione d'ingresso ha fatto. Elimina le funzionalità registrate dal modulo all'interno del kernel dalla funzione d'ingresso.
Ogni modulo deve avere una funzione d'ingresso ed una d'uscita. Poichè c'è piu di un modo di specificare le funzioni d'ingresso ed uscita, cercherò di fare del mio meglio usando i termini `funzione d'ingresso' e `funzione d'uscita', ma se dovessi cosa intendo.