/*
* 本例用于捕捉panic事件
*/
#include <linux/notifier.h>
#include <linux/kernel.h>
#include <linux/init.h>
static int my_panic_event(struct notifier_block *this,
unsigned long event,
void *ptr)
{
printk("###HaHa after panic######/n");
return NOTIFY_DONE;
}
static struct notifier_block my_panic_block = {
.notifier_call = my_panic_event,
.priority = INT_MAX,
.next = NULL,
};
static int __init test_init(void)
{
int ret = 0;
ret = atomic_notifier_chain_register(&panic_notifier_list, &my_panic_block);
if (ret) {
return ret;
}
printk("mod init successfuly!/n");
return 0;
}
static void __exit test_exit(void)
{
atomic_notifier_chain_unregister(&panic_notifier_list, &my_panic_block);
printk("mod exit successfuly!/n");
}
module_init(test_init);
module_exit(test_exit);
MODULE_LICENSE("GPL");
捕获panic事件
本文介绍了一个简单的Linux内核模块,该模块能够在系统发生panic时触发并打印一条消息。通过注册notifier_block到panic通知链中,可以实现在panic事件发生后的响应处理。

被折叠的 条评论
为什么被折叠?



