iloveos/include/rawdisk.hpp
2023-11-15 03:10:12 -08:00

40 lines
890 B
C++

#ifndef RAWDISK_HPP
#define RAWDISK_HPP
#include "fs_constants.hpp"
class RawDisk {
public:
u_int64_t diskSize;
virtual int read_block(u_int64_t block_number, char *buffer) = 0;
virtual int write_block(u_int64_t block_number, char *buffer) = 0;
void print_block(u_int64_t block_number);
};
class RealRawDisk : public RawDisk {
public:
int fd;
const char *dir;
u_int64_t numSectors;
RealRawDisk(const char *directory);
~RealRawDisk();
int read_block(u_int64_t block_number, char *buffer) override;
int write_block(u_int64_t block_number, char *buffer) override;
};
class FakeRawDisk : public RawDisk {
public:
char *disk;
FakeRawDisk(u_int64_t num_blocks);
~FakeRawDisk();
int read_block(u_int64_t block_number, char *buffer) override;
int write_block(u_int64_t block_number, char *buffer) override;
};
#endif