Tworzę bardzo prosty moduł hello world jądra i robię szalone zachowanie. To działało, dopóki nie zaktualizowałem jądra do wersji 3.3.8, a teraz ... Cóż, to wywołuje funkcję init
przy wyjściu i exit
po inicjalizacji. Zrobiłem pewien, że moi nazwy są poprawne wyjścieFunkcje modułu Init i Exit modułu jądra są wywoływane w niewłaściwej kolejności.
// 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);
Próbka:
root @ cop4610: /home/cop4610/Downloads/linux-3.3.8/mymodule# insmod mymodule.ko korzeń @ cop4610: /home/cop4610/Downloads/linux-3.3.8/mymodule# ogon/var/log/syslog 12 października 10:08:20 cop4610 jądro: [633.567832] Moduł został wyładowany, jest to wydruk
Poniżej znajduje się wideo z tego happ ening live: http://www.youtube.com/watch?v=8aJNSpCd7as&feature=youtu.be
dokonały odbudować dla modułu po aktualizacji? –
Przeprojektowałem go od zera od czasu aktualizacji jądra;) – Ben
to makro __init i __exit teraz opcjonalne? –