1.之前注册字符设备用的如下函数注册字符设备驱动:
register_chrdev(unsigned int major, const char *name,const struct file_operations...它会有个很大的缺点:
每注册个字符设备,还会连续注册0~255个次设备号,使它们绑定在同一个file_operations操作方法结构体上,在大多数情况下,都只用极少的次设备号,所以会浪费很多资源.
2....所以在2.4版本后,内核里就加入了以下几个函数也可以来实现注册字符设备:
分为了静态注册(指定设备编号来注册)、动态分配(不指定设备编号来注册),以及有连续注册的次设备编号范围区间,避免了register_chrdev...*name);
from: 注册的指定起始设备编号,比如:MKDEV(100, 0),表示起始主设备号100, 起始次设备号为0
count:需要连续注册的次设备编号个数,比如: 起始次设备号为...unsigned int count; //连续注册的次设备号个数
};
2.4:
/*将cdev结构体添加到系统中,并将dev(注册好的设备编号)放入cdev-> dev