如果下面的api在随机选择的主编号下保留3个设备(2,3,4),那么在dev_t变量dev_no变量中存储的次编号3和4在哪里?
alloc_chrdev_region(&dev_no, 2,3, "mod3-device");
使用MINOR(dev_t)宏提取次要数字时,我只能得到1个次要数字(即2)。
me@myPC:~/work/dd/2018$ dmesg | tail
[16577.759505] module_init()
[17301.433970] major:minor 238:2
我读到在dev_t变量中,次要数字和主要数字的范围均为0-255,而次要数字保留20位,主要数字保留12位。但是,我对/ dev / devices的major:minor数字的存储方式没有清楚的认识。
答案 0 :(得分:0)
您对alloc_chrdev_region的理解是错误的。
当您要求它为您“保留”从2开始的3个小数字时,表示它为您保留它,并且dev_no仅填充了主数字和第一个小数字的组合数。
Reserved表示当您尝试将相同的Major号用于更多次号时,新的次要号将从5开始,即2,3和4被保留。