1 /*
2 * Copyright (C) 2015-2017 Alibaba Group Holding Limited
3 */
4
5 #include <string.h>
6
7 #include "aos/vfs.h"
8 #include "aos/errno.h"
9
10 #include "vfs_types.h"
11 #include "vfs_api.h"
12
_vfs_to_aos_res(int res)13 static int _vfs_to_aos_res(int res)
14 {
15 switch (res) {
16 case VFS_OK:
17 return 0;
18 case VFS_ERR_NOMEM:
19 return -ENOMEM;
20 case VFS_ERR_INVAL:
21 return -EINVAL;
22 case VFS_ERR_NOENT:
23 return -ENOENT;
24 case VFS_ERR_NAMETOOLONG:
25 return -ENAMETOOLONG;
26 case VFS_ERR_NOSYS:
27 return -ENOSYS;
28 case VFS_ERR_ENFILE:
29 return -ENFILE;
30 case VFS_ERR_NODEV:
31 return -ENODEV;
32 case VFS_ERR_LOCK:
33 return -EIO;
34 case VFS_ERR_BUSY:
35 return -EBUSY;
36 default:
37 return res;
38 }
39 }
40
aos_vfs_init(void)41 int aos_vfs_init(void)
42 {
43 return _vfs_to_aos_res(vfs_init());
44 }
45
aos_open(const char * path,int flags)46 int aos_open(const char *path, int flags)
47 {
48 return _vfs_to_aos_res(vfs_open(path, flags));
49 }
50
aos_close(int fd)51 int aos_close(int fd)
52 {
53 return _vfs_to_aos_res(vfs_close(fd));
54 }
55
aos_read(int fd,void * buf,size_t nbytes)56 ssize_t aos_read(int fd, void *buf, size_t nbytes)
57 {
58 return _vfs_to_aos_res(vfs_read(fd, buf, nbytes));
59 }
60
aos_write(int fd,const void * buf,size_t nbytes)61 ssize_t aos_write(int fd, const void *buf, size_t nbytes)
62 {
63 return _vfs_to_aos_res(vfs_write(fd, buf, nbytes));
64 }
65
aos_ioctl(int fd,int cmd,unsigned long arg)66 int aos_ioctl(int fd, int cmd, unsigned long arg)
67 {
68 return _vfs_to_aos_res(vfs_ioctl(fd, cmd, arg));
69 }
70
aos_do_pollfd(int fd,int flag,poll_notify_t notify,void * fds,void * arg)71 int aos_do_pollfd(int fd, int flag, poll_notify_t notify, void *fds, void *arg)
72 {
73 return _vfs_to_aos_res(vfs_do_pollfd(fd, flag, (vfs_poll_notify_t)notify, fds, arg));
74 }
75
aos_lseek(int fd,off_t offset,int whence)76 off_t aos_lseek(int fd, off_t offset, int whence)
77 {
78 return _vfs_to_aos_res(vfs_lseek(fd, offset, whence));
79 }
80
aos_sync(int fd)81 int aos_sync(int fd)
82 {
83 return _vfs_to_aos_res(vfs_sync(fd));
84 }
85
aos_allsync(void)86 void aos_allsync(void)
87 {
88 vfs_allsync();
89 }
90
aos_stat(const char * path,struct aos_stat * st)91 int aos_stat(const char *path, struct aos_stat *st)
92 {
93 return _vfs_to_aos_res(vfs_stat(path, (vfs_stat_t *)st));
94 }
95
aos_fstat(int fd,struct aos_stat * st)96 int aos_fstat(int fd, struct aos_stat *st)
97 {
98 return _vfs_to_aos_res(vfs_fstat(fd, (vfs_stat_t *)st));
99 }
100
aos_link(const char * oldpath,const char * newpath)101 int aos_link(const char *oldpath, const char *newpath)
102 {
103 return _vfs_to_aos_res(vfs_link(oldpath, newpath));
104 }
105
aos_unlink(const char * path)106 int aos_unlink(const char *path)
107 {
108 return _vfs_to_aos_res(vfs_unlink(path));
109 }
110
aos_remove(const char * path)111 int aos_remove(const char *path)
112 {
113 return _vfs_to_aos_res(vfs_remove(path));
114 }
115
aos_rename(const char * oldpath,const char * newpath)116 int aos_rename(const char *oldpath, const char *newpath)
117 {
118 return _vfs_to_aos_res(vfs_rename(oldpath, newpath));
119 }
120
aos_opendir(const char * path)121 aos_dir_t *aos_opendir(const char *path)
122 {
123 return (aos_dir_t *)vfs_opendir(path);
124 }
125
aos_closedir(aos_dir_t * dir)126 int aos_closedir(aos_dir_t *dir)
127 {
128 return _vfs_to_aos_res(vfs_closedir((vfs_dir_t *)dir));
129 }
130
aos_readdir(aos_dir_t * dir)131 aos_dirent_t *aos_readdir(aos_dir_t *dir)
132 {
133 return (aos_dirent_t *)vfs_readdir((vfs_dir_t *)dir);
134 }
135
aos_mkdir(const char * path)136 int aos_mkdir(const char *path)
137 {
138 return _vfs_to_aos_res(vfs_mkdir(path));
139 }
140
aos_rmdir(const char * path)141 int aos_rmdir(const char *path)
142 {
143 return _vfs_to_aos_res(vfs_rmdir(path));
144 }
145
aos_rewinddir(aos_dir_t * dir)146 void aos_rewinddir(aos_dir_t *dir)
147 {
148 vfs_rewinddir((vfs_dir_t *)dir);
149 }
150
aos_telldir(aos_dir_t * dir)151 long aos_telldir(aos_dir_t *dir)
152 {
153 return _vfs_to_aos_res(vfs_telldir((vfs_dir_t *)dir));
154 }
155
aos_seekdir(aos_dir_t * dir,long loc)156 void aos_seekdir(aos_dir_t *dir, long loc)
157 {
158 vfs_seekdir((vfs_dir_t *)dir, loc);
159 }
160
aos_statfs(const char * path,struct aos_statfs * buf)161 int aos_statfs(const char *path, struct aos_statfs *buf)
162 {
163 return _vfs_to_aos_res(vfs_statfs(path, (vfs_statfs_t *)buf));
164 }
165
aos_access(const char * path,int amode)166 int aos_access(const char *path, int amode)
167 {
168 return _vfs_to_aos_res(vfs_access(path, amode));
169 }
170
aos_chdir(const char * path)171 int aos_chdir(const char *path)
172 {
173 return _vfs_to_aos_res(vfs_chdir(path));
174 }
175
aos_getcwd(char * buf,size_t size)176 char *aos_getcwd(char *buf, size_t size)
177 {
178 return vfs_getcwd(buf, size);
179 }
180
aos_vfs_fd_offset_get(void)181 int aos_vfs_fd_offset_get(void)
182 {
183 return vfs_fd_offset_get();
184 }
185
aos_fcntl(int fd,int cmd,int val)186 int aos_fcntl(int fd, int cmd, int val)
187 {
188 return vfs_fcntl(fd, cmd, val);
189 }
190
aos_pathconf(const char * path,int name)191 long aos_pathconf(const char *path, int name)
192 {
193 return _vfs_to_aos_res(vfs_pathconf(path, name));
194 }
195
aos_fpathconf(int fh,int name)196 long aos_fpathconf(int fh, int name)
197 {
198 return _vfs_to_aos_res(vfs_fpathconf(fh, name));
199 }
200
aos_utime(const char * path,const struct aos_utimbuf * times)201 int aos_utime(const char *path, const struct aos_utimbuf *times)
202 {
203 return _vfs_to_aos_res(vfs_utime(path, (vfs_utimbuf_t *)times));
204 }
205
aos_register_driver(const char * path,file_ops_t * ops,void * arg)206 int aos_register_driver(const char *path, file_ops_t *ops, void *arg)
207 {
208 return _vfs_to_aos_res(vfs_register_driver(path, (vfs_file_ops_t *)ops, arg));
209 }
210
aos_unregister_driver(const char * path)211 int aos_unregister_driver(const char *path)
212 {
213 return _vfs_to_aos_res(vfs_unregister_driver(path));
214 }
215
aos_register_fs(const char * path,fs_ops_t * ops,void * arg)216 int aos_register_fs(const char *path, fs_ops_t* ops, void *arg)
217 {
218 return _vfs_to_aos_res(vfs_register_fs(path, (vfs_filesystem_ops_t *)ops, arg));
219 }
220
aos_unregister_fs(const char * path)221 int aos_unregister_fs(const char *path)
222 {
223 return _vfs_to_aos_res(vfs_unregister_fs(path));
224 }
225