Implement extended init for CPU channels
This commit is contained in:
parent
97248c70ea
commit
3c913dd26b
14
chan.c
14
chan.c
@ -67,8 +67,9 @@ chan_cpu_init(struct ovni_cpu *cpu,
|
||||
struct ovni_chan **update_list,
|
||||
enum chan id,
|
||||
int track,
|
||||
// int init_st,
|
||||
// int enabled,
|
||||
int init_st,
|
||||
int enabled,
|
||||
int dirty,
|
||||
int row,
|
||||
FILE *prv,
|
||||
int64_t *clock)
|
||||
@ -79,11 +80,16 @@ chan_cpu_init(struct ovni_cpu *cpu,
|
||||
chan = &cpu->chan[id];
|
||||
assert(chan_to_prvtype[id][0] == (int) id);
|
||||
prvcpu = chan_to_prvtype[id][2];
|
||||
|
||||
chan_init(chan, track, row, prvcpu, prv, clock);
|
||||
|
||||
chan->id = id;
|
||||
chan->cpu = cpu;
|
||||
chan->update_list = update_list;
|
||||
|
||||
chan_init(chan, track, row, prvcpu, prv, clock);
|
||||
chan->enabled = enabled;
|
||||
chan->stack[chan->n++] = init_st;
|
||||
if(dirty)
|
||||
mark_dirty(chan);
|
||||
}
|
||||
|
||||
static void
|
||||
|
11
chan.h
11
chan.h
@ -16,7 +16,16 @@ chan_th_init(struct ovni_ethread *th,
|
||||
int64_t *clock);
|
||||
|
||||
void
|
||||
chan_cpu_init(struct ovni_cpu *cpu, struct ovni_chan **update_list, enum chan id, int track, int row, FILE *prv, int64_t *clock);
|
||||
chan_cpu_init(struct ovni_cpu *cpu,
|
||||
struct ovni_chan **update_list,
|
||||
enum chan id,
|
||||
int track,
|
||||
int row,
|
||||
int init_st,
|
||||
int enabled,
|
||||
int dirty,
|
||||
FILE *prv,
|
||||
int64_t *clock);
|
||||
|
||||
void
|
||||
chan_enable(struct ovni_chan *chan, int enabled);
|
||||
|
13
emu_nosv.c
13
emu_nosv.c
@ -50,15 +50,10 @@ hook_init_nosv(struct ovni_emu *emu)
|
||||
row = cpu->gindex + 1;
|
||||
ucpu = &emu->cpu_chan;
|
||||
|
||||
chan_cpu_init(cpu, ucpu, CHAN_NOSV_TASKID, CHAN_TRACK_TH_RUNNING, row, prv_cpu, clock);
|
||||
|
||||
chan_enable(&cpu->chan[CHAN_NOSV_TASKID], 1);
|
||||
chan_set(&cpu->chan[CHAN_NOSV_TASKID], 0);
|
||||
chan_enable(&cpu->chan[CHAN_NOSV_TASKID], 0);
|
||||
|
||||
chan_cpu_init(cpu, ucpu, CHAN_NOSV_TYPEID, CHAN_TRACK_TH_RUNNING, row, prv_cpu, clock);
|
||||
chan_cpu_init(cpu, ucpu, CHAN_NOSV_APPID, CHAN_TRACK_TH_RUNNING, row, prv_cpu, clock);
|
||||
chan_cpu_init(cpu, ucpu, CHAN_NOSV_SUBSYSTEM, CHAN_TRACK_TH_RUNNING, row, prv_cpu, clock);
|
||||
chan_cpu_init(cpu, ucpu, CHAN_NOSV_TASKID, CHAN_TRACK_TH_RUNNING, 0, 0, 1, row, prv_cpu, clock);
|
||||
chan_cpu_init(cpu, ucpu, CHAN_NOSV_TYPEID, CHAN_TRACK_TH_RUNNING, 0, 0, 0, row, prv_cpu, clock);
|
||||
chan_cpu_init(cpu, ucpu, CHAN_NOSV_APPID, CHAN_TRACK_TH_RUNNING, 0, 0, 0, row, prv_cpu, clock);
|
||||
chan_cpu_init(cpu, ucpu, CHAN_NOSV_SUBSYSTEM, CHAN_TRACK_TH_RUNNING, 0, 0, 0, row, prv_cpu, clock);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -41,7 +41,7 @@ hook_init_openmp(struct ovni_emu *emu)
|
||||
row = cpu->gindex + 1;
|
||||
ucpu = &emu->cpu_chan;
|
||||
|
||||
chan_cpu_init(cpu, ucpu, CHAN_OPENMP_MODE, CHAN_TRACK_TH_RUNNING, row, prv_cpu, clock);
|
||||
chan_cpu_init(cpu, ucpu, CHAN_OPENMP_MODE, CHAN_TRACK_TH_RUNNING, 0, 0, 1, row, prv_cpu, clock);
|
||||
}
|
||||
}
|
||||
|
||||
|
18
emu_ovni.c
18
emu_ovni.c
@ -46,20 +46,10 @@ hook_init_ovni(struct ovni_emu *emu)
|
||||
row = cpu->gindex + 1;
|
||||
ucpu = &emu->cpu_chan;
|
||||
|
||||
chan_cpu_init(cpu, ucpu, CHAN_OVNI_TID, CHAN_TRACK_TH_RUNNING, row, prv_cpu, clock);
|
||||
chan_cpu_init(cpu, ucpu, CHAN_OVNI_PID, CHAN_TRACK_TH_RUNNING, row, prv_cpu, clock);
|
||||
chan_cpu_init(cpu, ucpu, CHAN_OVNI_NRTHREADS, CHAN_TRACK_NONE, row, prv_cpu, clock);
|
||||
chan_cpu_init(cpu, ucpu, CHAN_OVNI_FLUSH, CHAN_TRACK_TH_RUNNING, row, prv_cpu, clock);
|
||||
|
||||
/* FIXME: Use extended initialization for CPUs too */
|
||||
chan_enable(&cpu->chan[CHAN_OVNI_TID], 1);
|
||||
chan_set(&cpu->chan[CHAN_OVNI_TID], 0);
|
||||
|
||||
chan_enable(&cpu->chan[CHAN_OVNI_PID], 1);
|
||||
chan_set(&cpu->chan[CHAN_OVNI_PID], 0);
|
||||
|
||||
chan_enable(&cpu->chan[CHAN_OVNI_NRTHREADS], 1);
|
||||
chan_set(&cpu->chan[CHAN_OVNI_NRTHREADS], 0);
|
||||
chan_cpu_init(cpu, ucpu, CHAN_OVNI_TID, CHAN_TRACK_TH_RUNNING, 0, 1, 1, row, prv_cpu, clock);
|
||||
chan_cpu_init(cpu, ucpu, CHAN_OVNI_PID, CHAN_TRACK_TH_RUNNING, 0, 1, 1, row, prv_cpu, clock);
|
||||
chan_cpu_init(cpu, ucpu, CHAN_OVNI_NRTHREADS, CHAN_TRACK_NONE, 0, 1, 1, row, prv_cpu, clock);
|
||||
chan_cpu_init(cpu, ucpu, CHAN_OVNI_FLUSH, CHAN_TRACK_TH_RUNNING, 0, 0, 0, row, prv_cpu, clock);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -41,7 +41,7 @@ hook_init_tampi(struct ovni_emu *emu)
|
||||
row = cpu->gindex + 1;
|
||||
ucpu = &emu->cpu_chan;
|
||||
|
||||
chan_cpu_init(cpu, ucpu, CHAN_TAMPI_MODE, CHAN_TRACK_TH_RUNNING, row, prv_cpu, clock);
|
||||
chan_cpu_init(cpu, ucpu, CHAN_TAMPI_MODE, CHAN_TRACK_TH_RUNNING, 0, 0, 1, row, prv_cpu, clock);
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user