dev_t 如何保存 1 个以上的次要号码?
How does dev_t hold more than 1 minor numbers?
如果下面api在随机选择的主设备号下保留3个设备(2,3,4),其中次设备设备号3和4存储在dev_t变量dev_no?
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 变量中,20 位保留给次要编号,12 位保留给主要编号,尽管次要编号和主要编号的范围都是 0-255。但是我没有清楚地了解 major:minor 数字是如何为 /dev/devices.
存储的
你对alloc_chrdev_region的理解是错误的。
当你要求它'reserve'给你从2开始的3个次要号码时,这意味着它为你保留它并且dev_no是仅填充主要编号和第一个次要编号的组合。
Reserved 表示当您尝试使用相同的 Major 号码作为更多 Minor 号码时,新的 minor 号码将从 5 开始,即 2,3, 和 4 被保留。
如果下面api在随机选择的主设备号下保留3个设备(2,3,4),其中次设备设备号3和4存储在dev_t变量dev_no?
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 变量中,20 位保留给次要编号,12 位保留给主要编号,尽管次要编号和主要编号的范围都是 0-255。但是我没有清楚地了解 major:minor 数字是如何为 /dev/devices.
存储的你对alloc_chrdev_region的理解是错误的。
当你要求它'reserve'给你从2开始的3个次要号码时,这意味着它为你保留它并且dev_no是仅填充主要编号和第一个次要编号的组合。
Reserved 表示当您尝试使用相同的 Major 号码作为更多 Minor 号码时,新的 minor 号码将从 5 开始,即 2,3, 和 4 被保留。