When using the mark API to track a counter, it is posible that the value
zero is being emitted as it will be properly displayed using the
gradient view in Paraver.
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.
In order to allow easy debugging of some programs and runtimes, it is
often neccessary to add extra information in the timeline views. The
modification of the emulator to accomodate those temporal events is time
consuming and requires knowlegde of the emulator internals.
To improve the situation, a new set of functions are added to libovni
which allow users to define their own views. Up to 100 types of events
can be declared, where each type can have an unlimited number ov values
with an optional label attached.
The nosv.can_breakdown attribute states if enough events for the
breakdown model of nOS-V are enabled at runtime. It is used to ensure
that breakdown traces have the progress events enabled along with others
required for proper visualization of traces.
The emulator will panic when the level is not enough, instead of relying
on users to always remember to enable the correct level.
The ovni_attr_* set of functions allows users to write and read metadata
stores in the thread stream. The metadata information is available to
the emulator at the beginning of the emulation.
It will appear when the emulator knows that a thread is running in the
CPU, but no subsystem has been entered yet. This is common a
instrumentation level lower than 3 in nOS-V.
When a event causes a new value in the sort module, the first time it
will write all output values, which most of them will be zero. Writting
a zero value is forbidden by default, so we relax the constraint with
the PRV_ZERO flag.
In Mac OS, the top menu bar is placed above any window, causing the
timelines being opened at (0,0) appear under it in such a way that the
timeline title bar is not reachable by the mouse, making it hard to
move.
This simple solution opens the windows a bit away from the top left
corner, at (100,100).
Fixes: https://pm.bsc.es/gitlab/rarias/ovni/-/issues/180
Some threads may fail to enable the kernel instrumentation by reaching
the memory lock limit, causing the kernel instrumentation to be disabled
without any error in the emulation.
To prevent this situation, we run the test manually and check that there
are no warnings during the execution.