我正在製作一個非常簡單的hello world內核模塊並獲得一些瘋狂的行爲。這工作,直到我升級到內核3.3.8,現在它...呃,它是在退出時調用init
函數,並在初始化時調用exit
函數。我確信我的名字是正確的內核模塊初始化和退出函數調用順序錯誤
// 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);
輸出示例:
根@ cop4610:/home/cop4610/Downloads/linux-3.3.8/mymodule#用insmod mymodule.ko根@ cop4610:/home/cop4610/Downloads/linux-3.3.8/mymodule# 尾的/ var/log/syslog的10月12日10時08分20秒cop4610內核:[633.567832] 模塊被卸載,這是printk的
以下是這個happ的視頻直播: http://www.youtube.com/watch?v=8aJNSpCd7as&feature=youtu.be
是否已進行了改造升級後的模塊? –
自內核升級以來,我從頭開始重新編譯它;) – Ben
是__init和__exit宏現在是可選的嗎? –