mirror of
https://github.com/RGBCube/serenity
synced 2025-07-25 04:07:44 +00:00
Let the slave PTY keep the master PTY alive.
This ownership model is a bit confusing. There's a retain cycle between MasterPTY and SlavePTY, but it's broken when the SlavePTY is closed, meaning that there are no more FileDescriptors referring to it.
This commit is contained in:
parent
45fba60ab5
commit
2b4374d08e
4 changed files with 7 additions and 4 deletions
|
@ -14,6 +14,7 @@ SlavePTY::SlavePTY(MasterPTY& master, unsigned index)
|
|||
|
||||
SlavePTY::~SlavePTY()
|
||||
{
|
||||
dbgprintf("~SlavePTY(%u)\n", m_index);
|
||||
DevPtsFS::the().unregister_slave_pty(*this);
|
||||
VFS::the().unregister_character_device(*this);
|
||||
}
|
||||
|
@ -31,15 +32,15 @@ void SlavePTY::on_master_write(const byte* buffer, size_t size)
|
|||
|
||||
void SlavePTY::on_tty_write(const byte* data, size_t size)
|
||||
{
|
||||
m_master.on_slave_write(data, size);
|
||||
m_master->on_slave_write(data, size);
|
||||
}
|
||||
|
||||
bool SlavePTY::can_write(Process&) const
|
||||
{
|
||||
return m_master.can_write_from_slave();
|
||||
return m_master->can_write_from_slave();
|
||||
}
|
||||
|
||||
void SlavePTY::close()
|
||||
{
|
||||
m_master.notify_slave_closed(Badge<SlavePTY>());
|
||||
m_master->notify_slave_closed(Badge<SlavePTY>());
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue