diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/dev/disk_image.cc | 20 | ||||
-rw-r--r-- | src/dev/disk_image.hh | 22 | ||||
-rw-r--r-- | src/dev/ide_disk.cc | 2 |
3 files changed, 23 insertions, 21 deletions
diff --git a/src/dev/disk_image.cc b/src/dev/disk_image.cc index c9defb605..84027d9b4 100644 --- a/src/dev/disk_image.cc +++ b/src/dev/disk_image.cc @@ -86,7 +86,7 @@ RawDiskImage::close() stream.close(); } -off_t +std::streampos RawDiskImage::size() const { if (disk_size == 0) { @@ -99,8 +99,8 @@ RawDiskImage::size() const return disk_size / SectorSize; } -off_t -RawDiskImage::read(uint8_t *data, off_t offset) const +std::streampos +RawDiskImage::read(uint8_t *data, std::streampos offset) const { if (!initialized) panic("RawDiskImage not initialized"); @@ -120,8 +120,8 @@ RawDiskImage::read(uint8_t *data, off_t offset) const return stream.tellg() - pos; } -off_t -RawDiskImage::write(const uint8_t *data, off_t offset) +std::streampos +RawDiskImage::write(const uint8_t *data, std::streampos offset) { if (!initialized) panic("RawDiskImage not initialized"); @@ -357,12 +357,12 @@ CowDiskImage::writeback() } } -off_t +std::streampos CowDiskImage::size() const { return child->size(); } -off_t -CowDiskImage::read(uint8_t *data, off_t offset) const +std::streampos +CowDiskImage::read(uint8_t *data, std::streampos offset) const { if (!initialized) panic("CowDiskImage not initialized"); @@ -381,8 +381,8 @@ CowDiskImage::read(uint8_t *data, off_t offset) const } } -off_t -CowDiskImage::write(const uint8_t *data, off_t offset) +std::streampos +CowDiskImage::write(const uint8_t *data, std::streampos offset) { if (!initialized) panic("RawDiskImage not initialized"); diff --git a/src/dev/disk_image.hh b/src/dev/disk_image.hh index 1b846522f..905879248 100644 --- a/src/dev/disk_image.hh +++ b/src/dev/disk_image.hh @@ -58,10 +58,12 @@ class DiskImage : public SimObject DiskImage(const Params *p) : SimObject(p), initialized(false) {} virtual ~DiskImage() {} - virtual off_t size() const = 0; + virtual std::streampos size() const = 0; - virtual off_t read(uint8_t *data, off_t offset) const = 0; - virtual off_t write(const uint8_t *data, off_t offset) = 0; + virtual std::streampos read(uint8_t *data, + std::streampos offset) const = 0; + virtual std::streampos write(const uint8_t *data, + std::streampos offset) = 0; }; /** @@ -73,7 +75,7 @@ class RawDiskImage : public DiskImage mutable std::fstream stream; std::string file; bool readonly; - mutable off_t disk_size; + mutable std::streampos disk_size; public: typedef RawDiskImageParams Params; @@ -83,10 +85,10 @@ class RawDiskImage : public DiskImage void close(); void open(const std::string &filename, bool rd_only = false); - virtual off_t size() const; + virtual std::streampos size() const; - virtual off_t read(uint8_t *data, off_t offset) const; - virtual off_t write(const uint8_t *data, off_t offset); + virtual std::streampos read(uint8_t *data, std::streampos offset) const; + virtual std::streampos write(const uint8_t *data, std::streampos offset); }; /** @@ -129,10 +131,10 @@ class CowDiskImage : public DiskImage void serialize(std::ostream &os); void unserialize(Checkpoint *cp, const std::string §ion); - virtual off_t size() const; + virtual std::streampos size() const; - virtual off_t read(uint8_t *data, off_t offset) const; - virtual off_t write(const uint8_t *data, off_t offset); + virtual std::streampos read(uint8_t *data, std::streampos offset) const; + virtual std::streampos write(const uint8_t *data, std::streampos offset); }; #endif // __DISK_IMAGE_HH__ diff --git a/src/dev/ide_disk.cc b/src/dev/ide_disk.cc index 6c5ccdd86..bc7210d42 100644 --- a/src/dev/ide_disk.cc +++ b/src/dev/ide_disk.cc @@ -590,7 +590,7 @@ IdeDisk::startCommand() switch (cmdReg.command) { // Supported non-data commands case WDSF_READ_NATIVE_MAX: - size = image->size() - 1; + size = (uint32_t)image->size() - 1; cmdReg.sec_num = (size & 0xff); cmdReg.cyl_low = ((size & 0xff00) >> 8); cmdReg.cyl_high = ((size & 0xff0000) >> 16); |