在Linux内核2.6版本以前,注册一个字符设备的的经典方法是使用register_chrdev,相应的从设备中注销字符设备的方法是unregister_chrdev,而在2.6版本以后,字符设备函数的注册与注销使用的是如下一套方法:
#include<linux/cdev.h>
struct cdev *cdev_alloc(void);//分配一个独立的cdev结构
void cdev_init(struct cdev *dev,struct file_operations *fops);//初始化cdev结构
int cdev_add(struct cdev *dev,dev_t num,unsigned int count);
void cdev_del(struct cdev *dev);//移除一个字符设备
linux-2.6.22/include/linux/cdev.h
struct cdev {
struct kobject kobj; // 每个cdev 都是一个 kobject
struct module *owner; // 指向实现驱动的模块
const struct file_operatio