Lines Matching refs:file
36 static ssize_t dfs_tmp_page_read(struct dfs_file *file, struct dfs_page *page);
102 struct tmpfs_file *file = RT_NULL, *tmp; in _free_subdir() local
107 dfs_vfs_for_each_subnode(file, tmp, dfile, node) in _free_subdir()
109 if (file->type == TMPFS_TYPE_DIR) in _free_subdir()
111 _free_subdir(file); in _free_subdir()
113 if (file->data != NULL) in _free_subdir()
116 rt_free(file->data); in _free_subdir()
119 superblock = file->sb; in _free_subdir()
123 dfs_vfs_remove_node(&file->node); in _free_subdir()
126 rt_free(file); in _free_subdir()
191 int dfs_tmpfs_ioctl(struct dfs_file *file, int cmd, void *args) in dfs_tmpfs_ioctl() argument
196 d_file = (struct tmpfs_file *)file->vnode->data; in dfs_tmpfs_ioctl()
211 if (mmap2->length > file->vnode->size) in dfs_tmpfs_ioctl()
235 struct tmpfs_file *file, *curfile, *tmp; in dfs_tmpfs_lookup() local
263 dfs_vfs_for_each_subnode(file, tmp, curfile, node) in dfs_tmpfs_lookup()
267 if (rt_strcmp(file->name, filename) == 0) in dfs_tmpfs_lookup()
269 *size = file->size; in dfs_tmpfs_lookup()
272 return file; in dfs_tmpfs_lookup()
275 else if (rt_strcmp(file->name, subdir_name) == 0) in dfs_tmpfs_lookup()
277 *size = file->size; in dfs_tmpfs_lookup()
279 curfile = file; in dfs_tmpfs_lookup()
289 static ssize_t dfs_tmpfs_read(struct dfs_file *file, void *buf, size_t count, off_t *pos) in dfs_tmpfs_read() argument
293 d_file = (struct tmpfs_file *)file->vnode->data; in dfs_tmpfs_read()
296 rt_mutex_take(&file->vnode->lock, RT_WAITING_FOREVER); in dfs_tmpfs_read()
297 ssize_t size = (ssize_t)file->vnode->size; in dfs_tmpfs_read()
309 rt_mutex_release(&file->vnode->lock); in dfs_tmpfs_read()
351 static ssize_t dfs_tmpfs_write(struct dfs_file *file, const void *buf, size_t count, off_t *pos) in dfs_tmpfs_write() argument
355 d_file = (struct tmpfs_file *)file->vnode->data; in dfs_tmpfs_write()
358 rt_mutex_take(&file->vnode->lock, RT_WAITING_FOREVER); in dfs_tmpfs_write()
362 rt_mutex_release(&file->vnode->lock); in dfs_tmpfs_write()
367 static off_t dfs_tmpfs_lseek(struct dfs_file *file, off_t offset, int wherece) in dfs_tmpfs_lseek() argument
375 offset += file->fpos; in dfs_tmpfs_lseek()
379 offset += file->vnode->size; in dfs_tmpfs_lseek()
386 if (offset <= (off_t)file->vnode->size) in dfs_tmpfs_lseek()
394 static int dfs_tmpfs_close(struct dfs_file *file) in dfs_tmpfs_close() argument
398 RT_ASSERT(file->vnode->ref_count > 0); in dfs_tmpfs_close()
400 if (file->vnode->ref_count != 1) in dfs_tmpfs_close()
403 d_file = (struct tmpfs_file *)file->vnode->data; in dfs_tmpfs_close()
419 rt_mutex_detach(&file->vnode->lock); in dfs_tmpfs_close()
424 static int dfs_tmpfs_open(struct dfs_file *file) in dfs_tmpfs_open() argument
428 d_file = (struct tmpfs_file *)file->vnode->data; in dfs_tmpfs_open()
433 if (file->flags & O_TRUNC) in dfs_tmpfs_open()
436 file->vnode->size = d_file->size; in dfs_tmpfs_open()
437 file->fpos = file->vnode->size; in dfs_tmpfs_open()
446 if (file->flags & O_APPEND) in dfs_tmpfs_open()
448 file->fpos = file->vnode->size; in dfs_tmpfs_open()
452 file->fpos = 0; in dfs_tmpfs_open()
455 RT_ASSERT(file->vnode->ref_count > 0); in dfs_tmpfs_open()
456 if(file->vnode->ref_count == 1) in dfs_tmpfs_open()
458 rt_mutex_init(&file->vnode->lock, file->dentry->pathname, RT_IPC_FLAG_PRIO); in dfs_tmpfs_open()
494 static int dfs_tmpfs_getdents(struct dfs_file *file, in dfs_tmpfs_getdents() argument
503 d_file = (struct tmpfs_file *)file->vnode->data; in dfs_tmpfs_getdents()
505 rt_mutex_take(&file->vnode->lock, RT_WAITING_FOREVER); in dfs_tmpfs_getdents()
515 rt_mutex_release(&file->vnode->lock); in dfs_tmpfs_getdents()
519 end = file->fpos + count; in dfs_tmpfs_getdents()
525 if (index >= (rt_size_t)file->fpos) in dfs_tmpfs_getdents()
541 file->fpos += 1; in dfs_tmpfs_getdents()
549 rt_mutex_release(&file->vnode->lock); in dfs_tmpfs_getdents()
786 static ssize_t dfs_tmp_page_read(struct dfs_file *file, struct dfs_page *page) in dfs_tmp_page_read() argument
793 ret = dfs_tmpfs_read(file, page->page, page->size, &fpos); in dfs_tmp_page_read()
825 static int dfs_tmpfs_truncate(struct dfs_file *file, off_t offset) in dfs_tmpfs_truncate() argument
831 d_file = (struct tmpfs_file *)file->vnode->data; in dfs_tmpfs_truncate()
851 file->vnode->size = d_file->size; in dfs_tmpfs_truncate()