diff --git a/repos/os/src/app/trace_subject_reporter/main.cc b/repos/os/src/app/trace_subject_reporter/main.cc
index b8d095ac6..fc860a8f0 100644
--- a/repos/os/src/app/trace_subject_reporter/main.cc
+++ b/repos/os/src/app/trace_subject_reporter/main.cc
@@ -18,6 +18,7 @@
#include
#include
#include
+#include
struct Trace_subject_registry
@@ -79,11 +80,19 @@ struct Trace_subject_registry
_entries = sorted;
}
+ unsigned update_subjects(Genode::Trace::Connection &trace)
+ {
+ return Genode::retry(
+ [&] () { return trace.subjects(_subjects, MAX_SUBJECTS); },
+ [&] () { trace.upgrade_ram(4096); }
+ );
+ }
+
public:
void update(Genode::Trace::Connection &trace, Genode::Allocator &alloc)
{
- unsigned const num_subjects = trace.subjects(_subjects, MAX_SUBJECTS);
+ unsigned const num_subjects = update_subjects(trace);
/* add and update existing entries */
for (unsigned i = 0; i < num_subjects; i++) {
@@ -150,7 +159,7 @@ struct App::Main
{
Env &_env;
- Trace::Connection _trace { _env, 512*1024, 32*1024, 0 };
+ Trace::Connection _trace { _env, 10*4096, 32*1024, 0 };
Reporter _reporter { _env, "trace_subjects", "trace_subjects", 64*1024 };