--- nono/vm/virtio_block.h 2026/04/29 17:05:25 1.1.1.1 +++ nono/vm/virtio_block.h 2026/04/29 17:05:50 1.1.1.4 @@ -12,20 +12,14 @@ #include "virtio_base.h" #include "diskimage.h" -#include "monitor.h" #include "scsidev.h" -class VirtIOBlockReq; - class VirtIOBlockDevice : public VirtIODevice { using inherited = VirtIODevice; - public: - static const uint32 ACCESS_READ = 0x01; - static const uint32 ACCESS_WRITE = 0x02; public: - VirtIOBlockDevice(int slot_, int id_); + VirtIOBlockDevice(uint slot_, uint id_); ~VirtIOBlockDevice() override; bool Init() override; @@ -40,17 +34,17 @@ class VirtIOBlockDevice : public VirtIOD private: DECLARE_MONITOR_CALLBACK(MonitorUpdate); - const char *GetFeatureName(int feature) const override; + const char *GetFeatureName(uint feature) const override; bool LoadDisk(const std::string& pathname_); // ディスクリプタを一つ処理する。 - void ProcessDesc(VirtQueue *) override; - uint32 CmdRead(VirtIOBlockReq&); - uint32 CmdWrite(VirtIOBlockReq&); - void ReadVirtIOBlockReq(VirtIOBlockReq&); + void ProcessDesc(VirtIOReq&) override; + uint32 CmdRead(VirtIOReq&, uint64 sector, uint32 datalen); + uint32 CmdWrite(VirtIOReq&, uint64 sector, uint32 datalen); + uint32 CmdGetID(VirtIOReq&, uint32 datalen); - int id {}; // 識別番号 + uint id {}; // 識別番号 std::string pathname {}; // イメージファイルのフルパス bool write_ignore {}; // 書き込み無視オプション @@ -61,6 +55,4 @@ class VirtIOBlockDevice : public VirtIOD // アクセスインジケータ (GUI) 用のカウンタ。 uint32 access_read {}; uint32 access_write {}; - - Monitor monitor { this }; };