mirror of
https://github.com/RGBCube/serenity
synced 2025-05-31 08:58:11 +00:00
Kernel: Rename file_description(fd) => open_file_description(fd)
To go with the class rename.
This commit is contained in:
parent
4a9c18afb9
commit
213b8868af
24 changed files with 42 additions and 42 deletions
|
@ -451,7 +451,7 @@ Process::OpenFileDescriptionAndFlags& Process::OpenFileDescriptions::at(size_t i
|
||||||
return m_fds_metadatas[i];
|
return m_fds_metadatas[i];
|
||||||
}
|
}
|
||||||
|
|
||||||
KResultOr<NonnullRefPtr<OpenFileDescription>> Process::OpenFileDescriptions::file_description(int fd) const
|
KResultOr<NonnullRefPtr<OpenFileDescription>> Process::OpenFileDescriptions::open_file_description(int fd) const
|
||||||
{
|
{
|
||||||
SpinlockLocker lock(m_fds_lock);
|
SpinlockLocker lock(m_fds_lock);
|
||||||
if (fd < 0)
|
if (fd < 0)
|
||||||
|
|
|
@ -676,7 +676,7 @@ public:
|
||||||
m_fds_metadatas.clear();
|
m_fds_metadatas.clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
KResultOr<NonnullRefPtr<OpenFileDescription>> file_description(int fd) const;
|
KResultOr<NonnullRefPtr<OpenFileDescription>> open_file_description(int fd) const;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
OpenFileDescriptions() = default;
|
OpenFileDescriptions() = default;
|
||||||
|
|
|
@ -79,7 +79,7 @@ KResultOr<NonnullRefPtr<Inode>> Process::lookup_stacks_directory(const ProcFS& p
|
||||||
|
|
||||||
KResultOr<size_t> Process::procfs_get_file_description_link(unsigned fd, KBufferBuilder& builder) const
|
KResultOr<size_t> Process::procfs_get_file_description_link(unsigned fd, KBufferBuilder& builder) const
|
||||||
{
|
{
|
||||||
auto file_description = TRY(m_fds.file_description(fd));
|
auto file_description = TRY(m_fds.open_file_description(fd));
|
||||||
auto data = file_description->absolute_path();
|
auto data = file_description->absolute_path();
|
||||||
TRY(builder.append(data));
|
TRY(builder.append(data));
|
||||||
return data.length();
|
return data.length();
|
||||||
|
|
|
@ -23,7 +23,7 @@ KResultOr<FlatPtr> Process::sys$fchdir(int fd)
|
||||||
{
|
{
|
||||||
VERIFY_PROCESS_BIG_LOCK_ACQUIRED(this);
|
VERIFY_PROCESS_BIG_LOCK_ACQUIRED(this);
|
||||||
REQUIRE_PROMISE(stdio);
|
REQUIRE_PROMISE(stdio);
|
||||||
auto description = TRY(fds().file_description(fd));
|
auto description = TRY(fds().open_file_description(fd));
|
||||||
if (!description->is_directory())
|
if (!description->is_directory())
|
||||||
return ENOTDIR;
|
return ENOTDIR;
|
||||||
if (!description->metadata().may_execute(*this))
|
if (!description->metadata().may_execute(*this))
|
||||||
|
|
|
@ -22,7 +22,7 @@ KResultOr<FlatPtr> Process::sys$fchmod(int fd, mode_t mode)
|
||||||
{
|
{
|
||||||
VERIFY_PROCESS_BIG_LOCK_ACQUIRED(this);
|
VERIFY_PROCESS_BIG_LOCK_ACQUIRED(this);
|
||||||
REQUIRE_PROMISE(fattr);
|
REQUIRE_PROMISE(fattr);
|
||||||
auto description = TRY(fds().file_description(fd));
|
auto description = TRY(fds().open_file_description(fd));
|
||||||
return description->chmod(mode);
|
return description->chmod(mode);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -13,7 +13,7 @@ KResultOr<FlatPtr> Process::sys$fchown(int fd, UserID uid, GroupID gid)
|
||||||
{
|
{
|
||||||
VERIFY_PROCESS_BIG_LOCK_ACQUIRED(this);
|
VERIFY_PROCESS_BIG_LOCK_ACQUIRED(this);
|
||||||
REQUIRE_PROMISE(chown);
|
REQUIRE_PROMISE(chown);
|
||||||
auto description = TRY(fds().file_description(fd));
|
auto description = TRY(fds().open_file_description(fd));
|
||||||
return description->chown(uid, gid);
|
return description->chown(uid, gid);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -13,7 +13,7 @@ KResultOr<FlatPtr> Process::sys$dup2(int old_fd, int new_fd)
|
||||||
{
|
{
|
||||||
VERIFY_PROCESS_BIG_LOCK_ACQUIRED(this);
|
VERIFY_PROCESS_BIG_LOCK_ACQUIRED(this);
|
||||||
REQUIRE_PROMISE(stdio);
|
REQUIRE_PROMISE(stdio);
|
||||||
auto description = TRY(fds().file_description(old_fd));
|
auto description = TRY(fds().open_file_description(old_fd));
|
||||||
if (old_fd == new_fd)
|
if (old_fd == new_fd)
|
||||||
return new_fd;
|
return new_fd;
|
||||||
if (new_fd < 0 || static_cast<size_t>(new_fd) >= fds().max_open())
|
if (new_fd < 0 || static_cast<size_t>(new_fd) >= fds().max_open())
|
||||||
|
|
|
@ -15,7 +15,7 @@ KResultOr<FlatPtr> Process::sys$fcntl(int fd, int cmd, u32 arg)
|
||||||
VERIFY_PROCESS_BIG_LOCK_ACQUIRED(this);
|
VERIFY_PROCESS_BIG_LOCK_ACQUIRED(this);
|
||||||
REQUIRE_PROMISE(stdio);
|
REQUIRE_PROMISE(stdio);
|
||||||
dbgln_if(IO_DEBUG, "sys$fcntl: fd={}, cmd={}, arg={}", fd, cmd, arg);
|
dbgln_if(IO_DEBUG, "sys$fcntl: fd={}, cmd={}, arg={}", fd, cmd, arg);
|
||||||
auto description = TRY(fds().file_description(fd));
|
auto description = TRY(fds().open_file_description(fd));
|
||||||
// NOTE: The FD flags are not shared between OpenFileDescription objects.
|
// NOTE: The FD flags are not shared between OpenFileDescription objects.
|
||||||
// This means that dup() doesn't copy the FD_CLOEXEC flag!
|
// This means that dup() doesn't copy the FD_CLOEXEC flag!
|
||||||
switch (cmd) {
|
switch (cmd) {
|
||||||
|
|
|
@ -17,7 +17,7 @@ KResultOr<FlatPtr> Process::sys$ftruncate(int fd, Userspace<off_t*> userspace_le
|
||||||
TRY(copy_from_user(&length, userspace_length));
|
TRY(copy_from_user(&length, userspace_length));
|
||||||
if (length < 0)
|
if (length < 0)
|
||||||
return EINVAL;
|
return EINVAL;
|
||||||
auto description = TRY(fds().file_description(fd));
|
auto description = TRY(fds().open_file_description(fd));
|
||||||
if (!description->is_writable())
|
if (!description->is_writable())
|
||||||
return EBADF;
|
return EBADF;
|
||||||
return description->truncate(static_cast<u64>(length));
|
return description->truncate(static_cast<u64>(length));
|
||||||
|
|
|
@ -15,7 +15,7 @@ KResultOr<FlatPtr> Process::sys$get_dir_entries(int fd, Userspace<void*> user_bu
|
||||||
REQUIRE_PROMISE(stdio);
|
REQUIRE_PROMISE(stdio);
|
||||||
if (user_size > NumericLimits<ssize_t>::max())
|
if (user_size > NumericLimits<ssize_t>::max())
|
||||||
return EINVAL;
|
return EINVAL;
|
||||||
auto description = TRY(fds().file_description(fd));
|
auto description = TRY(fds().open_file_description(fd));
|
||||||
auto buffer = UserOrKernelBuffer::for_user_buffer(user_buffer, static_cast<size_t>(user_size));
|
auto buffer = UserOrKernelBuffer::for_user_buffer(user_buffer, static_cast<size_t>(user_size));
|
||||||
if (!buffer.has_value())
|
if (!buffer.has_value())
|
||||||
return EFAULT;
|
return EFAULT;
|
||||||
|
|
|
@ -40,7 +40,7 @@ KResultOr<FlatPtr> Process::sys$inode_watcher_add_watch(Userspace<const Syscall:
|
||||||
REQUIRE_PROMISE(rpath);
|
REQUIRE_PROMISE(rpath);
|
||||||
auto params = TRY(copy_typed_from_user(user_params));
|
auto params = TRY(copy_typed_from_user(user_params));
|
||||||
|
|
||||||
auto description = TRY(fds().file_description(params.fd));
|
auto description = TRY(fds().open_file_description(params.fd));
|
||||||
if (!description->is_inode_watcher())
|
if (!description->is_inode_watcher())
|
||||||
return EBADF;
|
return EBADF;
|
||||||
auto inode_watcher = description->inode_watcher();
|
auto inode_watcher = description->inode_watcher();
|
||||||
|
@ -55,7 +55,7 @@ KResultOr<FlatPtr> Process::sys$inode_watcher_add_watch(Userspace<const Syscall:
|
||||||
KResultOr<FlatPtr> Process::sys$inode_watcher_remove_watch(int fd, int wd)
|
KResultOr<FlatPtr> Process::sys$inode_watcher_remove_watch(int fd, int wd)
|
||||||
{
|
{
|
||||||
VERIFY_PROCESS_BIG_LOCK_ACQUIRED(this)
|
VERIFY_PROCESS_BIG_LOCK_ACQUIRED(this)
|
||||||
auto description = TRY(fds().file_description(fd));
|
auto description = TRY(fds().open_file_description(fd));
|
||||||
if (!description->is_inode_watcher())
|
if (!description->is_inode_watcher())
|
||||||
return EBADF;
|
return EBADF;
|
||||||
return description->inode_watcher()->unregister_by_wd(wd);
|
return description->inode_watcher()->unregister_by_wd(wd);
|
||||||
|
|
|
@ -13,7 +13,7 @@ namespace Kernel {
|
||||||
KResultOr<FlatPtr> Process::sys$ioctl(int fd, unsigned request, FlatPtr arg)
|
KResultOr<FlatPtr> Process::sys$ioctl(int fd, unsigned request, FlatPtr arg)
|
||||||
{
|
{
|
||||||
VERIFY_PROCESS_BIG_LOCK_ACQUIRED(this)
|
VERIFY_PROCESS_BIG_LOCK_ACQUIRED(this)
|
||||||
auto description = TRY(fds().file_description(fd));
|
auto description = TRY(fds().open_file_description(fd));
|
||||||
if (request == FIONBIO) {
|
if (request == FIONBIO) {
|
||||||
description->set_blocking(arg == 0);
|
description->set_blocking(arg == 0);
|
||||||
return KSuccess;
|
return KSuccess;
|
||||||
|
|
|
@ -13,7 +13,7 @@ KResultOr<FlatPtr> Process::sys$lseek(int fd, Userspace<off_t*> userspace_offset
|
||||||
{
|
{
|
||||||
VERIFY_PROCESS_BIG_LOCK_ACQUIRED(this)
|
VERIFY_PROCESS_BIG_LOCK_ACQUIRED(this)
|
||||||
REQUIRE_PROMISE(stdio);
|
REQUIRE_PROMISE(stdio);
|
||||||
auto description = TRY(fds().file_description(fd));
|
auto description = TRY(fds().open_file_description(fd));
|
||||||
off_t offset;
|
off_t offset;
|
||||||
TRY(copy_from_user(&offset, userspace_offset));
|
TRY(copy_from_user(&offset, userspace_offset));
|
||||||
auto seek_result = TRY(description->seek(offset, whence));
|
auto seek_result = TRY(description->seek(offset, whence));
|
||||||
|
|
|
@ -221,7 +221,7 @@ KResultOr<FlatPtr> Process::sys$mmap(Userspace<const Syscall::SC_mmap_params*> u
|
||||||
return EINVAL;
|
return EINVAL;
|
||||||
if (static_cast<size_t>(offset) & ~PAGE_MASK)
|
if (static_cast<size_t>(offset) & ~PAGE_MASK)
|
||||||
return EINVAL;
|
return EINVAL;
|
||||||
auto description = TRY(fds().file_description(fd));
|
auto description = TRY(fds().open_file_description(fd));
|
||||||
if (description->is_directory())
|
if (description->is_directory())
|
||||||
return ENODEV;
|
return ENODEV;
|
||||||
// Require read access even when read protection is not requested.
|
// Require read access even when read protection is not requested.
|
||||||
|
|
|
@ -32,7 +32,7 @@ KResultOr<FlatPtr> Process::sys$mount(Userspace<const Syscall::SC_mount_params*>
|
||||||
auto fs_type_string = TRY(try_copy_kstring_from_user(params.fs_type));
|
auto fs_type_string = TRY(try_copy_kstring_from_user(params.fs_type));
|
||||||
auto fs_type = fs_type_string->view();
|
auto fs_type = fs_type_string->view();
|
||||||
|
|
||||||
auto description_or_error = fds().file_description(source_fd);
|
auto description_or_error = fds().open_file_description(source_fd);
|
||||||
if (!description_or_error.is_error())
|
if (!description_or_error.is_error())
|
||||||
dbgln("mount {}: source fd {} @ {}", fs_type, source_fd, target);
|
dbgln("mount {}: source fd {} @ {}", fs_type, source_fd, target);
|
||||||
else
|
else
|
||||||
|
|
|
@ -46,7 +46,7 @@ KResultOr<FlatPtr> Process::sys$open(Userspace<const Syscall::SC_open_params*> u
|
||||||
if (dirfd == AT_FDCWD) {
|
if (dirfd == AT_FDCWD) {
|
||||||
base = current_directory();
|
base = current_directory();
|
||||||
} else {
|
} else {
|
||||||
auto base_description = TRY(fds().file_description(dirfd));
|
auto base_description = TRY(fds().open_file_description(dirfd));
|
||||||
if (!base_description->is_directory())
|
if (!base_description->is_directory())
|
||||||
return ENOTDIR;
|
return ENOTDIR;
|
||||||
if (!base_description->custody())
|
if (!base_description->custody())
|
||||||
|
@ -68,7 +68,7 @@ KResultOr<FlatPtr> Process::sys$close(int fd)
|
||||||
{
|
{
|
||||||
VERIFY_PROCESS_BIG_LOCK_ACQUIRED(this)
|
VERIFY_PROCESS_BIG_LOCK_ACQUIRED(this)
|
||||||
REQUIRE_PROMISE(stdio);
|
REQUIRE_PROMISE(stdio);
|
||||||
auto description = TRY(fds().file_description(fd));
|
auto description = TRY(fds().open_file_description(fd));
|
||||||
auto result = description->close();
|
auto result = description->close();
|
||||||
m_fds[fd] = {};
|
m_fds[fd] = {};
|
||||||
return result;
|
return result;
|
||||||
|
|
|
@ -34,7 +34,7 @@ KResultOr<FlatPtr> Process::sys$readv(int fd, Userspace<const struct iovec*> iov
|
||||||
return EINVAL;
|
return EINVAL;
|
||||||
}
|
}
|
||||||
|
|
||||||
auto description = TRY(fds().file_description(fd));
|
auto description = TRY(fds().open_file_description(fd));
|
||||||
if (!description->is_readable())
|
if (!description->is_readable())
|
||||||
return EBADF;
|
return EBADF;
|
||||||
if (description->is_directory())
|
if (description->is_directory())
|
||||||
|
@ -71,7 +71,7 @@ KResultOr<FlatPtr> Process::sys$read(int fd, Userspace<u8*> buffer, size_t size)
|
||||||
if (size > NumericLimits<ssize_t>::max())
|
if (size > NumericLimits<ssize_t>::max())
|
||||||
return EINVAL;
|
return EINVAL;
|
||||||
dbgln_if(IO_DEBUG, "sys$read({}, {}, {})", fd, buffer.ptr(), size);
|
dbgln_if(IO_DEBUG, "sys$read({}, {}, {})", fd, buffer.ptr(), size);
|
||||||
auto description = TRY(fds().file_description(fd));
|
auto description = TRY(fds().open_file_description(fd));
|
||||||
if (!description->is_readable())
|
if (!description->is_readable())
|
||||||
return EBADF;
|
return EBADF;
|
||||||
if (description->is_directory())
|
if (description->is_directory())
|
||||||
|
|
|
@ -71,7 +71,7 @@ KResultOr<FlatPtr> Process::sys$select(Userspace<const Syscall::SC_select_params
|
||||||
if (block_flags == BlockFlags::None)
|
if (block_flags == BlockFlags::None)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
auto description = TRY(fds().file_description(fd));
|
auto description = TRY(fds().open_file_description(fd));
|
||||||
if (!fds_info.try_append({ move(description), block_flags }))
|
if (!fds_info.try_append({ move(description), block_flags }))
|
||||||
return ENOMEM;
|
return ENOMEM;
|
||||||
if (!selected_fds.try_append(fd))
|
if (!selected_fds.try_append(fd))
|
||||||
|
@ -154,7 +154,7 @@ KResultOr<FlatPtr> Process::sys$poll(Userspace<const Syscall::SC_poll_params*> u
|
||||||
Thread::SelectBlocker::FDVector fds_info;
|
Thread::SelectBlocker::FDVector fds_info;
|
||||||
for (size_t i = 0; i < params.nfds; i++) {
|
for (size_t i = 0; i < params.nfds; i++) {
|
||||||
auto& pfd = fds_copy[i];
|
auto& pfd = fds_copy[i];
|
||||||
auto description = TRY(fds().file_description(pfd.fd));
|
auto description = TRY(fds().open_file_description(pfd.fd));
|
||||||
BlockFlags block_flags = BlockFlags::Exception; // always want POLLERR, POLLHUP, POLLNVAL
|
BlockFlags block_flags = BlockFlags::Exception; // always want POLLERR, POLLHUP, POLLNVAL
|
||||||
if (pfd.events & POLLIN)
|
if (pfd.events & POLLIN)
|
||||||
block_flags |= BlockFlags::Read;
|
block_flags |= BlockFlags::Read;
|
||||||
|
|
|
@ -14,7 +14,7 @@ KResultOr<FlatPtr> Process::sys$sendfd(int sockfd, int fd)
|
||||||
{
|
{
|
||||||
VERIFY_PROCESS_BIG_LOCK_ACQUIRED(this)
|
VERIFY_PROCESS_BIG_LOCK_ACQUIRED(this)
|
||||||
REQUIRE_PROMISE(sendfd);
|
REQUIRE_PROMISE(sendfd);
|
||||||
auto socket_description = TRY(fds().file_description(sockfd));
|
auto socket_description = TRY(fds().open_file_description(sockfd));
|
||||||
if (!socket_description->is_socket())
|
if (!socket_description->is_socket())
|
||||||
return ENOTSOCK;
|
return ENOTSOCK;
|
||||||
auto& socket = *socket_description->socket();
|
auto& socket = *socket_description->socket();
|
||||||
|
@ -23,7 +23,7 @@ KResultOr<FlatPtr> Process::sys$sendfd(int sockfd, int fd)
|
||||||
if (!socket.is_connected())
|
if (!socket.is_connected())
|
||||||
return ENOTCONN;
|
return ENOTCONN;
|
||||||
|
|
||||||
auto passing_descriptor = TRY(fds().file_description(fd));
|
auto passing_descriptor = TRY(fds().open_file_description(fd));
|
||||||
auto& local_socket = static_cast<LocalSocket&>(socket);
|
auto& local_socket = static_cast<LocalSocket&>(socket);
|
||||||
return local_socket.sendfd(*socket_description, *passing_descriptor);
|
return local_socket.sendfd(*socket_description, *passing_descriptor);
|
||||||
}
|
}
|
||||||
|
@ -32,7 +32,7 @@ KResultOr<FlatPtr> Process::sys$recvfd(int sockfd, int options)
|
||||||
{
|
{
|
||||||
VERIFY_PROCESS_BIG_LOCK_ACQUIRED(this)
|
VERIFY_PROCESS_BIG_LOCK_ACQUIRED(this)
|
||||||
REQUIRE_PROMISE(recvfd);
|
REQUIRE_PROMISE(recvfd);
|
||||||
auto socket_description = TRY(fds().file_description(sockfd));
|
auto socket_description = TRY(fds().open_file_description(sockfd));
|
||||||
if (!socket_description->is_socket())
|
if (!socket_description->is_socket())
|
||||||
return ENOTSOCK;
|
return ENOTSOCK;
|
||||||
auto& socket = *socket_description->socket();
|
auto& socket = *socket_description->socket();
|
||||||
|
|
|
@ -48,7 +48,7 @@ KResultOr<FlatPtr> Process::sys$socket(int domain, int type, int protocol)
|
||||||
KResultOr<FlatPtr> Process::sys$bind(int sockfd, Userspace<const sockaddr*> address, socklen_t address_length)
|
KResultOr<FlatPtr> Process::sys$bind(int sockfd, Userspace<const sockaddr*> address, socklen_t address_length)
|
||||||
{
|
{
|
||||||
VERIFY_PROCESS_BIG_LOCK_ACQUIRED(this)
|
VERIFY_PROCESS_BIG_LOCK_ACQUIRED(this)
|
||||||
auto description = TRY(fds().file_description(sockfd));
|
auto description = TRY(fds().open_file_description(sockfd));
|
||||||
if (!description->is_socket())
|
if (!description->is_socket())
|
||||||
return ENOTSOCK;
|
return ENOTSOCK;
|
||||||
auto& socket = *description->socket();
|
auto& socket = *description->socket();
|
||||||
|
@ -61,7 +61,7 @@ KResultOr<FlatPtr> Process::sys$listen(int sockfd, int backlog)
|
||||||
VERIFY_PROCESS_BIG_LOCK_ACQUIRED(this)
|
VERIFY_PROCESS_BIG_LOCK_ACQUIRED(this)
|
||||||
if (backlog < 0)
|
if (backlog < 0)
|
||||||
return EINVAL;
|
return EINVAL;
|
||||||
auto description = TRY(fds().file_description(sockfd));
|
auto description = TRY(fds().open_file_description(sockfd));
|
||||||
if (!description->is_socket())
|
if (!description->is_socket())
|
||||||
return ENOTSOCK;
|
return ENOTSOCK;
|
||||||
auto& socket = *description->socket();
|
auto& socket = *description->socket();
|
||||||
|
@ -88,7 +88,7 @@ KResultOr<FlatPtr> Process::sys$accept4(Userspace<const Syscall::SC_accept4_para
|
||||||
}
|
}
|
||||||
|
|
||||||
auto fd_allocation = TRY(m_fds.allocate());
|
auto fd_allocation = TRY(m_fds.allocate());
|
||||||
auto accepting_socket_description = TRY(fds().file_description(accepting_socket_fd));
|
auto accepting_socket_description = TRY(fds().open_file_description(accepting_socket_fd));
|
||||||
if (!accepting_socket_description->is_socket())
|
if (!accepting_socket_description->is_socket())
|
||||||
return ENOTSOCK;
|
return ENOTSOCK;
|
||||||
auto& socket = *accepting_socket_description->socket();
|
auto& socket = *accepting_socket_description->socket();
|
||||||
|
@ -132,7 +132,7 @@ KResultOr<FlatPtr> Process::sys$accept4(Userspace<const Syscall::SC_accept4_para
|
||||||
KResultOr<FlatPtr> Process::sys$connect(int sockfd, Userspace<const sockaddr*> user_address, socklen_t user_address_size)
|
KResultOr<FlatPtr> Process::sys$connect(int sockfd, Userspace<const sockaddr*> user_address, socklen_t user_address_size)
|
||||||
{
|
{
|
||||||
VERIFY_PROCESS_BIG_LOCK_ACQUIRED(this)
|
VERIFY_PROCESS_BIG_LOCK_ACQUIRED(this)
|
||||||
auto description = TRY(fds().file_description(sockfd));
|
auto description = TRY(fds().open_file_description(sockfd));
|
||||||
if (!description->is_socket())
|
if (!description->is_socket())
|
||||||
return ENOTSOCK;
|
return ENOTSOCK;
|
||||||
auto& socket = *description->socket();
|
auto& socket = *description->socket();
|
||||||
|
@ -146,7 +146,7 @@ KResultOr<FlatPtr> Process::sys$shutdown(int sockfd, int how)
|
||||||
REQUIRE_PROMISE(stdio);
|
REQUIRE_PROMISE(stdio);
|
||||||
if (how & ~SHUT_RDWR)
|
if (how & ~SHUT_RDWR)
|
||||||
return EINVAL;
|
return EINVAL;
|
||||||
auto description = TRY(fds().file_description(sockfd));
|
auto description = TRY(fds().open_file_description(sockfd));
|
||||||
if (!description->is_socket())
|
if (!description->is_socket())
|
||||||
return ENOTSOCK;
|
return ENOTSOCK;
|
||||||
auto& socket = *description->socket();
|
auto& socket = *description->socket();
|
||||||
|
@ -173,7 +173,7 @@ KResultOr<FlatPtr> Process::sys$sendmsg(int sockfd, Userspace<const struct msghd
|
||||||
Userspace<const sockaddr*> user_addr((FlatPtr)msg.msg_name);
|
Userspace<const sockaddr*> user_addr((FlatPtr)msg.msg_name);
|
||||||
socklen_t addr_length = msg.msg_namelen;
|
socklen_t addr_length = msg.msg_namelen;
|
||||||
|
|
||||||
auto description = TRY(fds().file_description(sockfd));
|
auto description = TRY(fds().open_file_description(sockfd));
|
||||||
if (!description->is_socket())
|
if (!description->is_socket())
|
||||||
return ENOTSOCK;
|
return ENOTSOCK;
|
||||||
auto& socket = *description->socket();
|
auto& socket = *description->socket();
|
||||||
|
@ -207,7 +207,7 @@ KResultOr<FlatPtr> Process::sys$recvmsg(int sockfd, Userspace<struct msghdr*> us
|
||||||
Userspace<sockaddr*> user_addr((FlatPtr)msg.msg_name);
|
Userspace<sockaddr*> user_addr((FlatPtr)msg.msg_name);
|
||||||
Userspace<socklen_t*> user_addr_length(msg.msg_name ? (FlatPtr)&user_msg.unsafe_userspace_ptr()->msg_namelen : 0);
|
Userspace<socklen_t*> user_addr_length(msg.msg_name ? (FlatPtr)&user_msg.unsafe_userspace_ptr()->msg_namelen : 0);
|
||||||
|
|
||||||
auto description = TRY(fds().file_description(sockfd));
|
auto description = TRY(fds().open_file_description(sockfd));
|
||||||
if (!description->is_socket())
|
if (!description->is_socket())
|
||||||
return ENOTSOCK;
|
return ENOTSOCK;
|
||||||
auto& socket = *description->socket();
|
auto& socket = *description->socket();
|
||||||
|
@ -265,7 +265,7 @@ KResult Process::get_sock_or_peer_name(const Params& params)
|
||||||
if (addrlen_value <= 0)
|
if (addrlen_value <= 0)
|
||||||
return EINVAL;
|
return EINVAL;
|
||||||
|
|
||||||
auto description = TRY(fds().file_description(params.sockfd));
|
auto description = TRY(fds().open_file_description(params.sockfd));
|
||||||
if (!description->is_socket())
|
if (!description->is_socket())
|
||||||
return ENOTSOCK;
|
return ENOTSOCK;
|
||||||
|
|
||||||
|
@ -310,7 +310,7 @@ KResultOr<FlatPtr> Process::sys$getsockopt(Userspace<const Syscall::SC_getsockop
|
||||||
socklen_t value_size;
|
socklen_t value_size;
|
||||||
TRY(copy_from_user(&value_size, params.value_size, sizeof(socklen_t)));
|
TRY(copy_from_user(&value_size, params.value_size, sizeof(socklen_t)));
|
||||||
|
|
||||||
auto description = TRY(fds().file_description(sockfd));
|
auto description = TRY(fds().open_file_description(sockfd));
|
||||||
if (!description->is_socket())
|
if (!description->is_socket())
|
||||||
return ENOTSOCK;
|
return ENOTSOCK;
|
||||||
auto& socket = *description->socket();
|
auto& socket = *description->socket();
|
||||||
|
@ -324,7 +324,7 @@ KResultOr<FlatPtr> Process::sys$setsockopt(Userspace<const Syscall::SC_setsockop
|
||||||
auto params = TRY(copy_typed_from_user(user_params));
|
auto params = TRY(copy_typed_from_user(user_params));
|
||||||
|
|
||||||
Userspace<const void*> user_value((FlatPtr)params.value);
|
Userspace<const void*> user_value((FlatPtr)params.value);
|
||||||
auto description = TRY(fds().file_description(params.sockfd));
|
auto description = TRY(fds().open_file_description(params.sockfd));
|
||||||
if (!description->is_socket())
|
if (!description->is_socket())
|
||||||
return ENOTSOCK;
|
return ENOTSOCK;
|
||||||
auto& socket = *description->socket();
|
auto& socket = *description->socket();
|
||||||
|
|
|
@ -15,7 +15,7 @@ KResultOr<FlatPtr> Process::sys$fstat(int fd, Userspace<stat*> user_statbuf)
|
||||||
{
|
{
|
||||||
VERIFY_PROCESS_BIG_LOCK_ACQUIRED(this)
|
VERIFY_PROCESS_BIG_LOCK_ACQUIRED(this)
|
||||||
REQUIRE_PROMISE(stdio);
|
REQUIRE_PROMISE(stdio);
|
||||||
auto description = TRY(fds().file_description(fd));
|
auto description = TRY(fds().open_file_description(fd));
|
||||||
stat buffer = {};
|
stat buffer = {};
|
||||||
TRY(description->stat(buffer));
|
TRY(description->stat(buffer));
|
||||||
return copy_to_user(user_statbuf, &buffer);
|
return copy_to_user(user_statbuf, &buffer);
|
||||||
|
@ -33,7 +33,7 @@ KResultOr<FlatPtr> Process::sys$stat(Userspace<const Syscall::SC_stat_params*> u
|
||||||
if (params.dirfd == AT_FDCWD) {
|
if (params.dirfd == AT_FDCWD) {
|
||||||
base = current_directory();
|
base = current_directory();
|
||||||
} else {
|
} else {
|
||||||
auto base_description = TRY(fds().file_description(params.dirfd));
|
auto base_description = TRY(fds().open_file_description(params.dirfd));
|
||||||
if (!base_description->is_directory())
|
if (!base_description->is_directory())
|
||||||
return ENOTDIR;
|
return ENOTDIR;
|
||||||
if (!base_description->custody())
|
if (!base_description->custody())
|
||||||
|
|
|
@ -76,7 +76,7 @@ KResultOr<FlatPtr> Process::sys$fstatvfs(int fd, statvfs* buf)
|
||||||
VERIFY_PROCESS_BIG_LOCK_ACQUIRED(this)
|
VERIFY_PROCESS_BIG_LOCK_ACQUIRED(this)
|
||||||
REQUIRE_PROMISE(stdio);
|
REQUIRE_PROMISE(stdio);
|
||||||
|
|
||||||
auto description = TRY(fds().file_description(fd));
|
auto description = TRY(fds().open_file_description(fd));
|
||||||
return do_statvfs(description->absolute_path(), buf);
|
return do_statvfs(description->absolute_path(), buf);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -15,7 +15,7 @@ KResultOr<FlatPtr> Process::sys$ttyname(int fd, Userspace<char*> buffer, size_t
|
||||||
{
|
{
|
||||||
VERIFY_PROCESS_BIG_LOCK_ACQUIRED(this)
|
VERIFY_PROCESS_BIG_LOCK_ACQUIRED(this)
|
||||||
REQUIRE_PROMISE(tty);
|
REQUIRE_PROMISE(tty);
|
||||||
auto description = TRY(fds().file_description(fd));
|
auto description = TRY(fds().open_file_description(fd));
|
||||||
if (!description->is_tty())
|
if (!description->is_tty())
|
||||||
return ENOTTY;
|
return ENOTTY;
|
||||||
auto tty_name = description->tty()->tty_name();
|
auto tty_name = description->tty()->tty_name();
|
||||||
|
@ -28,7 +28,7 @@ KResultOr<FlatPtr> Process::sys$ptsname(int fd, Userspace<char*> buffer, size_t
|
||||||
{
|
{
|
||||||
VERIFY_PROCESS_BIG_LOCK_ACQUIRED(this)
|
VERIFY_PROCESS_BIG_LOCK_ACQUIRED(this)
|
||||||
REQUIRE_PROMISE(tty);
|
REQUIRE_PROMISE(tty);
|
||||||
auto description = TRY(fds().file_description(fd));
|
auto description = TRY(fds().open_file_description(fd));
|
||||||
auto* master_pty = description->master_pty();
|
auto* master_pty = description->master_pty();
|
||||||
if (!master_pty)
|
if (!master_pty)
|
||||||
return ENOTTY;
|
return ENOTTY;
|
||||||
|
|
|
@ -33,7 +33,7 @@ KResultOr<FlatPtr> Process::sys$writev(int fd, Userspace<const struct iovec*> io
|
||||||
return EINVAL;
|
return EINVAL;
|
||||||
}
|
}
|
||||||
|
|
||||||
auto description = TRY(fds().file_description(fd));
|
auto description = TRY(fds().open_file_description(fd));
|
||||||
if (!description->is_writable())
|
if (!description->is_writable())
|
||||||
return EBADF;
|
return EBADF;
|
||||||
|
|
||||||
|
@ -101,7 +101,7 @@ KResultOr<FlatPtr> Process::sys$write(int fd, Userspace<const u8*> data, size_t
|
||||||
return EINVAL;
|
return EINVAL;
|
||||||
|
|
||||||
dbgln_if(IO_DEBUG, "sys$write({}, {}, {})", fd, data.ptr(), size);
|
dbgln_if(IO_DEBUG, "sys$write({}, {}, {})", fd, data.ptr(), size);
|
||||||
auto description = TRY(fds().file_description(fd));
|
auto description = TRY(fds().open_file_description(fd));
|
||||||
if (!description->is_writable())
|
if (!description->is_writable())
|
||||||
return EBADF;
|
return EBADF;
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue