SlavePTY.cpp 802 B

123456789101112131415161718192021222324252627282930313233343536373839
  1. #include "SlavePTY.h"
  2. #include "MasterPTY.h"
  3. #include "DevPtsFS.h"
  4. SlavePTY::SlavePTY(MasterPTY& master, unsigned index)
  5. : TTY(11, index)
  6. , m_master(master)
  7. , m_index(index)
  8. {
  9. VFS::the().register_character_device(*this);
  10. DevPtsFS::the().register_slave_pty(*this);
  11. set_size(80, 25);
  12. }
  13. SlavePTY::~SlavePTY()
  14. {
  15. DevPtsFS::the().unregister_slave_pty(*this);
  16. }
  17. String SlavePTY::tty_name() const
  18. {
  19. return String::format("/dev/pts/%u", m_index);
  20. }
  21. void SlavePTY::on_master_write(const byte* buffer, size_t size)
  22. {
  23. for (size_t i = 0; i < size; ++i)
  24. emit(buffer[i]);
  25. }
  26. void SlavePTY::on_tty_write(const byte* data, size_t size)
  27. {
  28. m_master.on_slave_write(data, size);
  29. }
  30. bool SlavePTY::can_write(Process&) const
  31. {
  32. return m_master.can_write_from_slave();
  33. }