trace: remove parent_levels session argument

The argument was originally designated to restrict the reach of the
trace monitor but the idea remained unimplemented. It is now superseded
by the use of the trace-session label as trace-subject filter.

Issue #847
This commit is contained in:
Norman Feske 2023-12-04 14:22:49 +01:00
parent 12b89852e0
commit f57da7e645
14 changed files with 27 additions and 46 deletions

View File

@ -35,13 +35,11 @@ struct Genode::Trace::Connection : Genode::Connection<Genode::Trace::Session>,
*
* \param ram_quota RAM donated for tracing purposes
* \param arg_buffer_size session argument-buffer size
* \param parent_levels number of parent levels to trace
*/
Connection(Env &env, size_t ram_quota, size_t arg_buffer_size, unsigned parent_levels)
Connection(Env &env, size_t ram_quota, size_t arg_buffer_size)
:
Genode::Connection<Session>(env, Label(), Ram_quota { 10*1024 + ram_quota },
Args("arg_buffer_size=", arg_buffer_size, ", "
"parent_levels=", parent_levels)),
Args("arg_buffer_size=", arg_buffer_size)),
Session_client(env.rm(), cap())
{ }

View File

@ -59,8 +59,7 @@ struct Migrate
Timer::Connection timer { env };
Migrate_thread thread { env };
Trace::Connection trace { env, 15 * 4096 /* RAM quota */,
11 * 4096 /* ARG_BUFFER RAM quota */,
0 /* parent levels */ };
11 * 4096 /* ARG_BUFFER RAM quota */ };
Signal_handler<Migrate> timer_handler { env.ep(), *this,
&Migrate::check_traces };

View File

@ -8,7 +8,6 @@
<config verbose="yes"
session_ram="90M"
session_arg_buffer="1M"
session_parent_levels="3"
period_sec="10"
default_policy="null"
default_buffer="4K">

View File

@ -114,8 +114,7 @@ class Trace_recorder::Monitor
Timer::Connection _timer { _env };
Trace::Connection _trace { _env,
TRACE_SESSION_RAM,
TRACE_SESSION_ARG_BUFFER,
0 };
TRACE_SESSION_ARG_BUFFER };
Signal_handler<Monitor> _timeout_handler { _env.ep(),
*this,

View File

@ -383,7 +383,7 @@ 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)
: _env(env), _trace(env.env(), _config_session_ram(config), 512*1024)
{
_trace.for_each_subject_info([&] (Trace::Subject_id const id,
Trace::Subject_info const &info) {

View File

@ -47,7 +47,7 @@
<start name="trace_logger">
<resource name="RAM" quantum="80M"/>
<config verbose="yes" priority="no" sc_time="no" session_ram="10M" session_parent_levels="1" session_arg_buffer="64K" period_sec="3" default_policy="null" default_buffer="1K">
<config verbose="yes" priority="no" sc_time="no" session_ram="10M" session_arg_buffer="64K" period_sec="3" default_policy="null" default_buffer="1K">
<policy label_prefix="cpu_burner" thread="ep"/>

View File

@ -11,7 +11,6 @@
<config verbose="no"
session_ram="90M"
session_arg_buffer="1M"
session_parent_levels="1"
period_sec="10"
default_policy="null"
default_buffer="8K">

View File

@ -282,17 +282,12 @@ struct App::Main
{
Env &_env;
enum {
PARENT_LEVELS = 0
};
size_t arg_buffer_ram { 12 * 4096 }; /* ~ 190 trace Subject_info objects */
size_t trace_ram_quota { arg_buffer_ram + 4 * 4096 };
Reconstructible<Trace::Connection> _trace { _env,
trace_ram_quota,
arg_buffer_ram,
PARENT_LEVELS };
arg_buffer_ram };
static uint64_t _default_period_ms() { return 5000; }
@ -369,7 +364,7 @@ void App::Main::_handle_period()
_trace_subject_registry.flush(*_trace, _heap);
_trace.destruct();
_trace.construct(_env, trace_ram_quota, arg_buffer_ram, PARENT_LEVELS);
_trace.construct(_env, trace_ram_quota, arg_buffer_ram);
}

View File

@ -18,7 +18,6 @@ policy.label:
! sc_time="no"
! session_ram="10M"
! session_arg_buffer="4K"
! session_parent_levels="0"
! period_sec="5"
! default_policy="null"
! default_buffer="4K">
@ -53,9 +52,6 @@ This is a short description of the tags and attributes:
:config.session_arg_buffer:
Optional. Size of the trace sessions argument buffer.
:config.session_parent_levels:
Optional. Number of parent levels to trace.
:config.period_sec:
Optional. Length of processing/export interval in seconds.

View File

@ -41,7 +41,6 @@
<xs:attribute name="sc_time" type="Boolean" />
<xs:attribute name="session_arg_buffer" type="Number_of_bytes" />
<xs:attribute name="session_ram" type="Number_of_bytes" />
<xs:attribute name="session_parent_levels" type="xs:nonNegativeInteger" />
<xs:attribute name="default_policy" type="Trace_policy_name" />
<xs:attribute name="period_sec" type="Seconds" />
<xs:attribute name="default_buffer" type="Number_of_bytes" />

View File

@ -43,7 +43,6 @@ class Main
{
size_t session_ram;
size_t session_arg_buffer;
unsigned session_parent_levels;
bool verbose;
bool prio;
bool sc_time;
@ -57,8 +56,7 @@ class Main
Trace::Connection _trace { _env,
_config.session_ram,
_config.session_arg_buffer,
_config.session_parent_levels };
_config.session_arg_buffer };
Timer::Connection _timer { _env };
@ -231,20 +229,19 @@ class Main
Main::Config Main::Config::from_xml(Xml_node const &config)
{
return {
.session_ram = config.attribute_value("session_ram",
Number_of_bytes(1024*1024)),
.session_arg_buffer = config.attribute_value("session_arg_buffer",
Number_of_bytes(1024*4)),
.session_parent_levels = config.attribute_value("session_parent_levels", 0u),
.verbose = config.attribute_value("verbose", false),
.prio = config.attribute_value("priority", false),
.sc_time = config.attribute_value("sc_time", false),
.period_us = Microseconds(config.attribute_value("period_sec", 5)
* 1'000'000),
.default_buf_sz = config.attribute_value("default_buffer",
Number_of_bytes(4*1024)),
.default_policy_name = config.attribute_value("default_policy",
Policy_name("null"))
.session_ram = config.attribute_value("session_ram",
Number_of_bytes(1024*1024)),
.session_arg_buffer = config.attribute_value("session_arg_buffer",
Number_of_bytes(1024*4)),
.verbose = config.attribute_value("verbose", false),
.prio = config.attribute_value("priority", false),
.sc_time = config.attribute_value("sc_time", false),
.period_us = Microseconds(config.attribute_value("period_sec", 5)
* 1'000'000),
.default_buf_sz = config.attribute_value("default_buffer",
Number_of_bytes(4*1024)),
.default_policy_name = config.attribute_value("default_policy",
Policy_name("null"))
};
}

View File

@ -156,7 +156,7 @@ struct App::Main
{
Env &_env;
Trace::Connection _trace { _env, 128*1024, 32*1024, 0 };
Trace::Connection _trace { _env, 128*1024, 32*1024 };
Reporter _reporter { _env, "trace_subjects", "trace_subjects", 64*1024 };

View File

@ -57,7 +57,7 @@ class Cpu::Trace
_arg_quota += upgrade;
_trace.destruct();
_trace.construct(_env, _ram_quota, _arg_quota, 0 /* parent levels */);
_trace.construct(_env, _ram_quota, _arg_quota);
/*
* Explicitly re-trigger import of subjects. Otherwise

View File

@ -146,7 +146,7 @@ struct Test_out_of_metadata
try {
Trace::Connection trace(env, sizeof(subject_ids) + 4096,
sizeof(subject_ids), 0);
sizeof(subject_ids));
/* we should never arrive here */
struct Unexpectedly_got_no_exception{};
@ -168,7 +168,7 @@ struct Test_out_of_metadata
Test_thread thread5 { env, "test-thread5" };
Trace::Connection trace(env, sizeof(subject_ids) + 5*4096,
sizeof(subject_ids), 0);
sizeof(subject_ids));
trace.subjects(subject_ids, MAX_SUBJECT_IDS);
/* we should never arrive here */
@ -187,7 +187,7 @@ struct Test_tracing
{
Env &env;
Attached_rom_dataspace config { env, "config" };
Trace::Connection trace { env, 1024*1024, 64*1024, 0 };
Trace::Connection trace { env, 1024*1024, 64*1024 };
Timer::Connection timer { env };
Test_thread::Name thread_name { "test-thread" };
Test_thread thread { env, thread_name };