mirror of
https://github.com/RGBCube/serenity
synced 2025-07-27 03:37:45 +00:00
Kernel: Add explicit offset parameter to File::read etc
This commit is contained in:
parent
68c7ca7d3b
commit
a3edeb5868
45 changed files with 199 additions and 183 deletions
|
@ -168,7 +168,7 @@ void IPv4Socket::detach(FileDescription&)
|
|||
{
|
||||
}
|
||||
|
||||
bool IPv4Socket::can_read(const FileDescription&) const
|
||||
bool IPv4Socket::can_read(const FileDescription&, size_t) const
|
||||
{
|
||||
if (m_role == Role::Listener)
|
||||
return can_accept();
|
||||
|
@ -177,7 +177,7 @@ bool IPv4Socket::can_read(const FileDescription&) const
|
|||
return m_can_read;
|
||||
}
|
||||
|
||||
bool IPv4Socket::can_write(const FileDescription&) const
|
||||
bool IPv4Socket::can_write(const FileDescription&, size_t) const
|
||||
{
|
||||
return is_connected();
|
||||
}
|
||||
|
|
|
@ -56,8 +56,8 @@ public:
|
|||
virtual void get_peer_address(sockaddr*, socklen_t*) override;
|
||||
virtual void attach(FileDescription&) override;
|
||||
virtual void detach(FileDescription&) override;
|
||||
virtual bool can_read(const FileDescription&) const override;
|
||||
virtual bool can_write(const FileDescription&) const override;
|
||||
virtual bool can_read(const FileDescription&, size_t) const override;
|
||||
virtual bool can_write(const FileDescription&, size_t) const override;
|
||||
virtual ssize_t sendto(FileDescription&, const void*, size_t, int, const sockaddr*, socklen_t) override;
|
||||
virtual ssize_t recvfrom(FileDescription&, void*, size_t, int flags, sockaddr*, socklen_t*) override;
|
||||
virtual KResult setsockopt(int level, int option, const void*, socklen_t) override;
|
||||
|
|
|
@ -227,7 +227,7 @@ void LocalSocket::detach(FileDescription& description)
|
|||
}
|
||||
}
|
||||
|
||||
bool LocalSocket::can_read(const FileDescription& description) const
|
||||
bool LocalSocket::can_read(const FileDescription& description, size_t) const
|
||||
{
|
||||
auto role = this->role(description);
|
||||
if (role == Role::Listener)
|
||||
|
@ -249,7 +249,7 @@ bool LocalSocket::has_attached_peer(const FileDescription& description) const
|
|||
ASSERT_NOT_REACHED();
|
||||
}
|
||||
|
||||
bool LocalSocket::can_write(const FileDescription& description) const
|
||||
bool LocalSocket::can_write(const FileDescription& description, size_t) const
|
||||
{
|
||||
auto role = this->role(description);
|
||||
if (role == Role::Accepted)
|
||||
|
@ -298,7 +298,7 @@ ssize_t LocalSocket::recvfrom(FileDescription& description, void* buffer, size_t
|
|||
return 0;
|
||||
return -EAGAIN;
|
||||
}
|
||||
} else if (!can_read(description)) {
|
||||
} else if (!can_read(description, 0)) {
|
||||
auto result = Thread::current->block<Thread::ReadBlocker>(description);
|
||||
if (result != Thread::BlockResult::WokeNormally)
|
||||
return -EINTR;
|
||||
|
|
|
@ -55,8 +55,8 @@ public:
|
|||
virtual void get_peer_address(sockaddr*, socklen_t*) override;
|
||||
virtual void attach(FileDescription&) override;
|
||||
virtual void detach(FileDescription&) override;
|
||||
virtual bool can_read(const FileDescription&) const override;
|
||||
virtual bool can_write(const FileDescription&) const override;
|
||||
virtual bool can_read(const FileDescription&, size_t) const override;
|
||||
virtual bool can_write(const FileDescription&, size_t) const override;
|
||||
virtual ssize_t sendto(FileDescription&, const void*, size_t, int, const sockaddr*, socklen_t) override;
|
||||
virtual ssize_t recvfrom(FileDescription&, void*, size_t, int flags, sockaddr*, socklen_t*) override;
|
||||
virtual KResult getsockopt(FileDescription&, int level, int option, void*, socklen_t*) override;
|
||||
|
|
|
@ -176,14 +176,14 @@ KResult Socket::getsockopt(FileDescription&, int level, int option, void* value,
|
|||
}
|
||||
}
|
||||
|
||||
ssize_t Socket::read(FileDescription& description, u8* buffer, ssize_t size)
|
||||
ssize_t Socket::read(FileDescription& description, size_t, u8* buffer, ssize_t size)
|
||||
{
|
||||
if (is_shut_down_for_reading())
|
||||
return 0;
|
||||
return recvfrom(description, buffer, size, 0, nullptr, 0);
|
||||
}
|
||||
|
||||
ssize_t Socket::write(FileDescription& description, const u8* data, ssize_t size)
|
||||
ssize_t Socket::write(FileDescription& description, size_t, const u8* data, ssize_t size)
|
||||
{
|
||||
if (is_shut_down_for_writing())
|
||||
return -EPIPE;
|
||||
|
|
|
@ -124,8 +124,8 @@ public:
|
|||
Lock& lock() { return m_lock; }
|
||||
|
||||
// ^File
|
||||
virtual ssize_t read(FileDescription&, u8*, ssize_t) override final;
|
||||
virtual ssize_t write(FileDescription&, const u8*, ssize_t) override final;
|
||||
virtual ssize_t read(FileDescription&, size_t, u8*, ssize_t) override final;
|
||||
virtual ssize_t write(FileDescription&, size_t, const u8*, ssize_t) override final;
|
||||
virtual String absolute_path(const FileDescription&) const override = 0;
|
||||
|
||||
bool has_receive_timeout() const { return m_receive_timeout.tv_sec || m_receive_timeout.tv_usec; }
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue