/*
*调试内核驱动的过程中虽然编译成功了 但是 加载时难免有时会遇到内核异常的情况
*其中访问了空指针的情况 又是常见的异常原因 以下只是一个简单的例子 在实际的工程
*中 参数传递的方式更复杂 这时就 更要细心查找最终的根源 才能 排除异常 ...
*/
#include <linux/module.h>
#include <linux/kernel.h>#include <linux/init.h>
/* #include<linux/slab.h> */
{
int *p = NULL; /* p = kmalloc(sizeof(int),GFP_KERNEL); */
int a = 6;
printk("Function D\n");
*p = a+5;
}
void C(void)
{
printk("Function C\n");
D();
}
void B(void)
{
printk("Function B\n");
C();
}
void A(void)
{
printk("Function A\n");
B();
}
int oops_init(void)
{
printk("oops init\n");
A();
return 0;
}
void oops_exit(void)
{
printk("oops exit!\n");
}
module_init(oops_init);
module_exit(oops_exit);
MODULE_LICENSE("GPL");
MODULE_AUTHOR("David Xie");
修改后 没有异常的加载情况