这是老版本内核的的Linux驱动注册函数写法:
major = register_chrdev(0, "hello", &hello_fops); /* (major, 0), (major, 1), ..., (major, 255)都对应hello_fops */
新版本内核Linux驱动注册函数写法
#define MAJOR(devid) ((unsigned int) ((devid) >> 20)) /* 主设备号 */
#define MINOR(devid) ((unsigned int) ((devid) & MINORMASK)) /* 次设备号,这个定义在内核头文件中 */
static struct cdev hello_cdev; /* 定义cdev类型的一个结构体变量 */
MINOR(devid) /*取出次设备号*/
MAJOR(devid) /*取出主设备号*/
MKDEV(major, 0) /*把主设备号和次设备号组合成一个dev_t类型的设备号,这里取得次设备号是0*/
下面给出代码就一目了然了: