-
Notifications
You must be signed in to change notification settings - Fork 1
/
fs.c
49 lines (42 loc) · 938 Bytes
/
fs.c
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
#include "fs.h"
fs_node_t *fs_root = 0;
u32int read_fs(fs_node_t *node, u32int offset, u32int size, u8int *buffer)
{
if (node->read != 0) {
return node->read(node, offset, size, buffer);
}
return 0;
}
u32int write_fs(fs_node_t *node, u32int offset, u32int size, u8int *buffer)
{
if (node->write != 0) {
return node->write(node, offset, size, buffer);
}
return 0;
}
void open_fs(fs_node_t *node, u8int read, u8int write)
{
if (node->open != 0) {
return node->open(node);
}
}
void close_fs(fs_node_t *node)
{
if (node->close != 0) {
return node->close(node);
}
}
struct dirent *readdir_fs(fs_node_t *node, u32int index)
{
if ((node->flags & 0x07) == FS_DIRECTORY && node->readdir != 0) {
return node->readdir(node, index);
}
return 0;
}
fs_node_t *finddir_fs(fs_node_t *node, char *name)
{
if ((node->flags & 0x07) == FS_DIRECTORY && node->finddir != 0) {
return node->finddir(node, name);
}
return 0;
}