genode/repos/os/src/app/trace_logger
Norman Feske 9d67f9fc8e Remove Allocator_guard
This patch removes old 'Allocator_guard' utility and replaces its use
with the modern 'Constrained_ram_allocator'.

The adjustment of core in this respect has the side effect of a more
accurate capability accounting in core's CPU, TRACE, and RM services.
In particular, the dataspace capabilities needed for core-internal
allocations via the 'Sliced_heap' are accounted to the client now.
The same goes for nitpicker and nic_dump as other former users of the
allocator guard. Hence, the patch also touches code at the client and
server sides related to these services.

The only remaining user of the 'Allocator_guard' is the Intel GPU
driver. As the adaptation of this component would be too invasive
without testing, this patch leaves this component unchanged by keeping a
copy of the 'allocator_guard.h' locally at the component.

Fixes #3750
2020-05-18 10:16:12 +02:00
..
README trace_logger/README: add examples subsection 2018-04-10 11:20:46 +02:00
avl_tree.h trace_logger: convenient tracing frontend 2018-02-09 13:34:20 +01:00
config.xsd */config.xsd: fix session-policy declarations 2018-08-28 16:48:47 +02:00
main.cc Remove Allocator_guard 2020-05-18 10:16:12 +02:00
monitor.cc trace_logger: avoid output of empty lines 2020-04-17 12:48:13 +02:00
monitor.h trace_logger: convenient tracing frontend 2018-02-09 13:34:20 +01:00
policy.cc trace_logger: convenient tracing frontend 2018-02-09 13:34:20 +01:00
policy.h trace_logger: convenient tracing frontend 2018-02-09 13:34:20 +01:00
target.mk trace_logger: convenient tracing frontend 2018-02-09 13:34:20 +01:00
trace_buffer.h trace_logger: be aware of trace-buffer wraps 2018-05-03 15:31:55 +02:00
xml_node.cc timeout: use uint64_t for all plain time values 2019-05-06 16:15:26 +02:00
xml_node.h timeout: use uint64_t for all plain time values 2019-05-06 16:15:26 +02:00

README

The 'trace_logger' component can be used to easily gather, process and export
different types of tracing data. Which subjects to select is configurable via
session label policies and thread names. Which data to collect from the
selected subjects can be configured for each subject individually, for groups
of subjects, or for all subjects. The gathered data can be exported as log
output.


Configuration
~~~~~~~~~~~~~

This is an example configuration of the 'trace_logger' component which shows
the default value for each attribute except the policy.thread and
policy.label:

! <config verbose="no"
!         session_ram="10M"
!         session_arg_buffer="4K"
!         session_parent_levels="0"
!         period_sec="5"
!         activity="no"
!         affinity="no"
!         default_policy="null"
!         default_buffer="4K">
!
!    <policy label="init -> timer" />
!    <policy label_suffix=" -> ram_fs" />
!    <policy label_prefix="init -> encryption -> "
!            thread="worker"
!            buffer="4K"
!            policy="null" />
! </config>


This is a short description of the tags and attributes:

:config.verbose:
  Optional. Toggles wether the trace_logger shall log debugging information.

:config.session_ram:
  Optional. Amount of RAM donated to the trace session.

: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.

:config.activity:
  Optional. Wether to export thread-activity information.

:config.affinity:
  Optional. Wether to export thread-affinity information.

:config.default_policy:
  Optional. Name of tracing policy for subjects without individual config.

:config.default_policy:
  Optional. Size of tracing buffer for subjects without individual config.

:config.policy:
  Subject selector. For matching subjects, tracing is enabled and the defined
  individual configuration is applied.

:config.policy.label:
:config.policy.label_prefix:
:config.policy.label_suffix:
  Mutually exclusive. Filters subjects according to their session label.

:config.policy.thread:
  Optional. Filters subjects according to their exact thread name.

:config.policy.buffer:
  Optional. Size of tracing buffer used for matching subjects.

:config.policy.policy:
  Optional. Name of tracing policy used for matching subjects.


Sessions
~~~~~~~~

This is an overview of the sessions required and provided by the
'trace_logger' component apart from the environment sessions:

* Requires ROM sessions to all configured tracing policies.
* Requires one TRACE session that provides the desired subjects.
* Requires one Timer session.


Examples
~~~~~~~~

An Example of how to use the trace_logger component can be found in the test
script 'os/run/trace_logger.run'.