As we have a variable number of hardware counters that can be enabled at
runtime, each with a different name, we need to create a dynamic set of
configuration files for Paraver. We also need to specify some options
needed to properly see the timeline for HWC. For now we leave the
generation of CFG to the minimum features required to cover HWC.
The marks are parsed from the metadata definition, then merged from all
threads and a new channel for each mark type is created. The channel
type is specified using a flag when calling ovni_mark_type(), so the
channels is set to single or stack. For now, only ovni_mark_push() and
ovni_mark_pop() are implemented.
The new task body model (or just body model) allows a task to have
multiple bodies. Generally a body is mapped to the execution of the same
user code of the task with specific input arguments.
The body model can constraint if a given body can be paused or re-run
again (resurrect).
Additionally, the body model can run multiple nested bodies but with the
restriction that the parent body should be paused first. This condition
can be relaxed with the BODY_FLAG_RELAX_NESTING flag.
Implements a small language parser to define the emulator events. The
event specification is parsed at emulation (when the emulator runs).
The ovnidump output now prints the events with the arguments formatted
as given in the event description.
It also introduces some consistency checks over the event MCVs, which
must begin with the model identifier and cannot be duplicated.
As cmake doesn't provide a way to use the RPATH or the RUNPATH, we
explicitly set the --enable-new-dtags linker flag. If the flag is not
supported by the compiler, the build is aborted.
When running ovniver without LD_LIBRARY_PATH set, the loader couldn't
find any ovni installation and therefore was failing to start the
program. With this change we set the RUNPATH (not RPATH) of ovniver to
the installation libdir, so when no other libovni library is loaded via
LD_LIBRARY_PATH the one provided by the same source as ovniver is used.
The value of LD_LIBRARY_PATH is also printed so we can determine where
it may be loading libovni. Using LD_DEBUG=libs will give more
information of the search process.
Fixes: https://pm.bsc.es/gitlab/rarias/ovni/-/issues/163
Prevents external threads from being left in Running state when they
finish, causing the virtual CPU to be always occupied with at least one
thread. This situation causes the virtual CPU to never report any
subsystem.
The -t option is now dropped as only the binary streams found in the
specified directory are dumped. A single binary stream can be also
dumped in the same way.
The relative path is prefixed, so we avoid the collision problem when
filtering TIDs from multiple nodes.