From 7dcd9a9f8dc735c45f8b3e79ab818131265a02fd Mon Sep 17 00:00:00 2001 From: Sebastian Sumpf <sebastian.sumpf@genode-labs.com> Date: Thu, 16 Dec 2021 10:33:56 +0100 Subject: [PATCH] vfs_trace: remove Trace::Session::subject_info issue #4349 --- repos/gems/src/lib/vfs/trace/vfs.cc | 24 +++++++----------------- 1 file changed, 7 insertions(+), 17 deletions(-) diff --git a/repos/gems/src/lib/vfs/trace/vfs.cc b/repos/gems/src/lib/vfs/trace/vfs.cc index c6b02a6668..bb2880eeab 100644 --- a/repos/gems/src/lib/vfs/trace/vfs.cc +++ b/repos/gems/src/lib/vfs/trace/vfs.cc @@ -349,11 +349,7 @@ struct Vfs_trace::Local_factory : File_system_factory Vfs::Env &_env; Trace::Connection _trace; - enum { MAX_SUBJECTS = 128 }; - Trace::Subject_id _subjects[MAX_SUBJECTS]; - size_t _subject_count { 0 }; Trace::Policy_id _policy_id { 0 }; - Directory_tree _tree { _env.alloc() }; void _install_null_policy() @@ -391,20 +387,14 @@ struct Vfs_trace::Local_factory : File_system_factory Local_factory(Vfs::Env &env, Xml_node config) : _env(env), _trace(env.env(), _config_session_ram(config), 512*1024, 0) { - bool success = false; - while (!success) { - try { - _subject_count = _trace.subjects(_subjects, MAX_SUBJECTS); - success = true; - } catch(Genode::Out_of_ram) { - _trace.upgrade_ram(4096); - success = false; - } - } + _trace.for_each_subject_info([&] (Trace::Subject_id const id, + Trace::Subject_info const &info) { - for (size_t i = 0; i < _subject_count; i++) { - _tree.insert(_trace.subject_info(_subjects[i]), _subjects[i]); - } + if (info.state() == Trace::Subject_info::DEAD) + return; + + _tree.insert(info, id); + }); _install_null_policy(); }