Lines Matching refs:descriptor

190 // file descriptor operation prototypes
1590 struct file_descriptor *descriptor = get_fd(get_current_io_context(kernel), fd);
1591 if (descriptor == NULL)
1594 if (fd_vnode(descriptor) == NULL) {
1595 put_fd(descriptor);
1599 // ToDo: when we can close a file descriptor at any point, investigate
1602 *_vnode = descriptor->u.vnode;
1603 return descriptor;
1610 struct file_descriptor *descriptor;
1613 descriptor = get_fd(get_current_io_context(kernel), fd);
1614 if (descriptor == NULL)
1617 vnode = fd_vnode(descriptor);
1621 put_fd(descriptor);
1629 * If \a fd is a valid file descriptor, \a path may be NULL for directories,
1669 struct file_descriptor *descriptor;
1672 // if the vnode is locked, we don't allow creating a new file descriptor for it
1676 descriptor = alloc_fd();
1677 if (!descriptor)
1681 descriptor->u.vnode = vnode;
1683 descriptor->u.mount = mount;
1684 descriptor->cookie = cookie;
1689 descriptor->ops = &sFileOps;
1692 descriptor->ops = &sDirectoryOps;
1695 descriptor->ops = &sAttributeOps;
1698 descriptor->ops = &sAttributeDirectoryOps;
1703 descriptor->ops = &sIndexDirectoryOps;
1706 descriptor->ops = &sQueryOps;
1713 descriptor->type = type;
1714 descriptor->open_mode = openMode;
1716 fd = new_fd(get_current_io_context(kernel), descriptor);
1718 free(descriptor);
2326 struct file_descriptor *descriptor;
2328 descriptor = get_fd(get_current_io_context(true), fd);
2329 if (descriptor == NULL)
2332 *_cookie = descriptor->cookie;
2774 /** If the given descriptor locked its vnode, that lock will be released.
2778 vfs_unlock_vnode_if_locked(struct file_descriptor *descriptor)
2780 struct vnode *vnode = fd_vnode(descriptor);
2782 if (vnode != NULL && vnode->mandatory_locked_by == descriptor)
2800 struct file_descriptor *descriptor = context->fds[i];
2803 if (descriptor != NULL && fd_close_on_exec(context, i)) {
2813 close_fd(descriptor);
2814 put_fd(descriptor);
2869 struct file_descriptor *descriptor = parentContext->fds[i];
2871 if (descriptor != NULL && !fd_close_on_exec(parentContext, i)) {
2872 context->fds[i] = descriptor;
2874 fssh_atomic_add(&descriptor->ref_count, 1);
2875 fssh_atomic_add(&descriptor->open_count, 1);
2905 if (struct file_descriptor *descriptor = context->fds[i]) {
2906 close_fd(descriptor);
2907 put_fd(descriptor);
2955 * file descriptor for it
2998 * file descriptor for it
3021 * file descriptor for it
3047 * file descriptor for it.
3169 file_close(struct file_descriptor *descriptor)
3171 struct vnode *vnode = descriptor->u.vnode;
3174 FUNCTION(("file_close(descriptor = %p)\n", descriptor));
3177 status = FS_CALL(vnode, close, descriptor->cookie);
3184 file_free_fd(struct file_descriptor *descriptor)
3186 struct vnode *vnode = descriptor->u.vnode;
3189 FS_CALL(vnode, free_cookie, descriptor->cookie);
3196 file_read(struct file_descriptor *descriptor, fssh_off_t pos, void *buffer, fssh_size_t *length)
3198 struct vnode *vnode = descriptor->u.vnode;
3201 return FS_CALL(vnode, read, descriptor->cookie, pos, buffer, length);
3206 file_write(struct file_descriptor *descriptor, fssh_off_t pos, const void *buffer, fssh_size_t *length)
3208 struct vnode *vnode = descriptor->u.vnode;
3211 return FS_CALL(vnode, write, descriptor->cookie, pos, buffer, length);
3216 file_seek(struct file_descriptor *descriptor, fssh_off_t pos, int seekType)
3228 offset = descriptor->pos;
3232 struct vnode *vnode = descriptor->u.vnode;
3258 return descriptor->pos = pos;
3361 dir_close(struct file_descriptor *descriptor)
3363 struct vnode *vnode = descriptor->u.vnode;
3365 FUNCTION(("dir_close(descriptor = %p)\n", descriptor));
3368 return FS_CALL(vnode, close_dir, descriptor->cookie);
3375 dir_free_fd(struct file_descriptor *descriptor)
3377 struct vnode *vnode = descriptor->u.vnode;
3380 FS_CALL(vnode, free_dir_cookie, descriptor->cookie);
3387 dir_read(struct file_descriptor *descriptor, struct fssh_dirent *buffer,
3390 return dir_read(descriptor->u.vnode, descriptor->cookie, buffer, bufferSize, _count);
3459 dir_rewind(struct file_descriptor *descriptor)
3461 struct vnode *vnode = descriptor->u.vnode;
3464 return FS_CALL(vnode, rewind_dir,descriptor->cookie);
3514 common_ioctl(struct file_descriptor *descriptor, uint32_t op, void *buffer,
3517 struct vnode *vnode = descriptor->u.vnode;
3521 descriptor->cookie, op, buffer, length);
3531 struct file_descriptor *descriptor;
3538 descriptor = get_fd_and_vnode(fd, &vnode, kernel);
3539 if (descriptor == NULL)
3546 // Set file descriptor flags
3561 // Get file descriptor flags
3569 // Set file descriptor open mode
3574 status = FS_CALL(vnode, set_flags, descriptor->cookie, (int)argument);
3576 // update this descriptor's open_mode field
3577 descriptor->open_mode = (descriptor->open_mode & ~(FSSH_O_APPEND | FSSH_O_NONBLOCK))
3585 // Get file descriptor open mode
3586 status = descriptor->open_mode;
3593 status = new_fd_etc(context, descriptor, (int)argument);
3599 fssh_atomic_add(&descriptor->ref_count, 1);
3616 put_fd(descriptor);
3624 struct file_descriptor *descriptor;
3630 descriptor = get_fd_and_vnode(fd, &vnode, kernel);
3631 if (descriptor == NULL)
3639 put_fd(descriptor);
3647 struct file_descriptor *descriptor;
3650 descriptor = get_fd_and_vnode(fd, &vnode, kernel);
3651 if (descriptor == NULL)
3660 (fssh_addr_t)descriptor, 0) != 0)
3663 (fssh_addr_t)descriptor, 0) != 0)
3667 put_fd(descriptor);
3675 struct file_descriptor *descriptor;
3678 descriptor = get_fd_and_vnode(fd, &vnode, kernel);
3679 if (descriptor == NULL)
3688 0, (fssh_addr_t)descriptor) != (int64_t)descriptor)
3691 0, (fssh_addr_t)descriptor) != (int32_t)descriptor)
3695 put_fd(descriptor);
3867 common_read_stat(struct file_descriptor *descriptor, struct fssh_stat *stat)
3869 struct vnode *vnode = descriptor->u.vnode;
3891 common_write_stat(struct file_descriptor *descriptor,
3894 struct vnode *vnode = descriptor->u.vnode;
3975 attr_dir_close(struct file_descriptor *descriptor)
3977 struct vnode *vnode = descriptor->u.vnode;
3979 FUNCTION(("attr_dir_close(descriptor = %p)\n", descriptor));
3982 return FS_CALL(vnode, close_attr_dir, descriptor->cookie);
3989 attr_dir_free_fd(struct file_descriptor *descriptor)
3991 struct vnode *vnode = descriptor->u.vnode;
3994 FS_CALL(vnode, free_attr_dir_cookie, descriptor->cookie);
4001 attr_dir_read(struct file_descriptor *descriptor, struct fssh_dirent *buffer,
4004 struct vnode *vnode = descriptor->u.vnode;
4006 FUNCTION(("attr_dir_read(descriptor = %p)\n", descriptor));
4009 return FS_CALL(vnode, read_attr_dir, descriptor->cookie, buffer, bufferSize, _count);
4016 attr_dir_rewind(struct file_descriptor *descriptor)
4018 struct vnode *vnode = descriptor->u.vnode;
4020 FUNCTION(("attr_dir_rewind(descriptor = %p)\n", descriptor));
4023 return FS_CALL(vnode, rewind_attr_dir, descriptor->cookie);
4090 // now we only need a file descriptor for this attribute and we're done
4105 attr_close(struct file_descriptor *descriptor)
4107 struct vnode *vnode = descriptor->u.vnode;
4109 FUNCTION(("attr_close(descriptor = %p)\n", descriptor));
4112 return FS_CALL(vnode, close_attr, descriptor->cookie);
4119 attr_free_fd(struct file_descriptor *descriptor)
4121 struct vnode *vnode = descriptor->u.vnode;
4124 FS_CALL(vnode, free_attr_cookie, descriptor->cookie);
4131 attr_read(struct file_descriptor *descriptor, fssh_off_t pos, void *buffer, fssh_size_t *length)
4133 struct vnode *vnode = descriptor->u.vnode;
4139 return FS_CALL(vnode, read_attr, descriptor->cookie, pos, buffer, length);
4144 attr_write(struct file_descriptor *descriptor, fssh_off_t pos, const void *buffer, fssh_size_t *length)
4146 struct vnode *vnode = descriptor->u.vnode;
4152 return FS_CALL(vnode, write_attr, descriptor->cookie, pos, buffer, length);
4157 attr_seek(struct file_descriptor *descriptor, fssh_off_t pos, int seekType)
4166 offset = descriptor->pos;
4170 struct vnode *vnode = descriptor->u.vnode;
4177 status = FS_CALL(vnode, read_attr_stat, descriptor->cookie, &stat);
4196 return descriptor->pos = pos;
4201 attr_read_stat(struct file_descriptor *descriptor, struct fssh_stat *stat)
4203 struct vnode *vnode = descriptor->u.vnode;
4210 return FS_CALL(vnode, read_attr_stat, descriptor->cookie, stat);
4215 attr_write_stat(struct file_descriptor *descriptor,
4218 struct vnode *vnode = descriptor->u.vnode;
4225 return FS_CALL(vnode, write_attr_stat, descriptor->cookie, stat, statMask);
4232 struct file_descriptor *descriptor;
4241 descriptor = get_fd_and_vnode(fd, &vnode, kernel);
4242 if (descriptor == NULL)
4250 put_fd(descriptor);
4335 index_dir_close(struct file_descriptor *descriptor)
4337 struct fs_mount *mount = descriptor->u.mount;
4339 FUNCTION(("index_dir_close(descriptor = %p)\n", descriptor));
4342 return FS_MOUNT_CALL(mount, close_index_dir, descriptor->cookie);
4349 index_dir_free_fd(struct file_descriptor *descriptor)
4351 struct fs_mount *mount = descriptor->u.mount;
4354 FS_MOUNT_CALL(mount, free_index_dir_cookie, descriptor->cookie);
4362 index_dir_read(struct file_descriptor *descriptor, struct fssh_dirent *buffer,
4365 struct fs_mount *mount = descriptor->u.mount;
4368 return FS_MOUNT_CALL(mount, read_index_dir, descriptor->cookie, buffer, bufferSize, _count);
4375 index_dir_rewind(struct file_descriptor *descriptor)
4377 struct fs_mount *mount = descriptor->u.mount;
4380 return FS_MOUNT_CALL(mount, rewind_index_dir, descriptor->cookie);
4499 query_close(struct file_descriptor *descriptor)
4501 struct fs_mount *mount = descriptor->u.mount;
4503 FUNCTION(("query_close(descriptor = %p)\n", descriptor));
4506 return FS_MOUNT_CALL(mount, close_query, descriptor->cookie);
4513 query_free_fd(struct file_descriptor *descriptor)
4515 struct fs_mount *mount = descriptor->u.mount;
4518 FS_MOUNT_CALL(mount, free_query_cookie, descriptor->cookie);
4526 query_read(struct file_descriptor *descriptor, struct fssh_dirent *buffer,
4529 struct fs_mount *mount = descriptor->u.mount;
4532 return FS_MOUNT_CALL(mount, read_query, descriptor->cookie, buffer, bufferSize, _count);
4539 query_rewind(struct file_descriptor *descriptor)
4541 struct fs_mount *mount = descriptor->u.mount;
4544 return FS_MOUNT_CALL(mount, rewind_query, descriptor->cookie);
5511 struct file_descriptor *descriptor
5513 if (descriptor == NULL)
5516 if (descriptor->ops->fd_read_stat)
5517 status = descriptor->ops->fd_read_stat(descriptor, stat);
5521 put_fd(descriptor);
5581 struct file_descriptor *descriptor
5583 if (descriptor == NULL)
5586 if (descriptor->ops->fd_write_stat)
5587 status = descriptor->ops->fd_write_stat(descriptor, stat, statMask);
5591 put_fd(descriptor);