SCSIドライバーで使用されるカーネル構造struct scsi_device
(カーネル2.6.23)によると:
http://lxr.linux.no/linux+v2.6.23/include/scsi/scsi_device.h#L49
デバイスがUSBデバイスであるかATAデバイスであるかを区別するための信頼できる方法はありますか?
SCSIドライバーで使用されるカーネル構造struct scsi_device
(カーネル2.6.23)によると:
http://lxr.linux.no/linux+v2.6.23/include/scsi/scsi_device.h#L49
デバイスがUSBデバイスであるかATAデバイスであるかを区別するための信頼できる方法はありますか?
各 について、それに対応する をscsi_device
取得できます。そこから、SCSI LLD の vtable である を取得できます。そこから、名前フィールドを見ることができます。drivers/scsi/storage/usb.c は、文字列が「usb-storage」であることを示しています。scsi_host
scsi_host_template
したがって、「sdev」を scsi_device ポインターとして指定sdev->shost->hostt->name
すると、それが USB 大容量ストレージ デバイスからの LUN である場合、「usb-storage」に解決されるはずです。設計の観点からは、この方法でタスクを達成するのは一種の「ハック」と見なされるかもしれませんが、適切な API がなければ、これが最も簡単な方法です。