diff --git a/repos/base-linux/run/lx_hybrid_ctors.run b/repos/base-linux/run/lx_hybrid_ctors.run
index dc1bfebff4..2cac8f478b 100644
--- a/repos/base-linux/run/lx_hybrid_ctors.run
+++ b/repos/base-linux/run/lx_hybrid_ctors.run
@@ -24,6 +24,9 @@ install_config {
+
+
+
diff --git a/repos/base-linux/run/lx_hybrid_exception.run b/repos/base-linux/run/lx_hybrid_exception.run
index 9b17333d24..b6fda192dd 100644
--- a/repos/base-linux/run/lx_hybrid_exception.run
+++ b/repos/base-linux/run/lx_hybrid_exception.run
@@ -23,6 +23,9 @@ install_config {
+
+
+
diff --git a/repos/base-linux/run/lx_hybrid_pthread_ipc.run b/repos/base-linux/run/lx_hybrid_pthread_ipc.run
index 09cbc1e06a..ba3d9d82e3 100644
--- a/repos/base-linux/run/lx_hybrid_pthread_ipc.run
+++ b/repos/base-linux/run/lx_hybrid_pthread_ipc.run
@@ -20,6 +20,9 @@ install_config {
+
+
+
diff --git a/repos/base/run/affinity.run b/repos/base/run/affinity.run
index 71658f9b28..dffa591791 100644
--- a/repos/base/run/affinity.run
+++ b/repos/base/run/affinity.run
@@ -31,7 +31,7 @@ set config {
-
+
diff --git a/repos/base/run/log.run b/repos/base/run/log.run
index 91da7fb4f9..2f5ed2fc3b 100644
--- a/repos/base/run/log.run
+++ b/repos/base/run/log.run
@@ -6,7 +6,10 @@ install_config {
-
+
+
+
+
diff --git a/repos/base/run/mp_server.run b/repos/base/run/mp_server.run
index 6b021bfbfd..6c932bf502 100644
--- a/repos/base/run/mp_server.run
+++ b/repos/base/run/mp_server.run
@@ -14,8 +14,9 @@ install_config {
-
-
+
+
+
diff --git a/repos/base/run/new_delete.run b/repos/base/run/new_delete.run
index 3d7f6c8c7d..f82790c329 100644
--- a/repos/base/run/new_delete.run
+++ b/repos/base/run/new_delete.run
@@ -6,7 +6,10 @@ install_config {
-
+
+
+
+
diff --git a/repos/base/run/platform_drv.inc b/repos/base/run/platform_drv.inc
index 43c5213d67..7ec1f54b7e 100644
--- a/repos/base/run/platform_drv.inc
+++ b/repos/base/run/platform_drv.inc
@@ -81,9 +81,13 @@ proc append_platform_drv_config {} {
append config {
-
-
+
+
+
+
+
+
}
@@ -103,7 +107,10 @@ proc append_platform_drv_config {} {
-
+
+
+
+
}
diff --git a/repos/base/run/thread.run b/repos/base/run/thread.run
index 32fa4d5c5a..0ed43b70b3 100644
--- a/repos/base/run/thread.run
+++ b/repos/base/run/thread.run
@@ -18,6 +18,9 @@ set config {
+
+
+
diff --git a/repos/gems/run/cpu_load_display.run b/repos/gems/run/cpu_load_display.run
index 7144ed5e72..3edc8fe232 100644
--- a/repos/gems/run/cpu_load_display.run
+++ b/repos/gems/run/cpu_load_display.run
@@ -139,14 +139,16 @@ append config {
-
+
+
-
+
+
@@ -182,7 +184,8 @@ append config {
-
+
+
@@ -191,7 +194,8 @@ append config {
-
+
+
}
diff --git a/repos/gems/run/cpu_sampler.run b/repos/gems/run/cpu_sampler.run
index 0e7f674ee1..e3212536f8 100644
--- a/repos/gems/run/cpu_sampler.run
+++ b/repos/gems/run/cpu_sampler.run
@@ -17,7 +17,6 @@ create_boot_directory
install_config {
-
@@ -25,8 +24,6 @@ install_config {
-
-
@@ -50,10 +47,11 @@ install_config {
-
-
-
+
+
+
+
diff --git a/repos/gems/run/cpu_sampler_noux.run b/repos/gems/run/cpu_sampler_noux.run
index a9a7cde905..5797755f3c 100644
--- a/repos/gems/run/cpu_sampler_noux.run
+++ b/repos/gems/run/cpu_sampler_noux.run
@@ -157,7 +157,7 @@ append config {
-
+
@@ -171,19 +171,20 @@ append config {
-
+
-
+
-
-
+
+
+
-
+
@@ -194,7 +195,7 @@ append config {
-
+
diff --git a/repos/gems/run/decorator.run b/repos/gems/run/decorator.run
index 03a3c51e0b..0dc7f6606e 100644
--- a/repos/gems/run/decorator.run
+++ b/repos/gems/run/decorator.run
@@ -24,7 +24,8 @@ append config {
-
+
+
@@ -154,12 +155,10 @@ append config {
-
-
+
-
-
+
diff --git a/repos/gems/run/decorator_stress.run b/repos/gems/run/decorator_stress.run
index 9ebd20a833..f4fffc8e87 100644
--- a/repos/gems/run/decorator_stress.run
+++ b/repos/gems/run/decorator_stress.run
@@ -130,14 +130,10 @@ append config {
-
-
-
-
-
-
-
-
+
+
+
+
diff --git a/repos/gems/run/launcher.run b/repos/gems/run/launcher.run
index 6b832f7490..59da330ee2 100644
--- a/repos/gems/run/launcher.run
+++ b/repos/gems/run/launcher.run
@@ -115,7 +115,7 @@ append config {
-
+
@@ -124,7 +124,7 @@ append config {
-
+
@@ -163,8 +163,10 @@ append config {
+
+
-
+
@@ -173,8 +175,12 @@ append config {
+
+
+
+
-
+
@@ -186,8 +192,12 @@ append config {
+
+
+
+
-
+
@@ -220,7 +230,7 @@ append config {
-
+
@@ -270,9 +280,7 @@ append config {
-
-
-
+
diff --git a/repos/gems/run/menu_view.run b/repos/gems/run/menu_view.run
index 5cdb7abed8..9208d32075 100644
--- a/repos/gems/run/menu_view.run
+++ b/repos/gems/run/menu_view.run
@@ -24,6 +24,8 @@ create_boot_directory
append config {
+
+
@@ -117,16 +119,14 @@ append config {
-
-
-
-
-
+
+
+
+
+
-
-
-
+
diff --git a/repos/gems/run/mixer_gui_qt_test.run b/repos/gems/run/mixer_gui_qt_test.run
index eac3d09e4d..8813cd5203 100644
--- a/repos/gems/run/mixer_gui_qt_test.run
+++ b/repos/gems/run/mixer_gui_qt_test.run
@@ -192,7 +192,7 @@ append config {
-
+
}
diff --git a/repos/gems/run/nano3d.run b/repos/gems/run/nano3d.run
index 569e19b97b..17203572c5 100644
--- a/repos/gems/run/nano3d.run
+++ b/repos/gems/run/nano3d.run
@@ -14,8 +14,6 @@ set build_components {
app/backdrop
}
-lappend_if [have_spec usb] build_components drivers/usb
-
build $build_components
create_boot_directory
@@ -110,10 +108,8 @@ append config {
-
-
-
-
+
+
diff --git a/repos/gems/run/nit_fader.run b/repos/gems/run/nit_fader.run
index 54731d2cea..c16b7522ed 100644
--- a/repos/gems/run/nit_fader.run
+++ b/repos/gems/run/nit_fader.run
@@ -25,7 +25,8 @@ append config {
-
+
+
@@ -93,7 +94,7 @@ append config {
-
+
diff --git a/repos/gems/run/wm.run b/repos/gems/run/wm.run
index 9d52cef0da..cd3f9e75cd 100644
--- a/repos/gems/run/wm.run
+++ b/repos/gems/run/wm.run
@@ -142,8 +142,10 @@ append config {
+
+
-
+
@@ -151,8 +153,12 @@ append config {
+
+
+
+
-
+
@@ -163,8 +169,12 @@ append config {
+
+
+
+
-
+
diff --git a/repos/libports/run/ldso.run b/repos/libports/run/ldso.run
index 8ad66cb939..226be9af39 100644
--- a/repos/libports/run/ldso.run
+++ b/repos/libports/run/ldso.run
@@ -6,8 +6,10 @@ set config {
+
+
-
+
diff --git a/repos/libports/run/moon.run b/repos/libports/run/moon.run
index 8aff978f16..fcbfd5be70 100644
--- a/repos/libports/run/moon.run
+++ b/repos/libports/run/moon.run
@@ -9,8 +9,9 @@ create_boot_directory
install_config {
+
-
+
diff --git a/repos/libports/run/rust.run b/repos/libports/run/rust.run
index bc300c6183..9a4ec99788 100644
--- a/repos/libports/run/rust.run
+++ b/repos/libports/run/rust.run
@@ -6,8 +6,10 @@ install_config {
-
-
+
+
+
+
diff --git a/repos/libports/run/stdcxx.run b/repos/libports/run/stdcxx.run
index 265f6b3572..fe6f88f501 100644
--- a/repos/libports/run/stdcxx.run
+++ b/repos/libports/run/stdcxx.run
@@ -8,8 +8,10 @@ install_config {
-
+
+
+
diff --git a/repos/os/include/init/child.h b/repos/os/include/init/child.h
index 1497ae8d58..e7250fda69 100644
--- a/repos/os/include/init/child.h
+++ b/repos/os/include/init/child.h
@@ -125,35 +125,27 @@ namespace Init {
/**
* Return sub string of label with the leading child name stripped out
+ *
+ * \return character pointer to the scoped part of the label,
+ * or nullptr if the label is not correctly prefixed with the child's
+ * name
*/
inline char const *skip_label_prefix(char const *child_name, char const *label)
{
size_t const child_name_len = strlen(child_name);
- /*
- * If the method was called with a valid "label" string, the
- * following condition should be always satisfied. See the
- * comment in 'service_node_args_condition_satisfied'.
- */
- if (strcmp(child_name, label, child_name_len) == 0)
- label += child_name_len;
+ if (strcmp(child_name, label, child_name_len) != 0)
+ return nullptr;
- /*
- * If the original label was empty, the 'Child_policy_enforce_labeling'
- * does not append a label separator after the child-name prefix. In
- * this case, we resulting label is empty.
- */
- if (*label == 0)
- return label;
+ label += child_name_len;
/*
* Skip label separator. This condition should be always satisfied.
*/
- if (strcmp(" -> ", label, 4) == 0)
- return label + 4;
+ if (strcmp(" -> ", label, 4) != 0)
+ return nullptr;
- warning("cannot skip label prefix while processing ");
- return label;
+ return label + 4;
}
@@ -176,53 +168,26 @@ namespace Init {
if (!service_matches)
return false;
- Session_label const session_label(skip_label_prefix(
- child_name.string(), label_from_args(args).string()));
+ bool const route_depends_on_child_provided_label =
+ service_node.has_attribute("label") ||
+ service_node.has_attribute("label_prefix") ||
+ service_node.has_attribute("label_suffix");
+
+ if (!route_depends_on_child_provided_label)
+ return true;
+
+ char const * const scoped_label = skip_label_prefix(
+ child_name.string(), label_from_args(args).string());
+
+ if (!scoped_label)
+ return false;
+
+ Session_label const session_label(scoped_label);
return !Xml_node_label_score(service_node, session_label).conflict();
}
- /**
- * Check if arguments satisfy the condition specified for the route
- */
- inline bool service_node_args_condition_satisfied(Xml_node service_node,
- Session_state::Args const &args,
- Child_policy::Name const &child_name)
- {
- try {
- Xml_node if_arg = service_node.sub_node("if-arg");
- enum { KEY_MAX_LEN = 64, VALUE_MAX_LEN = 64 };
- char key[KEY_MAX_LEN];
- char value[VALUE_MAX_LEN];
- if_arg.attribute("key").value(key, sizeof(key));
- if_arg.attribute("value").value(value, sizeof(value));
-
- char arg_value[VALUE_MAX_LEN];
- Arg_string::find_arg(args.string(), key).string(arg_value, sizeof(arg_value), "");
-
- /*
- * Skip child-name prefix if the key is the process "label".
- *
- * Because 'filter_session_args' is called prior the call of
- * 'resolve_session_request' from the 'Child::session' method,
- * 'args' contains the filtered arguments, in particular the label
- * prefixed with the child's name. For the 'if-args' declaration,
- * however, we want to omit specifying this prefix because the
- * session route is specific to the named start node anyway. So
- * the prefix information is redundant.
- */
- if (strcmp("label", key) == 0)
- return strcmp(value, skip_label_prefix(child_name.string(), arg_value)) == 0;
-
- return strcmp(value, arg_value) == 0;
- } catch (...) { }
-
- /* if no if-arg node exists, the condition is met */
- return true;
- }
-
-
/**
* Check if service name is ambiguous
*
@@ -566,7 +531,10 @@ class Init::Child : Child_policy, Child_service::Wakeup
name, _child.ram_session_cap(), *this);
}
- } catch (Xml_node::Nonexistent_sub_node) { }
+ }
+ catch (Xml_node::Nonexistent_sub_node) { }
+ catch (Genode::Child::Inactive) {
+ error(this->name(), ": incomplete environment at construction time"); }
}
virtual ~Child()
@@ -622,20 +590,7 @@ class Init::Child : Child_policy, Child_service::Wakeup
Service &resolve_session_request(Service::Name const &service_name,
Session_state::Args const &args) override
{
- /* route environment session requests to the parent */
Session_label const label(label_from_args(args.string()));
- if (label == name()) {
- if (service_name == Ram_session::service_name()) return _env_ram_service;
- if (service_name == Cpu_session::service_name()) return _env_cpu_service;
- if (service_name == Pd_session::service_name()) return _env_pd_service;
- if (service_name == Log_session::service_name()) return _env_log_service;
- }
-
- /* route initial ROM requests (binary and linker) to the parent */
- if (service_name == Rom_session::service_name()) {
- if (label.last_element() == binary_name()) return _env_rom_service;
- if (label.last_element() == linker_name()) return _env_rom_service;
- }
Service *service = nullptr;
@@ -646,7 +601,7 @@ class Init::Child : Child_policy, Child_service::Wakeup
/* check for "session_requests" ROM request */
if (service_name == Rom_session::service_name()
&& label.last_element() == Session_requester::rom_name())
- return _session_requester.service();
+ return _session_requester.service();
try {
Xml_node route_node = _default_route_node;
@@ -662,9 +617,6 @@ class Init::Child : Child_policy, Child_service::Wakeup
if (!service_node_matches(service_node, args.string(), name(), service_name))
continue;
- if (!service_node_args_condition_satisfied(service_node, args, name()))
- continue;
-
Xml_node target = service_node.sub_node();
for (; ; target = target.next()) {
diff --git a/repos/os/run/clipboard.run b/repos/os/run/clipboard.run
index c1ceec0c96..20f3a32c4d 100644
--- a/repos/os/run/clipboard.run
+++ b/repos/os/run/clipboard.run
@@ -20,7 +20,8 @@ append config {
-
+
+
@@ -62,7 +63,8 @@ append config {
-
+
+
@@ -70,15 +72,15 @@ append config {
-
-
-
-
+
-
-
-
+
+
+
+
+
+
diff --git a/repos/os/run/demo.run b/repos/os/run/demo.run
index 730a2d6c7d..7946696017 100644
--- a/repos/os/run/demo.run
+++ b/repos/os/run/demo.run
@@ -160,7 +160,7 @@ append config {
-
+
@@ -175,7 +175,7 @@ append config {
-
+
@@ -200,7 +200,7 @@ append config {
-
+
diff --git a/repos/os/run/ram_fs_chunk.run b/repos/os/run/ram_fs_chunk.run
index 7be8c4d459..09e9a407e3 100644
--- a/repos/os/run/ram_fs_chunk.run
+++ b/repos/os/run/ram_fs_chunk.run
@@ -11,7 +11,10 @@ create_boot_directory
install_config {
-
+
+
+
+
diff --git a/repos/os/run/rom_filter.run b/repos/os/run/rom_filter.run
index c7c557b029..4d3b16cc57 100644
--- a/repos/os/run/rom_filter.run
+++ b/repos/os/run/rom_filter.run
@@ -20,8 +20,9 @@ append config {
-
+
+
@@ -90,7 +91,7 @@ append config {
-
+
@@ -99,7 +100,7 @@ append config {
-
+
diff --git a/repos/os/run/tar_rom.run b/repos/os/run/tar_rom.run
index 9b030fc800..e0cb3962fe 100644
--- a/repos/os/run/tar_rom.run
+++ b/repos/os/run/tar_rom.run
@@ -54,7 +54,8 @@ install_config {
-
+
+
@@ -65,7 +66,8 @@ install_config {
-
+
+
diff --git a/repos/os/run/xml_node.run b/repos/os/run/xml_node.run
index ba18f11cbe..d36e5ae133 100644
--- a/repos/os/run/xml_node.run
+++ b/repos/os/run/xml_node.run
@@ -6,7 +6,10 @@ install_config {
-
+
+
+
+
diff --git a/repos/os/src/app/cli_monitor/gdb_command_config b/repos/os/src/app/cli_monitor/gdb_command_config
index 4af00d92b0..a6b92ee6e0 100644
--- a/repos/os/src/app/cli_monitor/gdb_command_config
+++ b/repos/os/src/app/cli_monitor/gdb_command_config
@@ -25,12 +25,9 @@
-
-
-
-
-
-
+
+
+
diff --git a/repos/os/src/server/input_merger/README b/repos/os/src/server/input_merger/README
index d2fedcdefa..71c7681855 100644
--- a/repos/os/src/server/input_merger/README
+++ b/repos/os/src/server/input_merger/README
@@ -12,12 +12,10 @@ Example configuration:
-
-
-
-
-
-
+
+
+
+
diff --git a/repos/os/src/test/fault_detection/main.cc b/repos/os/src/test/fault_detection/main.cc
index d838391c6c..fe12085f38 100644
--- a/repos/os/src/test/fault_detection/main.cc
+++ b/repos/os/src/test/fault_detection/main.cc
@@ -187,7 +187,9 @@ struct Faulting_loader_grand_child_test
"\n"
" \n"
" \n"
- " \n"
+ " \n"
+ " \n"
+ " \n"
" \n"
" \n"
" \n"
diff --git a/repos/ports/run/arora.run b/repos/ports/run/arora.run
index a9a495c148..54e11efcbf 100644
--- a/repos/ports/run/arora.run
+++ b/repos/ports/run/arora.run
@@ -95,9 +95,7 @@ append config {
-
-
-
+
diff --git a/repos/ports/run/netperf.inc b/repos/ports/run/netperf.inc
index d73c5b12b1..34a21f15ea 100644
--- a/repos/ports/run/netperf.inc
+++ b/repos/ports/run/netperf.inc
@@ -216,7 +216,7 @@ append_if $use_wifi_driver config {
-
+
diff --git a/repos/ports/run/noux_gdb.run b/repos/ports/run/noux_gdb.run
index 8d1263ec8d..9561760cfe 100644
--- a/repos/ports/run/noux_gdb.run
+++ b/repos/ports/run/noux_gdb.run
@@ -162,11 +162,11 @@ append config {
-
-
+
+
-
-
+
+
diff --git a/repos/ports/run/noux_terminal_fs.run b/repos/ports/run/noux_terminal_fs.run
index 28fff0bf3f..61dfa29ab4 100644
--- a/repos/ports/run/noux_terminal_fs.run
+++ b/repos/ports/run/noux_terminal_fs.run
@@ -159,12 +159,10 @@ append config {
-
-
-
-
-
-
+
+
+
+
diff --git a/repos/ports/run/noux_trace_fs.run b/repos/ports/run/noux_trace_fs.run
index f171dc6ae5..da4f74b2bf 100644
--- a/repos/ports/run/noux_trace_fs.run
+++ b/repos/ports/run/noux_trace_fs.run
@@ -180,17 +180,14 @@ append config {
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
diff --git a/repos/ports/run/seoul.inc b/repos/ports/run/seoul.inc
index 6756e1ab2f..856a00849a 100644
--- a/repos/ports/run/seoul.inc
+++ b/repos/ports/run/seoul.inc
@@ -214,7 +214,6 @@ append_if $use_nic_session config {
-
}
diff --git a/repos/ports/run/vbox_auto_genode_usb_hid.run b/repos/ports/run/vbox_auto_genode_usb_hid.run
index 8d06b69a08..17cc4db922 100644
--- a/repos/ports/run/vbox_auto_genode_usb_hid.run
+++ b/repos/ports/run/vbox_auto_genode_usb_hid.run
@@ -176,9 +176,7 @@ append config {
-
-
-
+
diff --git a/repos/ports/run/vbox_auto_win7_share.run b/repos/ports/run/vbox_auto_win7_share.run
index 2fab807d71..5f1c045612 100644
--- a/repos/ports/run/vbox_auto_win7_share.run
+++ b/repos/ports/run/vbox_auto_win7_share.run
@@ -171,12 +171,10 @@ set config_of_app {
-
-
+
-
-
+
@@ -235,18 +233,15 @@ append config_of_app {
}
append_if [expr $use_ram_fs] config_of_app {
-
-
+
}
append config_of_app {
-
-
+
-
-
+
diff --git a/repos/ports/run/vbox_pointer.run b/repos/ports/run/vbox_pointer.run
index dc14cd8af8..f58a99d4e7 100644
--- a/repos/ports/run/vbox_pointer.run
+++ b/repos/ports/run/vbox_pointer.run
@@ -35,7 +35,6 @@ set config {
-
@@ -44,9 +43,11 @@ set config {
-
-
-
+
+
+
+
+
@@ -58,9 +59,12 @@ set config {
-
-
-
+
+
+
+
+
+
@@ -76,8 +80,12 @@ set config {
-
-
+
+
+
+
+
+
@@ -96,7 +104,10 @@ set config {
-
+
+
+
+
@@ -116,8 +127,11 @@ set config {
-
-
+
+
+
+
+
@@ -125,6 +139,10 @@ set config {
+
+
+
+
@@ -134,6 +152,10 @@ set config {
+
+
+
+
@@ -143,6 +165,10 @@ set config {
+
+
+
+
@@ -164,9 +190,12 @@ set config {
-
-
-
+
+
+
+
+
+
@@ -174,10 +203,14 @@ set config {
-
-
-
+
+
+
+
+
+
+
@@ -191,14 +224,18 @@ set config {
-
+
-
-
-
-
-
+
+
+
+
+
+
+
+
+
@@ -206,11 +243,11 @@ set config {
-
+
@@ -219,11 +256,11 @@ set config {
-
+
@@ -232,11 +269,11 @@ set config {
-
+
@@ -245,11 +282,11 @@ set config {
-
-
+
+
@@ -258,10 +295,11 @@ set config {
-
+
+
@@ -270,11 +308,11 @@ set config {
-
-
+
+
diff --git a/repos/ports/run/vbox_win.inc b/repos/ports/run/vbox_win.inc
index 7cc63cf8a6..936b017c54 100644
--- a/repos/ports/run/vbox_win.inc
+++ b/repos/ports/run/vbox_win.inc
@@ -61,13 +61,9 @@ append config_of_app {
}
append_if [expr $use_ps2] config_of_app {
-
-
- }
+ }
append_if [expr $use_usb] config_of_app {
-
-
- }
+ }
append config_of_app {
@@ -159,9 +155,17 @@ append config_of_app "
append config_of_app {
-
-
-
+ }
+
+for { set i 1} { $i <= $use_vms } { incr i} {
+append config_of_app "
+ "
+}
+
+append config_of_app {
+
+
+
}
@@ -186,8 +190,8 @@ for { set i 1} { $i <= $use_vms } { incr i} {
"
append config_of_app {
-
+
}
}
@@ -231,9 +235,8 @@ for { set i 1} { $i <= $use_vms } { incr i} {
append config_of_app {
-
-
+
}
@@ -294,9 +297,7 @@ for { set i 1} { $i <= $use_vms } { incr i} {
"
append config_of_app {
-
-
-
+
}
diff --git a/repos/ports/run/virtualbox_auto.inc b/repos/ports/run/virtualbox_auto.inc
index c3ebbcd35f..029bd66d5a 100644
--- a/repos/ports/run/virtualbox_auto.inc
+++ b/repos/ports/run/virtualbox_auto.inc
@@ -176,6 +176,7 @@ append_if [expr $use_cpu_load] config {
+
@@ -187,6 +188,7 @@ append_if [expr $use_cpu_load] config {
+
}