7 #ifndef ZRTOS_VFS_PLUGIN_H 8 #define ZRTOS_VFS_PLUGIN_H 59 #ifdef ZRTOS_VFS_PLUGIN__CFG_USE_SWITCH 67 ,ZRTOS_VFS_PLUGIN_OPERATION__READ_SYNC
68 ,ZRTOS_VFS_PLUGIN_OPERATION__WRITE_SYNC
73 }zrtos_vfs_plugin_operation_t;
75 # define ZRTOS_VFS_PLUGIN_OPERATION__OPEN open 76 # define ZRTOS_VFS_PLUGIN_OPERATION__CLOSE close 77 # define ZRTOS_VFS_PLUGIN_OPERATION__MOUNT mount 78 # define ZRTOS_VFS_PLUGIN_OPERATION__UMOUNT umount 79 # define ZRTOS_VFS_PLUGIN_OPERATION__READ read 80 # define ZRTOS_VFS_PLUGIN_OPERATION__WRITE write 81 # define ZRTOS_VFS_PLUGIN_OPERATION__CAN_READ can_read 82 # define ZRTOS_VFS_PLUGIN_OPERATION__CAN_WRITE can_write 83 # define ZRTOS_VFS_PLUGIN_OPERATION__SEEK seek 84 # define ZRTOS_VFS_PLUGIN_OPERATION__IOCTL ioctl 87 #define ZRTOS_VFS_PLUGIN__ARG(type) va_arg(args,type) 88 #define ZRTOS_VFS_PLUGIN__RETURN(val)\ 94 #ifdef ZRTOS_VFS_PLUGIN__CFG_USE_SWITCH 95 #define ZRTOS_VFS_PLUGIN__INIT(name,...)\ 96 zrtos_error_t zrtos_vfs_plugin_module_##name##__operation(\ 97 zrtos_vfs_plugin_operation_t operation\ 102 va_start(args,operation);\ 106 ZRTOS_VFS_PLUGIN__RETURN(ZRTOS_ERROR__NOSYS);\ 115 zrtos_vfs_plugin_t zrtos_vfs_plugin_module_##name = {\ 116 .operation = zrtos_vfs_plugin_module_##name##__operation\ 130 #define ZRTOS_VFS_PLUGIN__INIT(name,...)\ 131 zrtos_vfs_plugin_t zrtos_vfs_plugin_module_##name = {\ 136 #define ZRTOS_VFS_PLUGIN(name) (&zrtos_vfs_plugin_module_##name) 138 #ifndef ZRTOS_VFS_PLUGIN__CFG_USE_SWITCH 139 #define ZRTOS_VFS_PLUGIN__INVOKE(thiz,operation,...) (thiz->operation(__VA_ARGS__)) 141 #define ZRTOS_VFS_PLUGIN__INVOKE(thiz,...) (thiz->operation(__VA_ARGS__)) 145 #ifndef ZRTOS_VFS_PLUGIN__CFG_USE_SWITCH 147 # define ZRTOS_VFS_PLUGIN__0_ON_OPEN(callback) .open=callback 148 # define ZRTOS_VFS_PLUGIN__0_ON_OPEN_DEFAULT()\ 149 .open = zrtos_vfs_plugin__default_open 151 # define ZRTOS_VFS_PLUGIN__0_ON_OPEN(callback) \ 152 case ZRTOS_VFS_PLUGIN_OPERATION__OPEN:{ \ 153 struct _zrtos_vfs_file_t *file = ZRTOS_VFS_PLUGIN__ARG( \ 154 struct _zrtos_vfs_file_t* \ 156 ZRTOS_VFS_PLUGIN__RETURN(callback(file)); \ 159 # define ZRTOS_VFS_PLUGIN__0_ON_OPEN_DEFAULT() 162 #ifndef ZRTOS_VFS_PLUGIN__CFG_USE_SWITCH 164 # define ZRTOS_VFS_PLUGIN__1_ON_CLOSE(callback) ,.close=callback 165 # define ZRTOS_VFS_PLUGIN__1_ON_CLOSE_DEFAULT()\ 166 ,.close = zrtos_vfs_plugin__default_close 168 # define ZRTOS_VFS_PLUGIN__1_ON_CLOSE(callback) \ 169 case ZRTOS_VFS_PLUGIN_OPERATION__CLOSE:{ \ 170 struct _zrtos_vfs_file_t *file = ZRTOS_VFS_PLUGIN__ARG( \ 171 struct _zrtos_vfs_file_t* \ 173 ZRTOS_VFS_PLUGIN__RETURN(callback(file)); \ 176 # define ZRTOS_VFS_PLUGIN__1_ON_CLOSE_DEFAULT() 179 #ifndef ZRTOS_VFS_PLUGIN__CFG_USE_SWITCH 181 # define ZRTOS_VFS_PLUGIN__2_ON_MOUNT(callback) ,.mount=callback 182 # define ZRTOS_VFS_PLUGIN__2_ON_MOUNT_DEFAULT()\ 183 ,.mount = zrtos_vfs_plugin__default_mount 185 # define ZRTOS_VFS_PLUGIN__2_ON_MOUNT(callback) \ 186 case ZRTOS_VFS_PLUGIN_OPERATION__MOUNT:{ \ 187 struct _zrtos_vfs_file_t *file = ZRTOS_VFS_PLUGIN__ARG( \ 188 struct _zrtos_vfs_file_t* \ 190 ZRTOS_VFS_PLUGIN__RETURN(callback(file)); \ 193 # define ZRTOS_VFS_PLUGIN__2_ON_MOUNT_DEFAULT() 196 #ifndef ZRTOS_VFS_PLUGIN__CFG_USE_SWITCH 198 # define ZRTOS_VFS_PLUGIN__3_ON_UMOUNT(callback) ,.umount=callback 199 # define ZRTOS_VFS_PLUGIN__3_ON_UMOUNT_DEFAULT()\ 200 ,.umount = zrtos_vfs_plugin__default_umount 202 # define ZRTOS_VFS_PLUGIN__ON_UMOUNT(ret,dentry,callback) \ 203 case ZRTOS_VFS_PLUGIN_OPERATION__UMOUNT:{ \ 204 struct _zrtos_vfs_file_t *file = ZRTOS_VFS_PLUGIN__ARG( \ 205 struct _zrtos_vfs_file_t* \ 207 ZRTOS_VFS_PLUGIN__RETURN(callback(file)); \ 210 # define ZRTOS_VFS_PLUGIN__3_ON_UMOUNT_DEFAULT() 213 #ifndef ZRTOS_VFS_PLUGIN__CFG_USE_SWITCH 215 # define ZRTOS_VFS_PLUGIN__4_ON_READ(callback) ,.read=callback 216 # define ZRTOS_VFS_PLUGIN__4_ON_READ_DEFAULT()\ 217 ,.read = zrtos_vfs_plugin__default_read 219 # define ZRTOS_VFS_PLUGIN__4_ON_READ(callback)\ 220 case ZRTOS_VFS_PLUGIN_OPERATION__READ:{ \ 221 struct _zrtos_vfs_file_t *file = ZRTOS_VFS_PLUGIN__ARG( \ 222 struct _zrtos_vfs_file_t* \ 224 char *path = ZRTOS_VFS_PLUGIN__ARG(char*); \ 225 void *buf = ZRTOS_VFS_PLUGIN__ARG(void*); \ 226 size_t len = ZRTOS_VFS_PLUGIN__ARG(size_t); \ 227 zrtos_vfs_offset_t offset = ZRTOS_VFS_PLUGIN__ARG(zrtos_vfs_offset_t); \ 228 size_t *out = ZRTOS_VFS_PLUGIN__ARG(size_t*); \ 229 ZRTOS_VFS_PLUGIN__RETURN(callback(file,path,buf,len,offset,out)); \ 232 # define ZRTOS_VFS_PLUGIN__4_ON_READ_DEFAULT() 235 #ifndef ZRTOS_VFS_PLUGIN__CFG_USE_SWITCH 237 # define ZRTOS_VFS_PLUGIN__5_ON_WRITE(callback) ,.write=callback 238 # define ZRTOS_VFS_PLUGIN__5_ON_WRITE_DEFAULT()\ 239 ,.write = zrtos_vfs_plugin__default_write 241 # define ZRTOS_VFS_PLUGIN__5_ON_WRITE(callback)\ 242 case ZRTOS_VFS_PLUGIN_OPERATION__WRITE:{ \ 243 struct _zrtos_vfs_file_t *file = ZRTOS_VFS_PLUGIN__ARG( \ 244 struct _zrtos_vfs_file_t* \ 246 char *path = ZRTOS_VFS_PLUGIN__ARG(char*); \ 247 void *buf = ZRTOS_VFS_PLUGIN__ARG(void*); \ 248 size_t len = ZRTOS_VFS_PLUGIN__ARG(size_t); \ 249 zrtos_vfs_offset_t offset = ZRTOS_VFS_PLUGIN__ARG(zrtos_vfs_offset_t); \ 250 size_t *out = ZRTOS_VFS_PLUGIN__ARG(size_t*); \ 251 ZRTOS_VFS_PLUGIN__RETURN(callback(file,path,buf,len,offset,out)); \ 254 # define ZRTOS_VFS_PLUGIN__5_ON_WRITE_DEFAULT() 257 #ifndef ZRTOS_VFS_PLUGIN__CFG_USE_SWITCH 259 # define ZRTOS_VFS_PLUGIN__6_ON_CAN_READ(callback) ,.can_read=callback 260 # define ZRTOS_VFS_PLUGIN__6_ON_CAN_READ_DEFAULT()\ 261 ,.can_read = zrtos_vfs_plugin__default_can_read 263 # define ZRTOS_VFS_PLUGIN__6_ON_CAN_READ(callback) \ 264 case ZRTOS_VFS_PLUGIN_OPERATION__CAN_READ:{ \ 265 struct _zrtos_vfs_file_t *file = ZRTOS_VFS_PLUGIN__ARG( \ 266 struct _zrtos_vfs_file_t* \ 268 ZRTOS_VFS_PLUGIN__RETURN(callback(file)); \ 271 # define ZRTOS_VFS_PLUGIN__6_ON_CAN_READ_DEFAULT() 274 #ifndef ZRTOS_VFS_PLUGIN__CFG_USE_SWITCH 276 # define ZRTOS_VFS_PLUGIN__7_ON_CAN_WRITE(callback) ,.can_write=callback 277 # define ZRTOS_VFS_PLUGIN__7_ON_CAN_WRITE_DEFAULT()\ 278 ,.can_write = zrtos_vfs_plugin__default_can_write 280 # define ZRTOS_VFS_PLUGIN__7_ON_CAN_WRITE(callback) \ 281 case ZRTOS_VFS_PLUGIN_OPERATION__CAN_WRITE:{ \ 282 struct _zrtos_vfs_file_t *file = ZRTOS_VFS_PLUGIN__ARG( \ 283 struct _zrtos_vfs_file_t* \ 285 ZRTOS_VFS_PLUGIN__RETURN(callback(file)); \ 288 # define ZRTOS_VFS_PLUGIN__7_ON_CAN_WRITE_DEFAULT() 291 #ifndef ZRTOS_VFS_PLUGIN__CFG_USE_SWITCH 293 # define ZRTOS_VFS_PLUGIN__8_ON_SEEK(callback) ,.seek=callback 294 # define ZRTOS_VFS_PLUGIN__8_ON_SEEK_DEFAULT()\ 295 ,.seek = zrtos_vfs_plugin__default_seek 297 # define ZRTOS_VFS_PLUGIN__8_ON_SEEK(callback) \ 298 case ZRTOS_VFS_PLUGIN_OPERATION__SEEK:{ \ 299 struct _zrtos_vfs_file_t *file = ZRTOS_VFS_PLUGIN__ARG( \ 300 struct _zrtos_vfs_file_t* \ 302 ZRTOS_VFS_PLUGIN__RETURN(callback(file)); \ 305 zrtos_vfs_offset_t *ret = ZRTOS_VFS_PLUGIN__ARG(zrtos_vfs_offset_t*); \ 306 struct _zrtos_vfs_file_t *file = ZRTOS_VFS_PLUGIN__ARG(struct _zrtos_vfs_file_t*); \ 307 char *path = ZRTOS_VFS_PLUGIN__ARG(char*); \ 308 zrtos_vfs_offset_t offset = ZRTOS_VFS_PLUGIN__ARG(zrtos_vfs_offset_t); \ 309 size_t whence = ZRTOS_VFS_PLUGIN__ARG(size_t); \ 310 ZRTOS_VFS_PLUGIN__RETURN(callback()); \ 313 # define ZRTOS_VFS_PLUGIN__8_ON_SEEK_DEFAULT() 316 #ifndef ZRTOS_VFS_PLUGIN__CFG_USE_SWITCH 318 # define ZRTOS_VFS_PLUGIN__9_ON_IOCTL(callback) ,.ioctl=callback 319 # define ZRTOS_VFS_PLUGIN__9_ON_IOCTL_DEFAULT()\ 320 ,.ioctl = zrtos_vfs_plugin__default_ioctl 322 # define ZRTOS_VFS_PLUGIN__9_ON_IOCTL(callback) \ 323 case ZRTOS_VFS_PLUGIN_OPERATION__IOCTL:{ \ 324 struct _zrtos_vfs_file_t *file = ZRTOS_VFS_PLUGIN__ARG( \ 325 struct _zrtos_vfs_file_t* \ 327 char *path = ZRTOS_VFS_PLUGIN__ARG(char*); \ 328 int request = ZRTOS_VFS_PLUGIN__ARG(int); \ 329 va_list args = ZRTOS_VFS_PLUGIN__ARG(va_list); \ 330 ZRTOS_VFS_PLUGIN__RETURN(callback(file,path,request,args)); \ 333 # define ZRTOS_VFS_PLUGIN__9_ON_IOCTL_DEFAULT() 336 #ifdef ZRTOS_VFS_PLUGIN__CFG_USE_SWITCH 338 zrtos_vfs_plugin_operation_t operation
zrtos_error_t zrtos_vfs_plugin__default_ioctl(struct _zrtos_vfs_file_t *thiz, char *path, int request, va_list args)
zrtos_error_t zrtos_vfs_plugin__default_mount(struct _zrtos_vfs_dentry_t *thiz)
zrtos_error_t zrtos_vfs_plugin__default_can_read(struct _zrtos_vfs_file_t *thiz)
size_t zrtos_vfs_offset_t
zrtos_error_t zrtos_vfs_plugin__default_close(struct _zrtos_vfs_file_t *thiz)
zrtos_error_t zrtos_vfs_plugin__default_umount(struct _zrtos_vfs_dentry_t *thiz)
zrtos_error_t zrtos_vfs_plugin__default_open(struct _zrtos_vfs_file_t *thiz)
#define ZRTOS_VFS_PLUGIN_OPERATION__READ
#define ZRTOS_VFS_PLUGIN_OPERATION__OPEN
#define ZRTOS_VFS_PLUGIN_OPERATION__WRITE
#define ZRTOS_VFS_PLUGIN_OPERATION__IOCTL
zrtos_error_t zrtos_vfs_plugin__default_can_write(struct _zrtos_vfs_file_t *thiz)
zrtos_vfs_offset_t offset
zrtos_error_t zrtos_vfs_plugin__default_write(struct _zrtos_vfs_file_t *thiz, char *path, void *buf, size_t len, zrtos_vfs_offset_t offset, size_t *out)
#define ZRTOS_VFS_PLUGIN_OPERATION__MOUNT
#define ZRTOS_VFS_PLUGIN_OPERATION__CAN_WRITE
#define ZRTOS_VFS_PLUGIN_OPERATION__SEEK
Successful program execution status.
zrtos_error_t zrtos_vfs_plugin__default_seek(struct _zrtos_vfs_file_t *thiz, zrtos_vfs_offset_t offset, int whence, zrtos_vfs_offset_t *out)
#define ZRTOS_VFS_PLUGIN_OPERATION__CAN_READ
#define ZRTOS_VFS_PLUGIN_OPERATION__CLOSE
Function not implemented.
zrtos_error_t zrtos_vfs_plugin__default_read(struct _zrtos_vfs_file_t *thiz, char *path, void *buf, size_t len, zrtos_vfs_offset_t offset, size_t *out)
zrtos_error_t zrtos_vfs_plugin__default_can_write_read_only(struct _zrtos_vfs_file_t *thiz)
#define ZRTOS_VFS_PLUGIN_OPERATION__UMOUNT