Linux内核 cdev_add()

函数:cdev_add()

函数cdev_add()用于向Linux内核系统中添加一个新的cdev结构体变量所描述的字符设备,并且使这个设备立即可用。

文件包含:

#include <linux/cdev.h>

函数定义:

在内核源码中的位置:linux-3.19.3/fs/char_dev.c

函数定义格式:

int cdev_add(struct cdev *, dev_t, unsigned)

输入参数说明:

  • 函数cdev_add()有三个输入参数,第一个输入参数代表即将被添加入Linux内核系统的字符设备,此结构体在酷客教程函数cdev_alloc()分析文档的返回参数说明部分有详细解释;

  • 第二个输入参数是dev_t类型的变量,此变量代表设备的设备号,其中包括主设备号和次设备号,其内核定义如下:

typedef __kernel_dev_t             dev_t;

其中__kernel_dev_t的定义如下:

typedef __u32 __kernel_dev_t;

由此,可知dev_t其实是一个无符号的32位整数,其中32为的前12位代表主设备号,后20位代表此设备号。

  • 第三个输入参数是无符号的整型变量,代表想注册设备的设备号的范围,用于给struct cdev中的字段count赋值。

返回参数说明:

  • 函数cdev_add()返回int型的结果,表示设备是否添加成功。如果成功,则返回0,如果失败,则返回- ENOMEM, ENOMEM的被定义为12。

实例解析:

函数cdev_add()必须与函数cdev_del()配对使用,才能保证测试程序不会出问题,函数cdev_add()的测试程序及结果分析请参考酷客教程函数cdev_del()的分析文档。

酷客网相关文章:

赞(0)

评论 抢沙发

评论前必须登录!