fuse/include/fusestructs.h

72 lines
1.3 KiB
C

#ifndef FUSESTRUCTS_H
#define FUSESTRUCTS_H
#define DEFAULTINODEMAX 128
#define DEFAULTBLOCKSIZE 512 // Size in bytes
#define DEFAULTBLOCKMAX 16384
#define FSSIZE 10000000
extern unsigned char* tempfs;
typedef struct fuseArgStruct
{
int create;
int list;
int add;
int remove;
int extract;
char* toAdd;
char* toRemove;
char* toExtract;
char* fsname;
int fd;
int newfs;
int filefsname;
} fuseArgStruct;
typedef struct SuperBlock
{
blksize_t blockSize;
blkcnt_t blockCount;
unsigned long inodeCount;
} SuperBlock;
typedef struct FreeBlockList
{
int freeList[DEFAULTBLOCKMAX/32];
} FreeBlockList;
// 128 Blocks
typedef struct DataBlock
{
char byte[DEFAULTBLOCKSIZE];
} DataBlock;
// Inode * 128 + number
// Directblock == Files/Directories inside an inode?
typedef struct DirectBlock
{
unsigned int isValid : 1;
unsigned int isDirectory : 1;
char name[256];
ino_t inode;
off_t size;
} DirectBlock;
// Inode 0 is root
// Inode * 128
typedef struct Inode
{
unsigned int isValid : 1;
DirectBlock blocks[DEFAULTINODEMAX];
} Inode;
typedef struct FileSystem
{
SuperBlock superBlock;
FreeBlockList fbl;
Inode inodes[DEFAULTINODEMAX];
DataBlock dataBlocks[DEFAULTBLOCKMAX];
} FileSystem;
#endif