Add nosv_cond API events (nosv 3.1.0)

This commit is contained in:
Aleix Boné 2024-10-29 15:36:15 +01:00
parent a4a5bf0d37
commit b5fd438ce0
No known key found for this signature in database
6 changed files with 33 additions and 2 deletions

View File

@ -10,6 +10,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
### Added
- Introduce part model.
- Support for `nosv_cond_wait`, `nosv_cond_signal` and `nosv_cond_broadcast` events VA{oOgGkK}.
### Changed
@ -17,6 +18,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Update trace format to version 3.
- The ovni.require metadata key is now mandatory.
- Store process metadata in thread metadata.
- nOS-V model version increased to 2.4.0.
### Fixed

View File

@ -621,7 +621,7 @@ List of events for the model *tampi* with identifier **`T`** at version `1.0.0`:
## Model nosv
List of events for the model *nosv* with identifier **`V`** at version `2.3.0`:
List of events for the model *nosv* with identifier **`V`** at version `2.4.0`:
<dl>
<dt><a id="VTc" href="#VTc"><pre>VTc(u32 taskid, u32 typeid)</pre></a></dt>
<dd>creates task %{taskid} with type %{typeid}</dd>
@ -715,6 +715,18 @@ List of events for the model *nosv* with identifier **`V`** at version `2.3.0`:
<dd>enters nosv_barrier_wait()</dd>
<dt><a id="VAB" href="#VAB"><pre>VAB</pre></a></dt>
<dd>leaves nosv_barrier_wait()</dd>
<dt><a id="VAo" href="#VAo"><pre>VAo</pre></a></dt>
<dd>enters nosv_cond_wait()</dd>
<dt><a id="VAO" href="#VAO"><pre>VAO</pre></a></dt>
<dd>leaves nosv_cond_wait()</dd>
<dt><a id="VAg" href="#VAg"><pre>VAg</pre></a></dt>
<dd>enters nosv_cond_signal()</dd>
<dt><a id="VAG" href="#VAG"><pre>VAG</pre></a></dt>
<dd>leaves nosv_cond_signal()</dd>
<dt><a id="VAk" href="#VAk"><pre>VAk</pre></a></dt>
<dd>enters nosv_cond_broadcast()</dd>
<dt><a id="VAK" href="#VAK"><pre>VAK</pre></a></dt>
<dd>leaves nosv_cond_broadcast()</dd>
<dt><a id="VHa" href="#VHa"><pre>VHa</pre></a></dt>
<dd>enters nosv_attach()</dd>
<dt><a id="VHA" href="#VHA"><pre>VHA</pre></a></dt>

View File

@ -41,6 +41,8 @@ Track changes in emulator model versions.
## nOS-V
- nosv 2.4.0
- Add support for `nosv_cond_wait`, `nosv_cond_signal` and `nosv_cond_broadcast` events VA{oOgGkK}.
- nosv 2.3.0
- Add `nosv.can_breakdown` attribute to metadata for breakdown checks.
- nosv 2.2.0

View File

@ -67,6 +67,12 @@ static const int ss_table[256][256][3] = {
['U'] = { CHSS, POP, ST_API_MUTEX_UNLOCK },
['b'] = { CHSS, PUSH, ST_API_BARRIER_WAIT },
['B'] = { CHSS, POP, ST_API_BARRIER_WAIT },
['o'] = { CHSS, PUSH, ST_API_COND_WAIT },
['O'] = { CHSS, POP, ST_API_COND_WAIT },
['g'] = { CHSS, PUSH, ST_API_COND_SIGNAL },
['G'] = { CHSS, POP, ST_API_COND_SIGNAL },
['k'] = { CHSS, PUSH, ST_API_COND_BCAST },
['K'] = { CHSS, POP, ST_API_COND_BCAST },
},
/* FIXME: Move thread type to another channel, like nanos6 */
['H'] = {

View File

@ -44,6 +44,9 @@ enum nosv_ss_values {
ST_API_MUTEX_TRYLOCK,
ST_API_MUTEX_UNLOCK,
ST_API_BARRIER_WAIT,
ST_API_COND_WAIT,
ST_API_COND_SIGNAL,
ST_API_COND_BCAST,
ST_WORKER,
ST_DELEGATE,

View File

@ -65,6 +65,9 @@ static struct ev_decl model_evlist[] = {
PAIR_E("VAt", "VAT", "nosv_mutex_trylock()")
PAIR_E("VAu", "VAU", "nosv_mutex_unlock()")
PAIR_E("VAb", "VAB", "nosv_barrier_wait()")
PAIR_E("VAo", "VAO", "nosv_cond_wait()")
PAIR_E("VAg", "VAG", "nosv_cond_signal()")
PAIR_E("VAk", "VAK", "nosv_cond_broadcast()")
/* FIXME: VHA and VHa are not subsystems */
{ "VHa", "enters nosv_attach()" },
@ -82,7 +85,7 @@ static struct ev_decl model_evlist[] = {
struct model_spec model_nosv = {
.name = model_name,
.version = "2.3.0",
.version = "2.4.0",
.evlist = model_evlist,
.model = model_id,
.create = model_nosv_create,
@ -161,6 +164,9 @@ static const struct pcf_value_label nosv_ss_values[] = {
{ ST_API_MUTEX_TRYLOCK,"API: Mutex trylock" },
{ ST_API_MUTEX_UNLOCK, "API: Mutex unlock" },
{ ST_API_BARRIER_WAIT, "API: Barrier wait" },
{ ST_API_COND_WAIT, "API: Cond wait" },
{ ST_API_COND_SIGNAL, "API: Cond signal" },
{ ST_API_COND_BCAST, "API: Cond broadcast" },
{ ST_WORKER, "Thread: Worker" },
{ ST_DELEGATE, "Thread: Delegate" },
{ EV_SCHED_SEND, "EV Scheduler: Send task" },