Support for suspendable read in VFS and libC

The support has two parts. First, a VFS plugin now gets passed an
I/O-response handler callback on construction, which informs users of the
VFS that an I/O event occurred. This enables, for example, the libC to
check if blocking read can be completed. Further, the VFS file I/O
interface provides now functions for suspendable reads, i.e.,
queue_read() and complete_read().
This commit is contained in:
Christian Helmuth
2017-01-31 16:38:23 +01:00
committed by Norman Feske
parent e5d6c06f58
commit c0d61858c3
25 changed files with 199 additions and 71 deletions

View File

@ -153,16 +153,17 @@ class Vfs::Fs_file_system : public File_system
Fs_file_system(Genode::Env &env,
Genode::Allocator &alloc,
Genode::Xml_node config)
Genode::Xml_node config,
Io_response_handler &)
:
_env(env),
_fs_packet_alloc(&alloc),
_label(config.attribute_value("label", Label_string())),
_root( config.attribute_value("root", Root_string())),
_fs(_fs_packet_alloc,
::File_system::DEFAULT_TX_BUF_SIZE,
_fs(env, _fs_packet_alloc,
_label.string(), _root.string(),
config.attribute_value("writeable", true))
config.attribute_value("writeable", true),
::File_system::DEFAULT_TX_BUF_SIZE)
{ }