Linux内核中USB设备和HDD设备的驱动器号

时间:2011-03-10 09:00:56

标签: linux-kernel usb kernel

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

2 个答案:

答案 0 :(得分:1)

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

我对这段代码并不熟悉,但希望这有助于指明你的方向。

答案 1 :(得分:0)

一个有用的调查起点代码是函数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;
  }