diff --git a/repos/gems/src/server/file_terminal/main.cc b/repos/gems/src/server/file_terminal/main.cc index 8fb52af930..02ae698c63 100644 --- a/repos/gems/src/server/file_terminal/main.cc +++ b/repos/gems/src/server/file_terminal/main.cc @@ -12,11 +12,12 @@ */ /* Genode includes */ -#include #include #include #include +#include #include +#include #include #include @@ -224,7 +225,8 @@ namespace Terminal { { private: - Genode::Env &_env; + Genode::Env &_env; + Genode::Xml_node _config; protected: @@ -234,7 +236,7 @@ namespace Terminal { try { Genode::Session_label label = Genode::label_from_args(args); - Genode::Session_policy policy(label); + Genode::Session_policy policy(label, _config); char filename[256]; policy.attribute("filename").value(filename, sizeof(filename)); @@ -260,10 +262,11 @@ namespace Terminal { * Constructor */ Root_component(Genode::Env &env, + Genode::Xml_node config, Genode::Allocator *md_alloc) : Genode::Root_component(&env.ep().rpc_ep(), md_alloc), - _env(env) + _env(env), _config(config) { } }; } @@ -273,10 +276,13 @@ struct Main { Genode::Env &_env; + Genode::Attached_rom_dataspace _config_rom { _env, "config" }; + Genode::Xml_node _config { _config_rom.xml() }; + Genode::Sliced_heap _sliced_heap { _env.ram(), _env.rm() }; /* create root interface for service */ - Terminal::Root_component _root { _env, &_sliced_heap }; + Terminal::Root_component _root { _env, _config, &_sliced_heap }; Main(Genode::Env &env) : _env(env) { diff --git a/repos/gems/src/server/tcp_terminal/main.cc b/repos/gems/src/server/tcp_terminal/main.cc index 3d0562ddc9..3d42548c61 100644 --- a/repos/gems/src/server/tcp_terminal/main.cc +++ b/repos/gems/src/server/tcp_terminal/main.cc @@ -20,6 +20,7 @@ #include #include #include +#include #include #include @@ -502,6 +503,7 @@ class Terminal::Root_component : public Genode::Root_component(&env.ep().rpc_ep(), &md_alloc), - _env(env) + _env(env), _config(config) { } }; @@ -550,10 +554,13 @@ struct Main { Genode::Env &_env; + Genode::Attached_rom_dataspace _config_rom { _env, "config" }; + Genode::Xml_node _config { _config_rom.xml() }; + Genode::Sliced_heap _sliced_heap { _env.ram(), _env.rm() }; /* create root interface for service */ - Terminal::Root_component _root { _env, _sliced_heap }; + Terminal::Root_component _root { _env, _config, _sliced_heap }; Main(Genode::Env &env) : _env(env) { diff --git a/repos/os/src/server/input_filter/main.cc b/repos/os/src/server/input_filter/main.cc index 40dc67a38b..991bb48410 100644 --- a/repos/os/src/server/input_filter/main.cc +++ b/repos/os/src/server/input_filter/main.cc @@ -382,7 +382,7 @@ struct Input_filter::Main : Input_connection::Avail_handler, input_node.attribute_value("label", Label()); try { - Input_connection &conn = *new (_heap) + new (_heap) Registered(_input_connections, _env, label, *this, _heap);