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 };