LKMPG: Ciao Mondo: differenze tra le versioni

Riga 430: Riga 430:


==Moduli divisi in piu file==
==Moduli divisi in piu file==
A volte ha senso dividere un modulo del kernel in vari codici sorgenti.
Ecco un esempio di un modulo del genere:


'''Esempio 2-8. start.c'''
<pre>
/*
*  start.c - Illustration of multi filed modules
*/
#include <linux/kernel.h> /* We're doing kernel work */
#include <linux/module.h> /* Specifically, a module */
int init_module(void)
{
printk(KERN_INFO "Hello, world - this is the kernel speaking\n");
return 0;
}
</pre>
Il prossimo file:
'''Esempio 2-9. stop.c'''
<pre>
/*
*  stop.c - Illustration of multi filed modules
*/
#include <linux/kernel.h> /* We're doing kernel work */
#include <linux/module.h> /* Specifically, a module  */
void cleanup_module()
{
printk(KERN_INFO "Short is the life of a kernel module\n");
}
</pre>
E, infine, il makefile:
'''Esempio 2-10. Makefile'''
<pre>
obj-m += hello-1.o
obj-m += hello-2.o
obj-m += hello-3.o
obj-m += hello-4.o
obj-m += hello-5.o
obj-m += startstop.o
startstop-objs := start.o stop.o
all:
make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules
clean:
make -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean
</pre>
Questo è il makefile completo per tutti gli esempio che abbiamo appena visto. Le prime cinque linee non sono niente di speciale, ma nell'ultimo esempio abbiamo bisogno di due linee aggiuntive. Per primo, inventiamo un nome per il nostro modulo combinato, per secondo diciamo a make quali file oggetto sono parti del modulo.


==Creare moduli per kernel precompilati==
==Creare moduli per kernel precompilati==
43

contributi