Remove nosv code in favor of the thread type

This commit is contained in:
Rodrigo Arias 2021-10-29 18:27:49 +02:00
parent 41211eec8a
commit 5dc195a037
4 changed files with 34 additions and 5 deletions

View File

@ -63,8 +63,12 @@ VAW Exits nosv_waitfor()
VAc Enters nosv_schedpoint() VAc Enters nosv_schedpoint()
VAC Exits nosv_schedpoint() VAC Exits nosv_schedpoint()
VC[ Begins executing nosv code VHa Enters nosv_attach()
VC] Ends executing nosv code VHA Exits nosv_detach()
VHw Begins the execution as a worker
VHW Ends the execution as a worker
VHd Begins the execution as the delegate
VHD Ends the execution as the delegate
-------------------- TAMPI (model=T) ---------------------- -------------------- TAMPI (model=T) ----------------------

4
emu.h
View File

@ -72,12 +72,14 @@ enum nosv_ss_values {
ST_NOSV_MEM_ALLOCATING, ST_NOSV_MEM_ALLOCATING,
ST_NOSV_MEM_FREEING, ST_NOSV_MEM_FREEING,
ST_NOSV_TASK_RUNNING, ST_NOSV_TASK_RUNNING,
ST_NOSV_CODE,
ST_NOSV_API_SUBMIT, ST_NOSV_API_SUBMIT,
ST_NOSV_API_PAUSE, ST_NOSV_API_PAUSE,
ST_NOSV_API_YIELD, ST_NOSV_API_YIELD,
ST_NOSV_API_WAITFOR, ST_NOSV_API_WAITFOR,
ST_NOSV_API_SCHEDPOINT, ST_NOSV_API_SCHEDPOINT,
ST_NOSV_ATTACH,
ST_NOSV_WORKER,
ST_NOSV_DELEGATE,
EV_NOSV_SCHED_RECV, EV_NOSV_SCHED_RECV,
EV_NOSV_SCHED_SEND, EV_NOSV_SCHED_SEND,

View File

@ -411,6 +411,27 @@ pre_mem(struct ovni_emu *emu)
} }
} }
static void
pre_thread_type(struct ovni_emu *emu)
{
struct ovni_ethread *th;
struct ovni_chan *chan_th;
th = emu->cur_thread;
chan_th = &th->chan[CHAN_NOSV_SUBSYSTEM];
switch(emu->cur_ev->header.value)
{
case 'a': chan_push(chan_th, ST_NOSV_ATTACH); break;
case 'A': chan_pop (chan_th, ST_NOSV_ATTACH); break;
case 'w': chan_push(chan_th, ST_NOSV_WORKER); break;
case 'W': chan_pop (chan_th, ST_NOSV_WORKER); break;
case 'd': chan_push(chan_th, ST_NOSV_DELEGATE); break;
case 'D': chan_pop (chan_th, ST_NOSV_DELEGATE); break;
default: break;
}
}
static void static void
pre_ss(struct ovni_emu *emu, int st) pre_ss(struct ovni_emu *emu, int st)
{ {
@ -453,7 +474,7 @@ hook_pre_nosv(struct ovni_emu *emu)
case 'S': pre_sched(emu); break; case 'S': pre_sched(emu); break;
case 'U': pre_ss(emu, ST_NOSV_SCHED_SUBMITTING); break; case 'U': pre_ss(emu, ST_NOSV_SCHED_SUBMITTING); break;
case 'M': pre_mem(emu); break; case 'M': pre_mem(emu); break;
case 'C': pre_ss(emu, ST_NOSV_CODE); break; case 'H': pre_thread_type(emu); break;
case 'A': pre_api(emu); break; case 'A': pre_api(emu); break;
default: default:
break; break;

4
pcf.c
View File

@ -286,7 +286,6 @@ struct event_value nosv_ss_values[] = {
{ ST_NOSV_SCHED_SERVING, "Scheduler: Serving" }, { ST_NOSV_SCHED_SERVING, "Scheduler: Serving" },
{ ST_NOSV_SCHED_SUBMITTING, "Scheduler: Submitting" }, { ST_NOSV_SCHED_SUBMITTING, "Scheduler: Submitting" },
{ ST_NOSV_TASK_RUNNING, "Task: Running" }, { ST_NOSV_TASK_RUNNING, "Task: Running" },
{ ST_NOSV_CODE, "nOS-V code" },
{ ST_NOSV_MEM_ALLOCATING, "Memory: Allocating" }, { ST_NOSV_MEM_ALLOCATING, "Memory: Allocating" },
{ ST_NOSV_MEM_FREEING, "Memory: Freeing" }, { ST_NOSV_MEM_FREEING, "Memory: Freeing" },
{ ST_NOSV_API_SUBMIT, "API: Submit" }, { ST_NOSV_API_SUBMIT, "API: Submit" },
@ -294,6 +293,9 @@ struct event_value nosv_ss_values[] = {
{ ST_NOSV_API_YIELD, "API: Yield" }, { ST_NOSV_API_YIELD, "API: Yield" },
{ ST_NOSV_API_WAITFOR, "API: Waitfor" }, { ST_NOSV_API_WAITFOR, "API: Waitfor" },
{ ST_NOSV_API_SCHEDPOINT, "API: Scheduling point" }, { ST_NOSV_API_SCHEDPOINT, "API: Scheduling point" },
{ ST_NOSV_ATTACH, "Thread: Attached" },
{ ST_NOSV_WORKER, "Thread: Worker" },
{ ST_NOSV_DELEGATE, "Thread: Delegate" },
{ EV_NOSV_SCHED_SEND, "EV Scheduler: Send task" }, { EV_NOSV_SCHED_SEND, "EV Scheduler: Send task" },
{ EV_NOSV_SCHED_RECV, "EV Scheduler: Recv task" }, { EV_NOSV_SCHED_RECV, "EV Scheduler: Recv task" },
{ EV_NOSV_SCHED_SELF, "EV Scheduler: Self-assign task" }, { EV_NOSV_SCHED_SELF, "EV Scheduler: Self-assign task" },