struct cdev 是字符设备在内核的抽象
struct demo_dev{
// 其他成员变量
struct cdev cdev;
};
分配cdev内存:
struct demo_dev * pdev = kzalloc(sizeof(struct demo_dev),GFP_KERNEL);
初始化cdev结构:
void cdev_init(struct cdev *cdev,struct file_operations *ops);
设备号:32位无符号整数 dev_t类型
高12位:主设备号
低20位:次设备号
静态注册:
int register_chrdev_region(dev_t from,uint count,const char *name);
动态分配设备号并注册:
int alloc_chrdev_region(dev_t *dev,uint baseminor,uint count,const char * name);
释放设备号:
void unregister_chrdev_region(dev_t form,uint count);