mirror of
https://github.com/RGBCube/serenity
synced 2025-05-18 21:25:07 +00:00
Add some simple write buffering to LibC's stdio.
Plumb it all the way to the VirtualConsole. Also fix /bin/cat to write() the whole chunks we get from read() directly to stdout.
This commit is contained in:
parent
e287f8ef3a
commit
da3857b0c2
10 changed files with 42 additions and 22 deletions
|
@ -320,7 +320,6 @@ void VirtualConsole::put_character_at(unsigned row, unsigned column, byte ch)
|
|||
|
||||
void VirtualConsole::on_char(byte ch, bool shouldEmit)
|
||||
{
|
||||
InterruptDisabler disabler;
|
||||
if (shouldEmit)
|
||||
emit(ch);
|
||||
|
||||
|
@ -397,15 +396,18 @@ void VirtualConsole::onKeyPress(Keyboard::Key key)
|
|||
|
||||
void VirtualConsole::onConsoleReceive(byte ch)
|
||||
{
|
||||
InterruptDisabler disabler;
|
||||
auto old_attribute = m_current_attribute;
|
||||
m_current_attribute = 0x03;
|
||||
on_char(ch, false);
|
||||
m_current_attribute = old_attribute;
|
||||
}
|
||||
|
||||
void VirtualConsole::onTTYWrite(byte ch)
|
||||
void VirtualConsole::onTTYWrite(const byte* data, size_t size)
|
||||
{
|
||||
on_char(ch, false);
|
||||
InterruptDisabler disabler;
|
||||
for (size_t i = 0; i < size; ++i)
|
||||
on_char(data[i], false);
|
||||
}
|
||||
|
||||
String VirtualConsole::ttyName() const
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue