Linux驱动开发--知识储备

MKDEV

MKDEV是将主设备号和次设备号转换成dev_t类型: unsigned int 类型,32位,高12位为主设备号,低20位为次设备号

    定义:在<linux/cdev.h>中的宏    
    形式:MKDEV(int major,int minor)    major为主设备号   minor为次设备号
    宏定义:#define MKDEV(major,minor) (((major) << MINORBITS) | (minor))
    成功执行返回dev_t类型的设备编号,dev_t类型是unsigned int 类型,32位,用于在驱动程序中定义设备编号,高12位为主设备号,低20位为次设备号
    获得dev_t后可以通过 int register_chrdev_region(dev_t from, unsigned count, const char *name)静态注册设备号
        from :要分配的设备编号范围的初始值(次设备号常设为0);
        Count:连续编号范围.

        name:编号相关联的设备名称. (/proc/devices);

    或者通过 int alloc_chrdev_region(dev_t *dev,unsigned int firstminor,unsigned int count,char *name);动态注册设备号

         firstminor是请求的最小的次编号;

         count是请求的连续设备编号的总数;

         name为设备名,返回值小于0表示分配失败。

    然后通过major=MMOR(dev)获取主设备号

    释放时调用:unregister_chrdev_region

内核库

    保持路径:/lib/modules/内核版本号/build目下,内核版本号: shell uname -r






阅读更多
文章标签: linux驱动 字符设备
个人分类: Linux
上一篇Android智能指针
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭