上节讲述了cdev和file_operations之间的关系,现在来看看注册驱动要用到的函数。
cdev 结构体的dev_t 成员定义了设备号,为32位,其中12位是主设备号,20位是次设备号。
通过主次设备号来生成dev_t:
MKDEV(int major,int minor)
静态申请设备号
int register_chrdev_region(dev_t from,unsigned count,const char *name)
动态申请设备号
int alloc_chrdev_region(dev_t *dev,unsigned baseminor,unsigned count,const char *name);
请释放原先申请的设备号
void unregister_chrdev_region(dev_t from,unsigned count);
一组函数用于操作cdev 结构体
void cdev_init(struct cdev*,struct file_operations *);
int cdev_add(struct cdev *,dev_t,unsigned);
void cdev_del(struct cdev *);
本文介绍了Linux内核中字符设备的设备号管理方法,包括设备号的静态和动态分配方式,并详细解释了如何使用cdev结构体及相关的初始化、注册与注销函数。
1500

被折叠的 条评论
为什么被折叠?



