Second Extended Filesystem (ext2) and other improvements (#33)
[lunaix-os.git] / lunaix-os / kernel / fs / defaults.c
1 #include <lunaix/fs/api.h>
2
3 int
4 default_file_close(struct v_file* file)
5 {
6     return 0;
7 }
8
9 int
10 default_file_seek(struct v_file* file, size_t offset)
11 {
12     file->f_pos = offset;
13     return 0;
14 }
15
16 int
17 default_inode_open(struct v_inode* this, struct v_file* file)
18 {
19     return 0;
20 }
21
22 int
23 default_file_read(struct v_inode* inode, void* buffer, size_t len, size_t fpos)
24 {
25     return ENOTSUP;
26 }
27
28 int
29 default_file_write(struct v_inode* inode, void* buffer, size_t len, size_t fpos)
30 {
31     return ENOTSUP;
32 }
33
34 int
35 default_file_read_page(struct v_inode* inode, void* buffer, size_t fpos)
36 {
37     return ENOTSUP;
38 }
39
40 int
41 default_file_write_page(struct v_inode* inode, void* buffer, size_t fpos)
42 {
43     return ENOTSUP;
44 }
45
46 int
47 default_file_readdir(struct v_file* file, struct dir_context* dctx)
48 {
49     unsigned int i = 0;
50     struct v_dnode *pos, *n;
51
52     if (fsapi_handle_pseudo_dirent(file, dctx)) {
53         return 1;
54     }
55
56     llist_for_each(pos, n, &file->dnode->children, siblings)
57     {
58         if (i < file->f_pos) {
59             i++;
60             continue;
61         }
62         dctx->read_complete_callback(dctx, pos->name.value, pos->name.len, 0);
63         return 1;
64     }
65
66     return 0;
67 }
68
69 int
70 default_inode_dirlookup(struct v_inode* this, struct v_dnode* dnode)
71 {
72     return ENOENT;
73 }
74
75 int
76 default_inode_rename(struct v_inode* from_inode,
77                      struct v_dnode* from_dnode,
78                      struct v_dnode* to_dnode)
79 {
80     return 0;
81 }
82
83 int
84 default_inode_sync(struct v_inode* this)
85 {
86     return 0;
87 }
88
89 int
90 default_inode_rmdir(struct v_inode* this, struct v_dnode* dir)
91 {
92     return ENOTSUP;
93 }
94
95 int
96 default_inode_mkdir(struct v_inode* this, struct v_dnode* dir)
97 {
98     return ENOTSUP;
99 }
100
101 struct v_file_ops default_file_ops = { .close = default_file_close,
102                                        .read = default_file_read,
103                                        .seek = default_file_seek,
104                                        .readdir = default_file_readdir };
105
106 struct v_inode_ops default_inode_ops = { .dir_lookup = default_inode_dirlookup,
107                                          .sync = default_inode_sync,
108                                          .open = default_inode_open,
109                                          .rename = default_inode_rename,
110                                          .rmdir = default_inode_rmdir };