Çok basit bir dünya çekirdeği modülü yapıyorum ve bazı çılgın davranışlar alıyorum. Bu, 3.3.8 çekirdeğine yükseltilinceye kadar çalıştı ve şimdi ... Evet, çıkışta init
işlevini çağırıyor ve exit
işlevi başlatılıyor.Kernel Module Init and Exit işlevleri yanlış sırada çağrılıyor
kök @ cop4610: Ben isimleri doğru
// 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);
Örnek çıktı emin yaptık /home/cop4610/Downloads/linux-3.3.8/mymodule# mymodule.ko kök insmod'a @ cop4610: /home/cop4610/Downloads/linux-3.3.8/mymodule# kuyruk/var/log/syslog Ekim 12 10:08:20 cop4610 çekirdek: [633,567832] Modül yüklenmemiş, bu printk
Aşağıdaki, bu mutluluktan bir video ening canlı: http://www.youtube.com/watch?v=8aJNSpCd7as&feature=youtu.be
yükseltmenin ardından da modül için yeniden yaptık? –
Çekirdek yükseltmesinden beri sıfırdan yeniden yükledim;) – Ben
şimdi isteğe bağlı __init ve __exit maktadır? –