メモ

あまりにも色々とアレなので現実トウヒ。drivers/staging/rts_pstor の printk 関連なナニがまだ対応できてないので諸々確認してみた。
む、struct pci_dev 型の属性使ってるケイスがありますね。ちなみに pci_dev 構造体なオブジェクトについては

static int queuecommand_lck(struct scsi_cmnd *srb,
			void (*done)(struct scsi_cmnd *))
{
	struct rtsx_dev *dev = host_to_rtsx(srb->device->host);

で確保される rtsx_dev 構造体のメンバに居るはず。

struct rtsx_dev {
	struct pci_dev *pci;

む、なんとなく

  • struct scsi_cmnd 型からプライベートな構造体にアクセスするマクロとか手続きがある
  • その手続きでプライベートな構造体オブジェクト取得
  • その中には struct pci_dev 型なポインタの属性がいる

という流れでそこから

	struct	device	dev;		/* Generic device interface */

というナニを使って dev_* なソレに云々、というカンジかな。drivers/scsi 配下を dev_err で grep してみると pci_dev 経由で云々が多いすな。

とは言え

もう少しきちんと根拠を確認した方が良さげ。