mirror of
https://github.com/RGBCube/serenity
synced 2025-07-27 10: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
|
@ -59,14 +59,14 @@ String MasterPTY::pts_name() const
|
|||
return m_pts_name;
|
||||
}
|
||||
|
||||
ssize_t MasterPTY::read(FileDescription&, u8* buffer, ssize_t size)
|
||||
ssize_t MasterPTY::read(FileDescription&, size_t, u8* buffer, ssize_t size)
|
||||
{
|
||||
if (!m_slave && m_buffer.is_empty())
|
||||
return 0;
|
||||
return m_buffer.read(buffer, size);
|
||||
}
|
||||
|
||||
ssize_t MasterPTY::write(FileDescription&, const u8* buffer, ssize_t size)
|
||||
ssize_t MasterPTY::write(FileDescription&, size_t, const u8* buffer, ssize_t size)
|
||||
{
|
||||
if (!m_slave)
|
||||
return -EIO;
|
||||
|
@ -74,14 +74,14 @@ ssize_t MasterPTY::write(FileDescription&, const u8* buffer, ssize_t size)
|
|||
return size;
|
||||
}
|
||||
|
||||
bool MasterPTY::can_read(const FileDescription&) const
|
||||
bool MasterPTY::can_read(const FileDescription&, size_t) const
|
||||
{
|
||||
if (!m_slave)
|
||||
return true;
|
||||
return !m_buffer.is_empty();
|
||||
}
|
||||
|
||||
bool MasterPTY::can_write(const FileDescription&) const
|
||||
bool MasterPTY::can_write(const FileDescription&, size_t) const
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
|
|
@ -50,10 +50,10 @@ public:
|
|||
|
||||
private:
|
||||
// ^CharacterDevice
|
||||
virtual ssize_t read(FileDescription&, u8*, ssize_t) override;
|
||||
virtual ssize_t write(FileDescription&, const u8*, ssize_t) override;
|
||||
virtual bool can_read(const FileDescription&) const override;
|
||||
virtual bool can_write(const FileDescription&) const override;
|
||||
virtual ssize_t read(FileDescription&, size_t, u8*, ssize_t) override;
|
||||
virtual ssize_t write(FileDescription&, size_t, const u8*, ssize_t) override;
|
||||
virtual bool can_read(const FileDescription&, size_t) const override;
|
||||
virtual bool can_write(const FileDescription&, size_t) const override;
|
||||
virtual void close() override;
|
||||
virtual bool is_master_pty() const override { return true; }
|
||||
virtual int ioctl(FileDescription&, unsigned request, unsigned arg) override;
|
||||
|
|
|
@ -44,10 +44,10 @@ public:
|
|||
|
||||
// ^CharacterDevice
|
||||
virtual KResultOr<NonnullRefPtr<FileDescription>> open(int options) override;
|
||||
virtual ssize_t read(FileDescription&, u8*, ssize_t) override { return 0; }
|
||||
virtual ssize_t write(FileDescription&, const u8*, ssize_t) override { return 0; }
|
||||
virtual bool can_read(const FileDescription&) const override { return true; }
|
||||
virtual bool can_write(const FileDescription&) const override { return true; }
|
||||
virtual ssize_t read(FileDescription&, size_t, u8*, ssize_t) override { return 0; }
|
||||
virtual ssize_t write(FileDescription&, size_t, const u8*, ssize_t) override { return 0; }
|
||||
virtual bool can_read(const FileDescription&, size_t) const override { return true; }
|
||||
virtual bool can_write(const FileDescription&, size_t) const override { return true; }
|
||||
|
||||
void notify_master_destroyed(Badge<MasterPTY>, unsigned index);
|
||||
|
||||
|
|
|
@ -76,23 +76,23 @@ ssize_t SlavePTY::on_tty_write(const u8* data, ssize_t size)
|
|||
return m_master->on_slave_write(data, size);
|
||||
}
|
||||
|
||||
bool SlavePTY::can_write(const FileDescription&) const
|
||||
bool SlavePTY::can_write(const FileDescription&, size_t) const
|
||||
{
|
||||
return m_master->can_write_from_slave();
|
||||
}
|
||||
|
||||
bool SlavePTY::can_read(const FileDescription& description) const
|
||||
bool SlavePTY::can_read(const FileDescription& description, size_t offset) const
|
||||
{
|
||||
if (m_master->is_closed())
|
||||
return true;
|
||||
return TTY::can_read(description);
|
||||
return TTY::can_read(description, offset);
|
||||
}
|
||||
|
||||
ssize_t SlavePTY::read(FileDescription& description, u8* buffer, ssize_t size)
|
||||
ssize_t SlavePTY::read(FileDescription& description, size_t offset, u8* buffer, ssize_t size)
|
||||
{
|
||||
if (m_master->is_closed())
|
||||
return 0;
|
||||
return TTY::read(description, buffer, size);
|
||||
return TTY::read(description, offset, buffer, size);
|
||||
}
|
||||
|
||||
void SlavePTY::close()
|
||||
|
|
|
@ -47,9 +47,9 @@ private:
|
|||
virtual void echo(u8) override;
|
||||
|
||||
// ^CharacterDevice
|
||||
virtual bool can_read(const FileDescription&) const override;
|
||||
virtual ssize_t read(FileDescription&, u8*, ssize_t) override;
|
||||
virtual bool can_write(const FileDescription&) const override;
|
||||
virtual bool can_read(const FileDescription&, size_t) const override;
|
||||
virtual ssize_t read(FileDescription&, size_t, u8*, ssize_t) override;
|
||||
virtual bool can_write(const FileDescription&, size_t) const override;
|
||||
virtual const char* class_name() const override { return "SlavePTY"; }
|
||||
virtual void close() override;
|
||||
|
||||
|
|
|
@ -52,7 +52,7 @@ void TTY::set_default_termios()
|
|||
memcpy(m_termios.c_cc, default_cc, sizeof(default_cc));
|
||||
}
|
||||
|
||||
ssize_t TTY::read(FileDescription&, u8* buffer, ssize_t size)
|
||||
ssize_t TTY::read(FileDescription&, size_t, u8* buffer, ssize_t size)
|
||||
{
|
||||
ASSERT(size >= 0);
|
||||
|
||||
|
@ -85,7 +85,7 @@ ssize_t TTY::read(FileDescription&, u8* buffer, ssize_t size)
|
|||
return size;
|
||||
}
|
||||
|
||||
ssize_t TTY::write(FileDescription&, const u8* buffer, ssize_t size)
|
||||
ssize_t TTY::write(FileDescription&, size_t, const u8* buffer, ssize_t size)
|
||||
{
|
||||
#ifdef TTY_DEBUG
|
||||
dbg() << "TTY::write {" << String::format("%u", size) << "} ";
|
||||
|
@ -98,7 +98,7 @@ ssize_t TTY::write(FileDescription&, const u8* buffer, ssize_t size)
|
|||
return size;
|
||||
}
|
||||
|
||||
bool TTY::can_read(const FileDescription&) const
|
||||
bool TTY::can_read(const FileDescription&, size_t) const
|
||||
{
|
||||
if (in_canonical_mode()) {
|
||||
return m_available_lines > 0;
|
||||
|
@ -106,7 +106,7 @@ bool TTY::can_read(const FileDescription&) const
|
|||
return !m_input_buffer.is_empty();
|
||||
}
|
||||
|
||||
bool TTY::can_write(const FileDescription&) const
|
||||
bool TTY::can_write(const FileDescription&, size_t) const
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
|
|
@ -39,10 +39,10 @@ class TTY : public CharacterDevice {
|
|||
public:
|
||||
virtual ~TTY() override;
|
||||
|
||||
virtual ssize_t read(FileDescription&, u8*, ssize_t) override;
|
||||
virtual ssize_t write(FileDescription&, const u8*, ssize_t) override;
|
||||
virtual bool can_read(const FileDescription&) const override;
|
||||
virtual bool can_write(const FileDescription&) const override;
|
||||
virtual ssize_t read(FileDescription&, size_t, u8*, ssize_t) override;
|
||||
virtual ssize_t write(FileDescription&, size_t, const u8*, ssize_t) override;
|
||||
virtual bool can_read(const FileDescription&, size_t) const override;
|
||||
virtual bool can_write(const FileDescription&, size_t) const override;
|
||||
virtual int ioctl(FileDescription&, unsigned request, unsigned arg) override final;
|
||||
virtual String absolute_path(const FileDescription&) const override { return tty_name(); }
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue