字符设备:
静态申请设备号
int register_chrdev_region(dev_t from, unsigned count,const char *name)
申请使用从from开始的count个设备号(主设备号不变,次设备号增加)
from:希望申请使用的设备号
count:希望申请使用的设备号数目
name:设备文件
动态分配设备号
int alloc_chrdev_region(dev_t *dev, unsigned baseminor, unsigned count, const char *name)
dev:分配到的设备号
baseminor:起始次设备号
count:需要分配的设备号数目
name:设备文件
注销设备号
void unregister_chrdev_region(dev_t from,unsigned count)
mknod filename type major minor
字符设备注册(分配空间)
struct cdev *cdev_alloc(void)
字符设备注册(初始化)
void cdev_init(struct cdev *cdev, const struct file_operations *fops)
字符设备注册(添加)
int cdev_add(struct cdev *p, dev_t dev, unsigned count)
count:添加的设备个数
字符设备注销
int cdev_del(struct cdev *p)
分配设备号
MKDEV(int major, int minor);
从设备号获取主设备号
MAJOR(dev_t dev);
从设备号获取次设备号
MINOR(dev_t dev);
从用户空间获取数据(自带权限检查)
int copy_from_user(void *to, const void __user *from, int n)
向用户空间发送数据(自带权限检查)
int copy_to_user(void __user *to, const void *from, int n)
创建设备节点
mknod filename type major minor
查看设备信息
cat /proc/devices