Lines Matching refs:file

331 int dfs_elm_open(struct dfs_file *file)  in dfs_elm_open()  argument
340 struct dfs_filesystem *fs = file->vnode->fs; in dfs_elm_open()
343 RT_ASSERT(file->vnode->ref_count > 0); in dfs_elm_open()
344 if (file->vnode->ref_count > 1) in dfs_elm_open()
346 if (file->vnode->type == FT_DIRECTORY in dfs_elm_open()
347 && !(file->flags & O_DIRECTORY)) in dfs_elm_open()
351 file->pos = 0; in dfs_elm_open()
365 rt_snprintf(drivers_fn, 256, "%d:%s", vol, file->vnode->path); in dfs_elm_open()
367 drivers_fn = file->vnode->path; in dfs_elm_open()
370 if (file->flags & O_DIRECTORY) in dfs_elm_open()
374 if (file->flags & O_CREAT) in dfs_elm_open()
406 file->data = dir; in dfs_elm_open()
413 if (file->flags & O_WRONLY) in dfs_elm_open()
415 if ((file->flags & O_ACCMODE) & O_RDWR) in dfs_elm_open()
418 if (file->flags & O_CREAT) in dfs_elm_open()
421 if (file->flags & O_TRUNC) in dfs_elm_open()
424 if (file->flags & O_EXCL) in dfs_elm_open()
443 file->pos = fd->fptr; in dfs_elm_open()
444 file->vnode->size = f_size(fd); in dfs_elm_open()
445 file->vnode->type = FT_REGULAR; in dfs_elm_open()
446 file->data = fd; in dfs_elm_open()
448 if (file->flags & O_APPEND) in dfs_elm_open()
452 file->pos = fd->fptr; in dfs_elm_open()
466 int dfs_elm_close(struct dfs_file *file) in dfs_elm_close() argument
470 RT_ASSERT(file->vnode->ref_count > 0); in dfs_elm_close()
471 if (file->vnode->ref_count > 1) in dfs_elm_close()
476 if (file->vnode->type == FT_DIRECTORY) in dfs_elm_close()
480 dir = (DIR *)(file->data); in dfs_elm_close()
486 else if (file->vnode->type == FT_REGULAR) in dfs_elm_close()
489 fd = (FIL *)(file->data); in dfs_elm_close()
501 int dfs_elm_ioctl(struct dfs_file *file, int cmd, void *args) in dfs_elm_ioctl() argument
510 fd = (FIL *)(file->data); in dfs_elm_ioctl()
537 ssize_t dfs_elm_read(struct dfs_file *file, void *buf, size_t len) in dfs_elm_read() argument
543 if (file->vnode->type == FT_DIRECTORY) in dfs_elm_read()
548 fd = (FIL *)(file->data); in dfs_elm_read()
553 file->pos = fd->fptr; in dfs_elm_read()
560 ssize_t dfs_elm_write(struct dfs_file *file, const void *buf, size_t len) in dfs_elm_write() argument
566 if (file->vnode->type == FT_DIRECTORY) in dfs_elm_write()
571 fd = (FIL *)(file->data); in dfs_elm_write()
576 file->pos = fd->fptr; in dfs_elm_write()
577 file->vnode->size = f_size(fd); in dfs_elm_write()
584 int dfs_elm_flush(struct dfs_file *file) in dfs_elm_flush() argument
589 fd = (FIL *)(file->data); in dfs_elm_flush()
596 off_t dfs_elm_lseek(struct dfs_file *file, off_t offset) in dfs_elm_lseek() argument
599 if (file->vnode->type == FT_REGULAR) in dfs_elm_lseek()
604 fd = (FIL *)(file->data); in dfs_elm_lseek()
611 file->pos = fd->fptr; in dfs_elm_lseek()
615 else if (file->vnode->type == FT_DIRECTORY) in dfs_elm_lseek()
620 dir = (DIR *)(file->data); in dfs_elm_lseek()
627 file->pos = offset; in dfs_elm_lseek()
628 return file->pos; in dfs_elm_lseek()
635 int dfs_elm_getdents(struct dfs_file *file, struct dirent *dirp, uint32_t count) in dfs_elm_getdents() argument
643 dir = (DIR *)(file->data); in dfs_elm_getdents()
686 file->pos += index * sizeof(struct dirent); in dfs_elm_getdents()