diff --git a/repos/os/include/os/reporter.h b/repos/os/include/os/reporter.h index ad631b1811..8f6d84ba41 100644 --- a/repos/os/include/os/reporter.h +++ b/repos/os/include/os/reporter.h @@ -15,6 +15,7 @@ #define _INCLUDE__OS__REPORTER_H_ #include +#include #include #include #include @@ -190,6 +191,12 @@ class Genode::Expanding_reporter _reporter->enabled(true); } + void _increase_report_buffer() + { + _buffer_size += 4096; + _construct(); + } + public: Expanding_reporter(Env &env, Node_type const &type, Label const &label) @@ -200,16 +207,21 @@ class Genode::Expanding_reporter { retry( - /* attempt to generate a report, may throw */ [&] () { Reporter::Xml_generator xml(*_reporter, [&] () { fn(xml); }); }, - /* respond to exception by successively increasing the buffer */ - [&] () { - _buffer_size += 4096; - _construct(); - } + [&] () { _increase_report_buffer(); } + ); + } + + void generate(Xml_node node) + { + retry( + + [&] () { _reporter->report(node.addr(), node.size()); }, + + [&] () { _increase_report_buffer(); } ); } };