--- nono/vm/zram.h 2026/04/29 17:04:28 1.1.1.1 +++ nono/vm/zram.h 2026/04/29 17:04:56 1.1.1.5 @@ -1,6 +1,7 @@ // // nono -// Copyright (C) 2018 isaki@NetBSD.org +// Copyright (C) 2020 nono project +// Licensed under nono-license.txt // #pragma once @@ -8,28 +9,30 @@ #include "device.h" #include -class ZRAMDevice - : public IODevice +class ZRAMDevice : public IODevice { - typedef IODevice inherited; + using inherited = IODevice; public: ZRAMDevice(); - virtual ~ZRAMDevice(); + virtual ~ZRAMDevice() override; - virtual uint64 Read8(uint32 addr); - virtual uint64 Read16(uint32 addr); - virtual uint64 Read32(uint32 addr); - virtual uint64 Write8(uint32 addr, uint32 data); - virtual uint64 Write16(uint32 addr, uint32 data); - virtual uint64 Write32(uint32 addr, uint32 data); - virtual uint64 Peek8(uint32 addr); + uint64 Read8(uint32 addr) override; + uint64 Read16(uint32 addr) override; + uint64 Read32(uint32 addr) override; + uint64 Write8(uint32 addr, uint32 data) override; + uint64 Write16(uint32 addr, uint32 data) override; + uint64 Write32(uint32 addr, uint32 data) override; + uint64 Peek8(uint32 addr) override; private: - uint8 *ram = NULL; + // アドレスデコーダ + uint64 Decoder(uint32 addr) const; + + std::unique_ptr ram {}; // アクセス競合を防ぐロック。 // Lance は裏スレッドからアクセスにくるので。 std::mutex mtx {}; }; -extern ZRAMDevice *gZRAM; +extern std::unique_ptr gZRAM;