sculpt: minor graph improvements

- Omit showing routes to uninteresting ROMs obtained from the parent,
  i.e., the binaries requested by the sculpt-managed subsystems.
- Change the routes for the inspect subsystem such that the inspect-noux
  instance is anchored at the config node (critical!) and the nit_fb
  instance anchored at the used GUI.
This commit is contained in:
Norman Feske 2019-03-04 11:47:53 +01:00 committed by Christian Helmuth
parent 6ee7049736
commit ac37991b34
4 changed files with 38 additions and 21 deletions

View File

@ -181,14 +181,7 @@ struct Sculpt::Graph
if (show_details) {
component.for_each_secondary_dep([&] (Start_name const &dep) {
/*
* Connections to depot_rom do not reveal any
* interesting information but create a lot of
* noise.
*/
bool const blacklisted = (dep == "depot_rom")
|| (dep == "dynamic_depot_rom");
if (blacklisted)
if (Runtime_state::blacklisted_from_graph(dep))
return;
xml.node("dep", [&] () {

View File

@ -83,7 +83,20 @@ class Sculpt::Runtime_config
}
if (service == "ROM") {
bool const interesting_rom = !dst_label.valid();
/*
* ROM sessions for plain binaries (e.g, as requested by
* the sculpt-managed inspect or part_block instances) are
* not interesting for the graph. Non-sculpt-managed
* subsystems can only be connected to the few ROMs
* whitelisted in the 'Parent_services' definition below.
*/
bool const interesting_rom =
dst_label.valid() &&
(strcmp("config", dst_label.string(), 5) == 0 ||
dst_label == "platform_info" ||
dst_label == "capslock");
if (interesting_rom) {
result = "info";
return;

View File

@ -261,6 +261,15 @@ class Sculpt::Runtime_state : public Runtime_info
return result;
}
static bool blacklisted_from_graph(Start_name const &name)
{
/*
* Connections to depot_rom do not reveal any interesting
* information but create a lot of noise.
*/
return name == "depot_rom" || name == "dynamic_depot_rom";
}
void toggle_selection(Start_name const &name, Runtime_config const &config)
{
_children.for_each([&] (Child &child) {
@ -293,9 +302,10 @@ class Sculpt::Runtime_state : public Runtime_info
/* tag all dependencies as part of the TCB */
config.for_each_dependency(name_of_updated, [&] (Start_name const &dep) {
_children.for_each([&] (Child &child) {
if (child.name == dep)
child.info.tcb = true; }); });
if (!blacklisted_from_graph(dep))
_children.for_each([&] (Child &child) {
if (child.name == dep)
child.info.tcb = true; }); });
}
}

View File

@ -46,15 +46,16 @@ void Sculpt::gen_nit_fb_start(Xml_generator &xml, Rom_name const &name)
xml.node("config", [&] () { });
xml.node("route", [&] () {
gen_service_node<Nitpicker::Session>(xml, [&] () {
xml.node("parent", [&] () {
xml.attribute("label", String<64>("leitzentrale -> ", name)); }); });
gen_parent_rom_route(xml, "nit_fb");
gen_parent_rom_route(xml, "ld.lib.so");
gen_parent_route<Cpu_session> (xml);
gen_parent_route<Pd_session> (xml);
gen_parent_route<Log_session> (xml);
gen_service_node<Nitpicker::Session>(xml, [&] () {
xml.node("parent", [&] () {
xml.attribute("label", String<64>("leitzentrale -> ", name)); }); });
});
}
@ -159,6 +160,11 @@ void Sculpt::gen_noux_start(Xml_generator &xml, Rom_name const &name,
xml.node("route", [&] () {
gen_service_node<::File_system::Session>(xml, [&] () {
xml.attribute("label", "config");
xml.node("parent", [&] () { xml.attribute("label", "config"); });
});
gen_service_node<Terminal::Session>(xml, [&] () {
gen_named_node(xml, "child", terminal_name); });
@ -181,11 +187,6 @@ void Sculpt::gen_noux_start(Xml_generator &xml, Rom_name const &name,
gen_parent_route<Log_session> (xml);
gen_parent_route<Timer::Session> (xml);
gen_service_node<::File_system::Session>(xml, [&] () {
xml.attribute("label", "config");
xml.node("parent", [&] () { xml.attribute("label", "config"); });
});
gen_service_node<::File_system::Session>(xml, [&] () {
xml.attribute("label", "report");
xml.node("parent", [&] () { xml.attribute("label", "report"); });