40 lines
750 B
C
40 lines
750 B
C
|
#pragma once
|
||
|
|
||
|
#include "types.h"
|
||
|
|
||
|
class MinixFSSuperblock;
|
||
|
|
||
|
class MinixFSZone
|
||
|
{
|
||
|
public:
|
||
|
|
||
|
/**
|
||
|
* constructor
|
||
|
* @param superblock the superblock
|
||
|
* @param zones the zone array from the file system
|
||
|
*/
|
||
|
MinixFSZone(MinixFSSuperblock *superblock, uint32 *zones);
|
||
|
~MinixFSZone();
|
||
|
uint32 getZone(uint32 index);
|
||
|
void setZone(uint32 index, uint32 zone);
|
||
|
void addZone(uint32 zone);
|
||
|
uint32 getNumZones()
|
||
|
{
|
||
|
return num_zones_;
|
||
|
}
|
||
|
void flush(uint32 inode_num);
|
||
|
void freeZones();
|
||
|
|
||
|
private:
|
||
|
|
||
|
MinixFSSuperblock *superblock_;
|
||
|
uint32 direct_zones_[10];
|
||
|
uint32 *indirect_zones_;
|
||
|
uint32 *double_indirect_linking_zone_;
|
||
|
uint32 **double_indirect_zones_;
|
||
|
|
||
|
uint32 num_zones_;
|
||
|
|
||
|
};
|
||
|
|