40 lines
890 B
C++
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 |