Sto facendo un semplice modulo hello world kernel e sto facendo un pazzo comportamento. Questo ha funzionato fino a quando non ho aggiornato il kernel 3.3.8 e ora ... Beh, chiama la funzione init
all'uscita e la funzione exit
al momento dell'inizializzazione. Ho fatto in modo che i miei nomi sono corretti uscitaLe funzioni Init ed Exit del modulo Kernel vengono chiamate nell'ordine errato
// Needed for module definitions
#include <linux/module.h>
// Needed for initilization modules
#include <linux/init.h>
// Must declare some license
MODULE_LICENSE("Dual BSD/GPL");
// Function to be called on insmod
// Returns 0 on success
static int __init mymod_init(void)
{
// Prints kernel alert. Check /var/log/syslog
printk(KERN_ALERT "Module was loaded, this is the printk.");
return 0;
}
// Function to be called on rmmod
static void __exit mymod_exit(void)
{
// Prints kernel alert. Check /var/log/syslog
printk(KERN_ALERT "Module was unloaded, this is the printk");
}
// Register these functions
module_init(mymod_init);
module_exit(mymod_exit);
Esempio:
root @ cop4610: /home/cop4610/Downloads/linux-3.3.8/mymodule# insmod radice mymodule.ko @ cop4610: /home/cop4610/Downloads/linux-3.3.8/mymodule# tail/var/log/syslog 12 ottobre 10:08:20 kernel cop4610: [633.567832] Il modulo è stato scaricato, questa è la stampante
Quello che segue è un video di questo happ ening live: http://www.youtube.com/watch?v=8aJNSpCd7as&feature=youtu.be
hai fatto ricostruire per il modulo dopo l'aggiornamento? –
L'ho rifatto da zero dall'aggiornamento del kernel;) – Ben
sono __init e la macro __exit ora è facoltativa? –