3

SCSIドライバーで使用されるカーネル構造struct scsi_device(カーネル2.6.23)によると:

http://lxr.linux.no/linux+v2.6.23/include/scsi/scsi_device.h#L49

デバイスがUSBデバイスであるかATAデバイスであるかを区別するための信頼できる方法はありますか?

4

1 に答える 1

1

各 について、それに対応する をscsi_device取得できます。そこから、SCSI LLD の vtable である を取得できます。そこから、名前フィールドを見ることができます。drivers/scsi/storage/usb.c は、文字列が「usb-storage」であることを示しています。scsi_hostscsi_host_template

したがって、「sdev」を scsi_device ポインターとして指定sdev->shost->hostt->nameすると、それが USB 大容量ストレージ デバイスからの LUN である場合、「usb-storage」に解決されるはずです。設計の観点からは、この方法でタスクを達成するのは一種の「ハック」と見なされるかもしれませんが、適切な API がなければ、これが最も簡単な方法です。

于 2011-11-04T21:16:25.217 に答える