cdev头文件目录,驱动学习之register_chrdev

1:register_chrdev_region

123456789101112131415161718192021222324int register_chrdev_region(dev_t from, unsigned count, const char *name){    struct char_device_struct *cd;    dev_t to = from + count;    dev_t n, next;     for (n = from; n  to)            next = to;        cd = __register_chrdev_region(MAJOR(n), MINOR(n),                   next - n, name);        if (IS_ERR(cd))            goto fail;    }    return 0;fail:    to = n;    for (n = from; n i_devices的链表头    dev_t dev;     //起始的设备号    unsigned int count;  //设备号的范围,也可以用于计数等,起始就是一个普通的变量};

cdev结构体的定义在linux/cdev.h中,这个结构体的定义是用于描述一个设备驱动

注册函数相关的函数

cdev_alloc:给cdev结构体分配内存(指针实例化)

cdev_init:绑定cdev和file_operations

cdev_add:注册设备

cdev_del:注销设备

3:dev_t类型

    dev_t类型其本质就是一个unsigned int 类型的变量,这个变量用于存放主次设备号,比如高16位存放主设备号,低16位存放次设备号,具体哪些位用来存放主设备号,哪些位用来存放次设备号要看具体的定义。

4:设备号相关的三个宏

MKDEV:由主次设备号换算得到一个设备号

123#define MKDEV(ma,mi)    (((ma)  MINORBITS))

MINOR:从设备号中取出次设备号

1#define MINOR(dev)    ((unsigned int) ((dev) & MINORMASK))

本文转自 菜鸟养成记 51CTO博客,原文链接:http://blog.51cto.com/11674570/1872435

上海迪士尼现在还开业吗 去上海迪士尼玩的照片 上海迪士尼酒店英文名 上海迪士尼商店给邮快递吗 上海迪士尼乐园 不进去 上海客运总站到上海迪士尼 上海迪士尼短袖 上海迪士尼暑期温度 上海迪士尼附近的海滩 上海迪士尼ipad能带 天水到昆明飞机票 哈尔滨到大同的飞机票 杭卅到贵阳飞机票价 乌鲁木齐到邯郸飞机票 富国岛机票 长沙到淮安机票 武汉飞珠海机票查询 石家庄到桂林飞机票价 深圳飞绵阳机票价格 哈尔滨到呼和浩特飞机票查询