2011-03-10 96 views
1

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

回答

1

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

我并不熟悉代码,但希望这可以帮助您指出正确的方向。

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; 
    }