-
Notifications
You must be signed in to change notification settings - Fork 0
/
disk.h
67 lines (44 loc) · 1.45 KB
/
disk.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
#ifndef _FAKEDISK_H_
#define _FAKEDISK_H_
#define I_NODE_SIZE 64
#define MAX_FILES 20
struct i_node{
int size; //64
int flags;
int owner;
int file_size;
int *pointer; // deve ser alocado na inicializacao
};
struct i_node_block{
struct i_node *node;
int nNodes;
};
struct indirect_block{
int *ptr;
};
struct super_block{
int size; //numero de blocos no sistema de arquivo
int freeList; //primeiro bloco na lista livre
int isize; //numero de blocos indices
};
struct super_block *sBlock;
/* Funcoes para mudar e obter o tamanho e numero de blocos simulados */
void set_block_size(int block_size); //default 512
int get_block_size();
void inicializaInode(int block_num);
void set_block_num(int block_num); //default 256
int get_block_num();
int retornaQuantBlocos();
void liberaBloco(int inumber);
struct i_node_block *inicializa_i_node_block();
// Como definido no livro
void fd_read_raw(int block_num, char * buffer);
void fd_write_raw(int block_num, char * buffer);
void fd_read_super_block(int block_num, struct super_block * buffer);
void fd_write_super_block(int block_num, struct super_block * buffer);
void fd_read_i_node_block(int block_num, struct i_node_block * buffer);
void fd_write_i_node_block(int block_num, struct i_node_block * buffer);
void fd_read_indirect_block(int block_num, struct indirect_block * buffer);
void fd_write_indirect_block(int block_num, struct indirect_block * buffer);
int fd_stop();
#endif /* _FAKEDISK_H_ */