【问题标题】:Drive letter for USB device and HDD devices in Linux kernelLinux 内核中 USB 设备和 HDD 设备的驱动器号
【发布时间】:2011-03-10 09:00:55
【问题描述】:

如何将驱动器号分配给 USB/HDD 驱动器?我的意思是在代码级别。我查看了代码并注意到gendisk struct 具有disk_name。这给了sda/sdb/sdc....etc。但是如果磁盘被检测为sda1, sdc1...那么这些名称可以从结构/代码中获得吗?

【问题讨论】:

    标签: linux-kernel usb kernel


    【解决方案1】:

    sda/sdb 等是代表整个驱动器的块设备。当驱动器被分区时,您将看到 sda1、sdc1 等。这些块设备仅用于访问该分区。

    我对代码并不特别熟悉,但希望这能帮助您指明正确的方向。

    【讨论】:

      【解决方案2】:

      一个有用的代码方面的调查起点是函数disk_name(),在block/partition-generic.c中定义:

        /*
         * disk_name() is used by partition check code and the genhd driver.
         * It formats the devicename of the indicated disk into
         * the supplied buffer (of size at least 32), and returns
         * a pointer to that same buffer (for convenience).
         */
      
        char *disk_name(struct gendisk *hd, int partno, char *buf)
        {
                if (!partno)
                        snprintf(buf, BDEVNAME_SIZE, "%s", hd->disk_name);
                else if (isdigit(hd->disk_name[strlen(hd->disk_name)-1]))
                        snprintf(buf, BDEVNAME_SIZE, "%sp%d", hd->disk_name, partno);
                else
                        snprintf(buf, BDEVNAME_SIZE, "%s%d", hd->disk_name, partno);
      
                return buf;
        }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-03-02
        • 2015-09-18
        • 2011-10-02
        • 2011-07-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多