Lines Matching refs:file
35 int dfs_romfs_ioctl(struct dfs_file *file, int cmd, void *args) in dfs_romfs_ioctl() argument
40 dirent = (struct romfs_dirent *)file->vnode->data; in dfs_romfs_ioctl()
149 ssize_t dfs_romfs_read(struct dfs_file *file, void *buf, size_t count) in dfs_romfs_read() argument
154 dirent = (struct romfs_dirent *)file->vnode->data; in dfs_romfs_read()
162 if (count < file->vnode->size - file->pos) in dfs_romfs_read()
165 length = file->vnode->size - file->pos; in dfs_romfs_read()
168 rt_memcpy(buf, &(dirent->data[file->pos]), length); in dfs_romfs_read()
171 file->pos += length; in dfs_romfs_read()
176 off_t dfs_romfs_lseek(struct dfs_file *file, off_t offset) in dfs_romfs_lseek() argument
178 if (offset <= file->vnode->size) in dfs_romfs_lseek()
180 file->pos = offset; in dfs_romfs_lseek()
181 return file->pos; in dfs_romfs_lseek()
187 int dfs_romfs_close(struct dfs_file *file) in dfs_romfs_close() argument
189 RT_ASSERT(file->vnode->ref_count > 0); in dfs_romfs_close()
190 if (file->vnode->ref_count > 1) in dfs_romfs_close()
194 file->vnode->data = NULL; in dfs_romfs_close()
198 int dfs_romfs_open(struct dfs_file *file) in dfs_romfs_open() argument
205 if (file->flags & (O_CREAT | O_WRONLY | O_APPEND | O_TRUNC | O_RDWR)) in dfs_romfs_open()
210 RT_ASSERT(file->vnode->ref_count > 0); in dfs_romfs_open()
211 if (file->vnode->ref_count > 1) in dfs_romfs_open()
213 if (file->vnode->type == FT_DIRECTORY in dfs_romfs_open()
214 && !(file->flags & O_DIRECTORY)) in dfs_romfs_open()
218 file->pos = 0; in dfs_romfs_open()
222 fs = file->vnode->fs; in dfs_romfs_open()
230 if (file->flags & (O_CREAT | O_WRONLY | O_APPEND | O_TRUNC | O_RDWR)) in dfs_romfs_open()
235 dirent = dfs_romfs_lookup(root_dirent, file->vnode->path, &size); in dfs_romfs_open()
244 if (!(file->flags & O_DIRECTORY)) in dfs_romfs_open()
248 file->vnode->type = FT_DIRECTORY; in dfs_romfs_open()
253 if (file->flags & O_DIRECTORY) in dfs_romfs_open()
257 file->vnode->type = FT_REGULAR; in dfs_romfs_open()
260 file->vnode->data = dirent; in dfs_romfs_open()
261 file->vnode->size = size; in dfs_romfs_open()
262 file->pos = 0; in dfs_romfs_open()
297 int dfs_romfs_getdents(struct dfs_file *file, struct dirent *dirp, uint32_t count) in dfs_romfs_getdents() argument
305 dirent = (struct romfs_dirent *)file->vnode->data; in dfs_romfs_getdents()
323 for (index = 0; index < count && file->pos < file->vnode->size; index++) in dfs_romfs_getdents()
327 sub_dirent = &dirent[file->pos]; in dfs_romfs_getdents()
343 ++ file->pos; in dfs_romfs_getdents()