设备号的分配与注册

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开始,要释放的设备号数量

原文地址:https://www.cnblogs.com/Mike2019/p/12887628.html