mirror of
https://github.com/genodelabs/genode.git
synced 2025-06-21 00:23:16 +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
@ -117,16 +117,19 @@ class Terminal::Session_component : public Rpc_object<Session, Session_component
|
||||
|
||||
size_t _read(size_t dst_len) { return 0; }
|
||||
|
||||
void _write(Genode::size_t num_bytes)
|
||||
size_t _write(Genode::size_t num_bytes)
|
||||
{
|
||||
/* sanitize argument */
|
||||
num_bytes = Genode::min(num_bytes, _io_buffer.size());
|
||||
|
||||
char const *src = _io_buffer.local_addr<char>();
|
||||
|
||||
for (size_t written_bytes = 0; written_bytes < num_bytes; )
|
||||
size_t written_bytes;
|
||||
for (written_bytes = 0; written_bytes < num_bytes; )
|
||||
written_bytes += _output.write(src + written_bytes,
|
||||
num_bytes - written_bytes);
|
||||
|
||||
return written_bytes;
|
||||
}
|
||||
|
||||
Dataspace_capability _dataspace() { return _io_buffer.cap(); }
|
||||
|
Reference in New Issue
Block a user