美文网首页
Linux 驱动-5 字符设备号

Linux 驱动-5 字符设备号

作者: 薛东弗斯 | 来源:发表于2022-03-13 07:04 被阅读0次
    块设备与字符设备独立编号 proc下面放临时信息

    w@w:~/linux_kernel/dev_t$ cat hello.c

    #include <linux/init.h>

    #include <linux/module.h>

    #include <linux/kdev_t.h>

    #include <linux/fs.h>

    static int major = 233;      //主设备号

    static int minor = 0;          //次设备号

    static dev_t devno;             //定义设备号变量

    static int hello_init(void)

    {

            int result;

            printk("hello_init \n");

            devno = MKDEV(major,minor);       //创建主次设备号

            result = register_chrdev_region(devno, 1, "test");    //注册设备号, 1:代表注册一个设备,名称叫test

            if(result<0)                  //创建成功为0,失败一般为负值

            {

                    printk("register_chrdev_region fail \n");

                    return result;

            }

            return 0;

    }

    static void hello_exit(void)               //设备号也是资源,不用必须删除注销

    {

            printk("hello_exit \n");

            unregister_chrdev_region(devno,1);

            return;

    }

    module_init(hello_init);

    module_exit(hello_exit);

    //proc/devices


    Makefile


    w@w:~/linux_kernel/dev_t$ cat Makefile

    ifneq ($(KERNELRELEASE),)

    $(info "2nd")

    obj-m:=hello.o

    else

    KDIR :=/lib/modules/$(shell uname -r)/build

    PWD  :=$(shell pwd)

    all:

            $(info "1st")

            make -C $(KDIR) M=$(PWD) modules

    clean:

            rm -f *.ko *.o *.mod.o *.symvers *.cmd  *.mod.c *.order

    endif


    w@w:~/linux_kernel/dev_t$ sudo make

    "1st"

    make -C /lib/modules/5.4.0-104-generic/build M=/home/w/linux_kernel/dev_t modules

    make[1]: Entering directory '/usr/src/linux-headers-5.4.0-104-generic'

    "2nd"

      CC [M]  /home/w/linux_kernel/dev_t/hello.o

    "2nd"

      Building modules, stage 2.

      MODPOST 1 modules

    WARNING: modpost: missing MODULE_LICENSE() in /home/w/linux_kernel/dev_t/hello.o

    see include/linux/module.h for more information

      CC [M]  /home/w/linux_kernel/dev_t/hello.mod.o

      LD [M]  /home/w/linux_kernel/dev_t/hello.ko


    加载模块,设备节点被创建 卸载模块,节点被注销

    相关文章

      网友评论

          本文标题:Linux 驱动-5 字符设备号

          本文链接:https://www.haomeiwen.com/subject/onbfdrtx.html