0
我寫了一個簡單的代碼來捕捉netdevice
通知,並簡單地打印出自己的價值出消息日誌文件...下面的代碼:通知鏈代碼崩潰系統
#include <linux/notifier.h>
#include <asm/kdebug.h>
#include <linux/netdevice.h>
#include <linux/inetdevice.h>
int my_dev_event_handler (struct notifier_block *self,unsigned long val, void *data)
{
printk (KERN_INFO "my_dev_event: Val=%ld, Interface=%s\n", val,((struct net_device *) data)->name);
return 0;
}
static struct notifier_block my_dev_notifier = {
.notifier_call = my_dev_event_handler,
};
static int __init
my_init (void)
{
printk(KERN_ALERT "***Module Loaded***\n");
register_netdevice_notifier (&my_dev_notifier);
return 0;
}
static void __exit my_end(void)
{
printk(KERN_ALERT "***Module Unloaded***\n");
}
module_init(my_init);
module_exit(my_end);
這段代碼編譯並運行正常,它每次打開/關閉設備時打印出「my_dev_event:...」行......但有時(並非總是)整個系統在設備上升/下降時凍結......現在我有兩個問題: 1-爲什麼系統凍結?這段代碼有什麼問題? 2-如果有更好的方式來通知我的內核模塊時,設備連接/斷開...