在linux内核中用dev_t来保存设备的编号, dev_t 是个32位数值12位为主设备号, 20位次设备号, 想要获得dev_t的设备号最好使用给定的宏MAJOR(dev_t dev), MINOR(dev_t dev).
相反用MKDEV(int major, int minor)来获取dev_t类型的值.
如果我们在明确知道设备编号的时候可以使用register_chrdev_region函数来分配编号,否则最好使用动态分配函数alloc_chrdev_region(dev_t *dev, minor, count, char *name).
不论采用上述那种分配方法都用unregister_chrdev_region(dev_t, unsigned int count)来释放.
示例代码:
静态分配设备号:
static dev_t dev;
static int __init test_init(void) {
int err;
/* 静态分配设备号 *?
dev = MKDEV(240, 0);
err = register_chrdev_region(dev,