设备驱动开发1-设备号的分配与注册
1、设备号的组成
设备号由主设备号和次设备号组成,主设备号表示一个具体的驱动,次设备号表示使用这个驱动的各个设备。数据类型dev_t,是个unsigned int(32位)型数据
其中,高12位为主设备号,低20位为次设备号。
MAJOR(dev_t):从dev_t获取主设备号
MINOR(dev_t):从dev_t获取次设备号
MKDEV(ma, mi):将主设备号和次设备号合成dev_t
2、申请和注册设备号
1.1 申请自动分配设备号
int alloc_chrdev_region(dev_t *dev, unsigned baseminor, unsigned count, const char *name)
dev:保存申请到的设备号;
baseminor:次设备号起始地址,一般为0;
count:要申请的设备号数量
上面函数可以申请一段连续的多个设备号,这些设备号的主设备号一样,但次设备号不同,次设备号从baseminor开始分配
1.2 注册指定的设备号
int register_chrdev_region(dev_t from, insigned count, const char *name)
from:注册的起始设备号;
count:申请的设备数量;
name:设备的名字
3、释放设备号:
void unregister_chrdev_region(dev_t from, unsigned count)
from:要释放的设备号
count:从from开始,要释放的设备号数量