获取设备号
alloc_chrdev_region(&devno, 0, DEV_CNT, "EmbedCharDev")
采用动态分配的方式获取设备号,次设备号为 0,设备名称为 EmbedCharDev,可通过命令 cat /proc/devices 查看,EV_CNT 为 1,当前只申请一个设备号。
移除设备时需要归还申请到的设备号,对应函数为 "unregister_chrdev_region()"
设备节点(设备文件)
出现在 /dev/ 路径下。创建设备节点并注册到文件系统方法可以用命令 ”mknod /dev/chrdev c 244 0”,也可以在驱动代码里通过函数 "device_create()" 创建设备节点。
移除设备时需要删除设备节点,对应的函数为 "device_destroy()",此函数还删除/sys/devices/virtual 目录下对应的设备目录
向内核提交一个设备
int cdev_add(struct cdev *p, dev_t dev, unsigned count)
cdev_add 函数用于向内核的 cdev_map 散列表添加一个新的字符设备
调用 cdev_del() 函数来释放散列表中的对象以及 cdev 结构本身