该函数如何工作 cdev_add()?
How the function works cdev_add()?
结构初始化的时候我理解正确吗
struct dev_t dev;
dev = MKDEV(major,minor_first);
我只创建设备文件,对节点来说是正确的。接下来,我应该说明我将如何使用这个设备吗?为此,您需要函数
cdev_add(&my_ch_dev, dev, minor_count);
之后
cdev_init(&my_ch_dev ,&dev_fops);
所以,我的意思是我的驱动程序将把创建的节点作为字符设备使用?提前致谢!
这里是详细的工作原理
dev = MKDEV(major,minor_first);
内核仍然不知道我们是否选择了 major/minor
号码,所以为此你需要通过调用 register_chrdev_region()
来注册他的设备
register_chrdev_region(dev,minor_count,"AYRAT_DEVICE");
所以到目前为止 number(major/minor
) 已经保留了 name(dev
) 这样其他驱动程序就不会得到相同的名称。接下来你需要向内核注册你的驱动程序。
- 通过调用
cdev_init(&my_ch_dev ,&dev_fops);
向 cdev
注册 接下来您需要通知内核我们填充了 struct cdev
的所有成员,因此为此使用 cdev_add()
.
cdev_add(&my_ch_dev, dev, minor_count);
结构初始化的时候我理解正确吗
struct dev_t dev;
dev = MKDEV(major,minor_first);
我只创建设备文件,对节点来说是正确的。接下来,我应该说明我将如何使用这个设备吗?为此,您需要函数
cdev_add(&my_ch_dev, dev, minor_count);
之后
cdev_init(&my_ch_dev ,&dev_fops);
所以,我的意思是我的驱动程序将把创建的节点作为字符设备使用?提前致谢!
这里是详细的工作原理
dev = MKDEV(major,minor_first);
内核仍然不知道我们是否选择了major/minor
号码,所以为此你需要通过调用register_chrdev_region()
来注册他的设备
register_chrdev_region(dev,minor_count,"AYRAT_DEVICE");
所以到目前为止 number(major/minor
) 已经保留了 name(dev
) 这样其他驱动程序就不会得到相同的名称。接下来你需要向内核注册你的驱动程序。- 通过调用
cdev_init(&my_ch_dev ,&dev_fops);
向cdev
注册 接下来您需要通知内核我们填充了struct cdev
的所有成员,因此为此使用cdev_add()
. cdev_add(&my_ch_dev, dev, minor_count);