-
Notifications
You must be signed in to change notification settings - Fork 0
/
filesys.h
89 lines (68 loc) · 1.94 KB
/
filesys.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
#ifndef filesys
#define filesys
#include <bits/stdc++.h>
#include <unistd.h>
#define block_size 512
#define num_of_blocks 500
#define num_of_fd 15
#define ll long long int
#define num_of_direct_pointer 5
#define num_of_inodes 125
#define number_of_blocks_for_data 250
#define Buffer_Size 50
#define num_of_inode_pointer 5
//#define num_of_indirect_pointers 2
using namespace std;
struct file_inode_position
{
ll inodeid;
ll fd;
string mode;
ll position;
};
struct inode_directory
{
string parent;
string directory_name;
vector<string> sub_directory_or_file_name;
string path;
};
struct inode
{
string filename;
string filepath;
ll filesize;
ll block_ptr[num_of_direct_pointer];
ll inodepointer[num_of_inode_pointer];
// struct inode* indirect_ptr[num_of_indirect_pointers];
bool indirect_data_ptr_present, is_directory;
inode(){
is_directory = false;
indirect_data_ptr_present = true;
for(int i=0; i<num_of_inode_pointer; i++){
inodepointer[i]=-1;
}
for(int i=0; i<num_of_direct_pointer; i++){
block_ptr[i]=-1;
}
}
};
extern bool inode_bmap[num_of_inodes];
extern bool data_bmap[number_of_blocks_for_data];
extern struct inode array_of_inodes[num_of_inodes];
struct superblock
{
ll num_of_blocks_for_sb;
ll num_of_blocks_for_inode_bmap;
ll number_of_blocks_for_data_bmap;
vector <file_inode_position> file_inode_position_map;
vector<inode_directory> directory;
bool filedescriptor_bmap[num_of_fd];
superblock() {
num_of_blocks_for_sb = ceil(((float)sizeof(superblock)) / block_size);
num_of_blocks_for_inode_bmap = ceil(((float)sizeof(inode_bmap)) / block_size);
number_of_blocks_for_data_bmap = num_of_blocks - (num_of_blocks_for_sb + num_of_blocks_for_inode_bmap + number_of_blocks_for_data + num_of_inodes);
}
};
extern struct superblock sblock;
#endif