From 95a2fc71676f58c77b2eb25aba466eedc4ce9724 Mon Sep 17 00:00:00 2001 From: Norman Feske Date: Thu, 14 Dec 2017 12:25:28 +0100 Subject: [PATCH] os: component to reflect ROMs as reports --- repos/os/recipes/src/rom_reporter/content.mk | 2 + repos/os/recipes/src/rom_reporter/hash | 1 + repos/os/recipes/src/rom_reporter/used_apis | 3 + repos/os/src/app/rom_reporter/README | 10 +++ repos/os/src/app/rom_reporter/main.cc | 86 ++++++++++++++++++++ repos/os/src/app/rom_reporter/target.mk | 3 + 6 files changed, 105 insertions(+) create mode 100644 repos/os/recipes/src/rom_reporter/content.mk create mode 100644 repos/os/recipes/src/rom_reporter/hash create mode 100644 repos/os/recipes/src/rom_reporter/used_apis create mode 100644 repos/os/src/app/rom_reporter/README create mode 100644 repos/os/src/app/rom_reporter/main.cc create mode 100644 repos/os/src/app/rom_reporter/target.mk diff --git a/repos/os/recipes/src/rom_reporter/content.mk b/repos/os/recipes/src/rom_reporter/content.mk new file mode 100644 index 0000000000..bad13682af --- /dev/null +++ b/repos/os/recipes/src/rom_reporter/content.mk @@ -0,0 +1,2 @@ +SRC_DIR = src/app/rom_reporter +include $(GENODE_DIR)/repos/base/recipes/src/content.inc diff --git a/repos/os/recipes/src/rom_reporter/hash b/repos/os/recipes/src/rom_reporter/hash new file mode 100644 index 0000000000..b0e9907dc8 --- /dev/null +++ b/repos/os/recipes/src/rom_reporter/hash @@ -0,0 +1 @@ +2017-12-14 1e971aea4f50d3e4bca43b3c3da0fe41a578140e diff --git a/repos/os/recipes/src/rom_reporter/used_apis b/repos/os/recipes/src/rom_reporter/used_apis new file mode 100644 index 0000000000..69a94c6d26 --- /dev/null +++ b/repos/os/recipes/src/rom_reporter/used_apis @@ -0,0 +1,3 @@ +base +os +report_session diff --git a/repos/os/src/app/rom_reporter/README b/repos/os/src/app/rom_reporter/README new file mode 100644 index 0000000000..c04d7fc627 --- /dev/null +++ b/repos/os/src/app/rom_reporter/README @@ -0,0 +1,10 @@ +The ROM-reporter component requests a ROM session and reports the content of +the ROM dataspace to a report session with the same label as the ROM session. + +The requested ROM modules must be specified via '' nodes within the +component's '' node. For example: + +! +! enabled(true); + } + + _reporter->report(xml.addr(), content_size); + } + + Rom_module(Env &env, Label const &label) : _env(env), _label(label) + { + _rom_ds.sigh(_rom_update_handler); + _handle_rom_update(); + } +}; + + +struct Rom_reporter::Main +{ + Env &_env; + + Attached_rom_dataspace _config { _env, "config" }; + + Heap _heap { _env.ram(), _env.rm() }; + + Main(Genode::Env &env) : _env(env) + { + _config.xml().for_each_sub_node("rom", [&] (Xml_node const &rom) { + new (_heap) + Rom_module(_env, rom.attribute_value("label", + Rom_module::Label())); + }); + } +}; + + +void Component::construct(Genode::Env &env) { static Rom_reporter::Main main(env); } diff --git a/repos/os/src/app/rom_reporter/target.mk b/repos/os/src/app/rom_reporter/target.mk new file mode 100644 index 0000000000..4028d8b04b --- /dev/null +++ b/repos/os/src/app/rom_reporter/target.mk @@ -0,0 +1,3 @@ +TARGET = rom_reporter +SRC_CC = main.cc +LIBS = base