在Linux2.6的版本中,用dev_t类型来描述设备号(dev_t是32位数值类型,其中高12位表示主设备号,低20位表示次设备号)。
用两个宏MAJOR,MINOR分别获得dev_t设备号的主设备号和次设备号,而且用MKDEV宏来实现逆过程,即组合主设备号和次设备号而获得dev_t类型的设备号。实现代码如下:
#include <linux/kdev.h>
MAJOR(dev_t dev);
MINOR(dev_t dev);
MKDEV(int major,int minor);
分配设备号有静态分配和动态分配两种。
静态分配:是指在事先知道设备主设备号的情况下,通过参数函数指定第一个设备号,而向系统申请分配一定数目的设备号。
动态分配:是指通过参数仅设置第一个次设备号(通常为0,事先不会知道主设备号)和要分配的设备数目,而系统动态分配所需的设备号。