Simplifying TAMPI's emulator code
This commit is contained in:
parent
5e2409f69f
commit
345bb7e98a
119
emu_tampi.c
119
emu_tampi.c
@ -63,9 +63,8 @@ hook_init_tampi(struct ovni_emu *emu)
|
||||
|
||||
/* --------------------------- pre ------------------------------- */
|
||||
|
||||
|
||||
static void
|
||||
pre_send(struct ovni_emu *emu)
|
||||
pre_tampi_mode(struct ovni_emu *emu, int state)
|
||||
{
|
||||
struct ovni_ethread *th;
|
||||
|
||||
@ -74,110 +73,10 @@ pre_send(struct ovni_emu *emu)
|
||||
switch(emu->cur_ev->header.value)
|
||||
{
|
||||
case '[':
|
||||
chan_push(&th->chan[CHAN_TAMPI_MODE], ST_TAMPI_SEND);
|
||||
chan_push(&th->chan[CHAN_TAMPI_MODE], state);
|
||||
break;
|
||||
case ']':
|
||||
chan_pop(&th->chan[CHAN_TAMPI_MODE], ST_TAMPI_SEND);
|
||||
break;
|
||||
default:
|
||||
abort();
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
pre_recv(struct ovni_emu *emu)
|
||||
{
|
||||
struct ovni_ethread *th;
|
||||
|
||||
th = emu->cur_thread;
|
||||
|
||||
switch(emu->cur_ev->header.value)
|
||||
{
|
||||
case '[':
|
||||
chan_push(&th->chan[CHAN_TAMPI_MODE], ST_TAMPI_RECV);
|
||||
break;
|
||||
case ']':
|
||||
chan_pop(&th->chan[CHAN_TAMPI_MODE], ST_TAMPI_RECV);
|
||||
break;
|
||||
default:
|
||||
abort();
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
pre_isend(struct ovni_emu *emu)
|
||||
{
|
||||
struct ovni_ethread *th;
|
||||
|
||||
th = emu->cur_thread;
|
||||
|
||||
switch(emu->cur_ev->header.value)
|
||||
{
|
||||
case '[':
|
||||
chan_push(&th->chan[CHAN_TAMPI_MODE], ST_TAMPI_ISEND);
|
||||
break;
|
||||
case ']':
|
||||
chan_pop(&th->chan[CHAN_TAMPI_MODE], ST_TAMPI_ISEND);
|
||||
break;
|
||||
default:
|
||||
abort();
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
pre_irecv(struct ovni_emu *emu)
|
||||
{
|
||||
struct ovni_ethread *th;
|
||||
|
||||
th = emu->cur_thread;
|
||||
|
||||
switch(emu->cur_ev->header.value)
|
||||
{
|
||||
case '[':
|
||||
chan_push(&th->chan[CHAN_TAMPI_MODE], ST_TAMPI_IRECV);
|
||||
break;
|
||||
case ']':
|
||||
chan_pop(&th->chan[CHAN_TAMPI_MODE], ST_TAMPI_IRECV);
|
||||
break;
|
||||
default:
|
||||
abort();
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
pre_wait(struct ovni_emu *emu)
|
||||
{
|
||||
struct ovni_ethread *th;
|
||||
|
||||
th = emu->cur_thread;
|
||||
|
||||
switch(emu->cur_ev->header.value)
|
||||
{
|
||||
case '[':
|
||||
chan_push(&th->chan[CHAN_TAMPI_MODE], ST_TAMPI_WAIT);
|
||||
break;
|
||||
case ']':
|
||||
chan_pop(&th->chan[CHAN_TAMPI_MODE], ST_TAMPI_WAIT);
|
||||
break;
|
||||
default:
|
||||
abort();
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
pre_waitall(struct ovni_emu *emu)
|
||||
{
|
||||
struct ovni_ethread *th;
|
||||
|
||||
th = emu->cur_thread;
|
||||
|
||||
switch(emu->cur_ev->header.value)
|
||||
{
|
||||
case '[':
|
||||
chan_push(&th->chan[CHAN_TAMPI_MODE], ST_TAMPI_WAITALL);
|
||||
break;
|
||||
case ']':
|
||||
chan_pop(&th->chan[CHAN_TAMPI_MODE], ST_TAMPI_WAITALL);
|
||||
chan_pop(&th->chan[CHAN_TAMPI_MODE], state);
|
||||
break;
|
||||
default:
|
||||
abort();
|
||||
@ -191,12 +90,12 @@ hook_pre_tampi(struct ovni_emu *emu)
|
||||
|
||||
switch(emu->cur_ev->header.category)
|
||||
{
|
||||
case 'S': pre_send(emu); break;
|
||||
case 'R': pre_recv(emu); break;
|
||||
case 's': pre_isend(emu); break;
|
||||
case 'r': pre_irecv(emu); break;
|
||||
case 'V': pre_wait(emu); break;
|
||||
case 'W': pre_waitall(emu); break;
|
||||
case 'S': pre_tampi_mode(emu, ST_TAMPI_SEND); break;
|
||||
case 'R': pre_tampi_mode(emu, ST_TAMPI_RECV); break;
|
||||
case 's': pre_tampi_mode(emu, ST_TAMPI_ISEND); break;
|
||||
case 'r': pre_tampi_mode(emu, ST_TAMPI_IRECV); break;
|
||||
case 'V': pre_tampi_mode(emu, ST_TAMPI_WAIT); break;
|
||||
case 'W': pre_tampi_mode(emu, ST_TAMPI_WAITALL); break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user