35 lines
920 B
C++
35 lines
920 B
C++
#ifndef DATABLOCK_ALLOCATOR_HPP
|
|
#define DATABLOCK_ALLOCATOR_HPP
|
|
|
|
#include "fs_constants.hpp"
|
|
|
|
class Fs;
|
|
|
|
class DataBlock_Allocator {
|
|
public:
|
|
DataBlock_Allocator(Fs *fs, u_int64_t block_segment_start,
|
|
u_int64_t block_segment_end);
|
|
|
|
virtual int new_datablock(u_int64_t *block_num) = 0;
|
|
virtual int free_datablock(u_int64_t block_num) = 0;
|
|
|
|
virtual int format() = 0;
|
|
|
|
protected:
|
|
Fs *fs;
|
|
u_int64_t block_segment_start, block_segment_end;
|
|
};
|
|
|
|
class DataBlock_Allocator_Bitmap : public DataBlock_Allocator {
|
|
public:
|
|
DataBlock_Allocator_Bitmap(Fs *fs, u_int64_t block_segment_start,
|
|
u_int64_t block_segment_end)
|
|
: DataBlock_Allocator(fs, block_segment_start, block_segment_end) {}
|
|
|
|
int new_datablock(u_int64_t *block_num) override;
|
|
int free_datablock(u_int64_t block_num) override;
|
|
|
|
int format() override;
|
|
};
|
|
|
|
#endif |