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