【问题标题】:How does dev_t hold more than 1 minor numbers?dev_t 如何拥有 1 个以上的次要号码?
【发布时间】:2018-07-04 17:21:10
【问题描述】:

如果下面的api在一个随机选择的major编号下预留了3个设备(2,3,4),那么dev_t变量dev_no中存储的minor number 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 变量中,20 位为次要编号保留,12 位为主要编号保留,尽管次要编号和主要编号的范围都是 0-255。但是我没有清楚地了解 /dev/devices 的主要:次要数字是如何存储的。

【问题讨论】:

    标签: linux-device-driver


    【解决方案1】:

    你对 alloc_chrdev_region 的理解是错误的。

    当您要求它为您“保留”从 2 开始的 3 个次要编号时,表示它为您保留它,并且 dev_no 仅填充主要编号和第一个次要的组合数字。

    Reserved 表示当您尝试将相同的 Major 号码用于更多 Minor 号码时,新的 Minor 号码将从 5 开始,即 2,3,并且 4 被保留。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-02
      • 1970-01-01
      相关资源
      最近更新 更多