--- nono/vm/scsicmd.h 2026/04/29 17:05:29 1.1.1.7 +++ nono/vm/scsicmd.h 2026/04/29 17:06:01 1.1.1.9 @@ -39,7 +39,7 @@ class SCSICmd std::vector buf {}; uint32 recvbytes {}; - // このコマンドの動作時間 [nsec] + // このコマンドの動作時間 [tsec] // シークタイムとかを簡易的に再現するため、次フェーズ遷移時の最初の // REQ アサートを引き延ばすために使う。 // 主にコマンドフェーズで使うことになると思う。 @@ -53,7 +53,7 @@ class SCSICmd // CA 状態は次のコマンド実行でクリアされるが (ネクサスはとりあえず無視)、 // RequestSense の場合は現在保持しているセンス情報をホストに返すので、 // つまり RequestSense 以外のコマンドが全員各自でクリアする必要がある。 - virtual SCSI::XferPhase Command(std::vector& cmdseq); + virtual SCSI::XferPhase ExecCommand(std::vector& cmdseq); // データインフェーズを完了する。 virtual SCSI::XferPhase DoneDataIn() { @@ -96,6 +96,9 @@ class SCSICmd return SCSI::XferPhase::End; } + // ターゲットデバイスを取得。 + SCSITarget *GetTarget() const noexcept { return parent; } + protected: // このコマンドを実行しているターゲットデバイス。 SCSITarget *parent {}; @@ -112,9 +115,9 @@ class SCSICmdNotSupportedCommand : publi using inherited = SCSICmd; public: explicit SCSICmdNotSupportedCommand(SCSITarget *); - ~SCSICmdNotSupportedCommand() override; + ~SCSICmdNotSupportedCommand() override = default; - SCSI::XferPhase Command(std::vector& cmdseq) override; + SCSI::XferPhase ExecCommand(std::vector& cmdseq) override; }; // @@ -125,9 +128,9 @@ class SCSICmdRequestSense : public SCSIC using inherited = SCSICmd; public: explicit SCSICmdRequestSense(SCSITarget *); - ~SCSICmdRequestSense() override; + ~SCSICmdRequestSense() override = default; - SCSI::XferPhase Command(std::vector& cmdseq) override; + SCSI::XferPhase ExecCommand(std::vector& cmdseq) override; }; // @@ -139,9 +142,9 @@ class SCSICmdRead : public SCSICmd using inherited = SCSICmd; public: explicit SCSICmdRead(SCSIDisk *); - ~SCSICmdRead() override; + ~SCSICmdRead() override = default; - SCSI::XferPhase Command(std::vector& cmdseq) override; + SCSI::XferPhase ExecCommand(std::vector& cmdseq) override; private: SCSIDisk *disk {}; @@ -156,9 +159,9 @@ class SCSICmdWrite : public SCSICmd using inherited = SCSICmd; public: explicit SCSICmdWrite(SCSIDisk *); - ~SCSICmdWrite() override; + ~SCSICmdWrite() override = default; - SCSI::XferPhase Command(std::vector& cmdseq) override; + SCSI::XferPhase ExecCommand(std::vector& cmdseq) override; SCSI::XferPhase DoneDataOut() override; private: @@ -176,9 +179,9 @@ class SCSICmdInquiry : public SCSICmd using inherited = SCSICmd; public: explicit SCSICmdInquiry(SCSITarget *); - ~SCSICmdInquiry() override; + ~SCSICmdInquiry() override = default; - SCSI::XferPhase Command(std::vector& cmdseq) override; + SCSI::XferPhase ExecCommand(std::vector& cmdseq) override; }; // @@ -190,9 +193,9 @@ class SCSICmdModeSelect : public SCSICmd using inherited = SCSICmd; public: explicit SCSICmdModeSelect(SCSITarget *); - ~SCSICmdModeSelect() override; + ~SCSICmdModeSelect() override = default; - SCSI::XferPhase Command(std::vector& cmdseq) override; + SCSI::XferPhase ExecCommand(std::vector& cmdseq) override; SCSI::XferPhase DoneDataOut() override; private: @@ -208,9 +211,9 @@ class SCSICmdModeSense : public SCSICmd using inherited = SCSICmd; public: explicit SCSICmdModeSense(SCSITarget *); - ~SCSICmdModeSense() override; + ~SCSICmdModeSense() override = default; - SCSI::XferPhase Command(std::vector& cmdseq) override; + SCSI::XferPhase ExecCommand(std::vector& cmdseq) override; private: // Page Control @@ -252,9 +255,9 @@ class SCSICmdStartStopUnit : public SCSI using inherited = SCSICmd; public: explicit SCSICmdStartStopUnit(SCSIDisk *); - ~SCSICmdStartStopUnit() override; + ~SCSICmdStartStopUnit() override = default; - SCSI::XferPhase Command(std::vector& cmdseq) override; + SCSI::XferPhase ExecCommand(std::vector& cmdseq) override; private: SCSIDisk *disk {}; @@ -268,9 +271,9 @@ class SCSICmdPreventAllowMediumRemoval : using inherited = SCSICmd; public: explicit SCSICmdPreventAllowMediumRemoval(SCSIDisk *); - ~SCSICmdPreventAllowMediumRemoval() override; + ~SCSICmdPreventAllowMediumRemoval() override = default; - SCSI::XferPhase Command(std::vector& cmdseq) override; + SCSI::XferPhase ExecCommand(std::vector& cmdseq) override; private: SCSIDisk *disk {}; @@ -286,9 +289,9 @@ class SCSICmdReadCapacity : public SCSIC using inherited = SCSICmd; public: explicit SCSICmdReadCapacity(SCSIDisk *); - ~SCSICmdReadCapacity() override; + ~SCSICmdReadCapacity() override = default; - SCSI::XferPhase Command(std::vector& cmdseq) override; + SCSI::XferPhase ExecCommand(std::vector& cmdseq) override; private: SCSIDisk *disk {}; @@ -302,9 +305,9 @@ class SCSICmdReadTOC : public SCSICmd using inherited = SCSICmd; public: explicit SCSICmdReadTOC(SCSIDisk *); - ~SCSICmdReadTOC() override; + ~SCSICmdReadTOC() override = default; - SCSI::XferPhase Command(std::vector& cmdseq) override; + SCSI::XferPhase ExecCommand(std::vector& cmdseq) override; private: SCSIDisk *disk {};