• 驱动调试笔记


    #include <linux/module.h>
    #include <linux/init.h>
    #include <linux/slab.h>
    #include <linux/miscdevice.h>
    #include <linux/gpio/consumer.h>
    #include <asm-generic/gpio.h>
    #include <linux/gpio/consumer.h>
    
    static int __init my_gpio_init(void){
        int ret = 0;
        char *p = NULL;
        printk(KERN_ERR"==sfl: enter my_gpio_init==
    ");
        p = kcalloc(0xff, 0, GFP_KERNEL);
        if (!p) {
            printk(KERN_ERR"==sfl: p==NULL==
    ");
        } else {
            printk(KERN_ERR"==sfl: p==%p
    ", p);
            p[0] = 5;
            printk(KERN_ERR"==sfl: p[0]==%d
    ", p[0]);
        }
    
        kfree(p);
        
        return 0;
    }
    
    static void __exit my_gpio_exit(void){
        printk(KERN_ERR"==enter my_gpio_exit==
    ");
    }
    
    module_init(my_gpio_init);
    module_exit(my_gpio_exit);
    MODULE_LICENSE("GPL");

    insmod插入时打印如下:

    root@ggs:/mytest# insmod test.ko 
    [ 1040.877617] ==sfl: enter my_gpio_init==
    [ 1040.881570] ==sfl: p==0000000000000010
    [ 1040.885381] Unable to handle kernel NULL pointer dereference at virtual address 00000010

    返回的地址竟然不是NULL!!,而是10

  • 相关阅读:
    java基础
    C++菜鸟启动之旅--vc6.0使用教程详解
    第8章 Linux磁盘与文件系统管理
    IO(四)----对象的序列化
    IO(三)----序列流
    IO(二)----字符流
    IO(一)----字节流
    File类
    枚举类
    自动装箱和自动拆箱
  • 原文地址:https://www.cnblogs.com/hellokitty2/p/9850725.html
Copyright © 2020-2023  润新知