mirror of
https://github.com/genodelabs/genode.git
synced 2025-06-19 15:43:56 +00:00
terminal session: return number of bytes written
To better support non-blocking terminal components, let the 'Terminal::Session::write()' function return the number of bytes actually written. Fixes #2240
This commit is contained in:
committed by
Norman Feske
parent
9f7a4feab4
commit
dbb641d44a
@ -277,14 +277,15 @@ class Terminal::Session_component : public Rpc_object<Session, Session_component
|
||||
return num_bytes;
|
||||
}
|
||||
|
||||
void _write(size_t num_bytes)
|
||||
size_t _write(size_t num_bytes)
|
||||
{
|
||||
char *dst = _io_buffer.local_addr<char>();
|
||||
while (num_bytes) {
|
||||
size_t size = _driver.write(dst, num_bytes);
|
||||
num_bytes -= size;
|
||||
dst += size;
|
||||
size_t written_bytes;
|
||||
for (written_bytes = 0; written_bytes < num_bytes; ) {
|
||||
written_bytes += _driver.write(dst + written_bytes,
|
||||
num_bytes - written_bytes);
|
||||
}
|
||||
return written_bytes;
|
||||
}
|
||||
|
||||
Dataspace_capability _dataspace() { return _io_buffer.cap(); }
|
||||
|
Reference in New Issue
Block a user