Move ust model back to ovni
This commit is contained in:
parent
9202085267
commit
2c43a6c155
@ -23,7 +23,6 @@ add_library(emu STATIC
|
|||||||
emu_trace.c
|
emu_trace.c
|
||||||
loom.c
|
loom.c
|
||||||
metadata.c
|
metadata.c
|
||||||
model_ust.c
|
|
||||||
mux.c
|
mux.c
|
||||||
path.c
|
path.c
|
||||||
proc.c
|
proc.c
|
||||||
@ -34,6 +33,8 @@ add_library(emu STATIC
|
|||||||
task.c
|
task.c
|
||||||
thread.c
|
thread.c
|
||||||
extend.c
|
extend.c
|
||||||
|
ovni/probe.c
|
||||||
|
ovni/event.c
|
||||||
nanos6/probe.c
|
nanos6/probe.c
|
||||||
nanos6/connect.c
|
nanos6/connect.c
|
||||||
nanos6/create.c
|
nanos6/create.c
|
||||||
|
@ -8,7 +8,6 @@
|
|||||||
#include "emu.h"
|
#include "emu.h"
|
||||||
|
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
#include "model_ust.h"
|
|
||||||
#include "models.h"
|
#include "models.h"
|
||||||
|
|
||||||
int
|
int
|
||||||
@ -55,8 +54,8 @@ emu_init(struct emu *emu, int argc, char *argv[])
|
|||||||
// /* Register all the models */
|
// /* Register all the models */
|
||||||
// emu_model_register(&emu->model, &ovni_model_spec, emu);
|
// emu_model_register(&emu->model, &ovni_model_spec, emu);
|
||||||
|
|
||||||
if (model_ust.create && model_ust.create(emu) != 0) {
|
if (model_ovni.create && model_ovni.create(emu) != 0) {
|
||||||
err("model ust create failed");
|
err("model ovni create failed");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
if (model_nanos6.create && model_nanos6.create(emu) != 0) {
|
if (model_nanos6.create && model_nanos6.create(emu) != 0) {
|
||||||
@ -71,8 +70,8 @@ emu_init(struct emu *emu, int argc, char *argv[])
|
|||||||
int
|
int
|
||||||
emu_connect(struct emu *emu)
|
emu_connect(struct emu *emu)
|
||||||
{
|
{
|
||||||
if (model_ust.connect && model_ust.connect(emu) != 0) {
|
if (model_ovni.connect && model_ovni.connect(emu) != 0) {
|
||||||
err("model ust connect failed");
|
err("model ovni connect failed");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
if (model_nanos6.connect && model_nanos6.connect(emu) != 0) {
|
if (model_nanos6.connect && model_nanos6.connect(emu) != 0) {
|
||||||
@ -144,7 +143,7 @@ emu_step(struct emu *emu)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Otherwise progress */
|
/* Otherwise progress */
|
||||||
if (emu->ev->m == 'O' && model_ust.event(emu) != 0) {
|
if (emu->ev->m == 'O' && model_ovni.event(emu) != 0) {
|
||||||
err("ovni event failed");
|
err("ovni event failed");
|
||||||
panic(emu);
|
panic(emu);
|
||||||
return -1;
|
return -1;
|
||||||
|
@ -1,28 +0,0 @@
|
|||||||
/* Copyright (c) 2023 Barcelona Supercomputing Center (BSC)
|
|
||||||
* SPDX-License-Identifier: GPL-3.0-or-later */
|
|
||||||
|
|
||||||
#ifndef MODEL_UST_H
|
|
||||||
#define MODEL_UST_H
|
|
||||||
|
|
||||||
/* The user-space thread "ust" execution model tracks the state of processes and
|
|
||||||
* threads running in the CPUs by instrumenting the threads before and after
|
|
||||||
* they are going to sleep. It just provides an approximate view of the real
|
|
||||||
* execution by the kernel. */
|
|
||||||
|
|
||||||
#include "emu_model.h"
|
|
||||||
|
|
||||||
extern struct model_spec model_ust;
|
|
||||||
|
|
||||||
#include "chan.h"
|
|
||||||
|
|
||||||
enum ust_chan_type {
|
|
||||||
UST_CHAN_FLUSH = 0,
|
|
||||||
UST_CHAN_BURST,
|
|
||||||
UST_CHAN_MAX,
|
|
||||||
};
|
|
||||||
|
|
||||||
struct ust_thread {
|
|
||||||
struct chan chan[UST_CHAN_MAX];
|
|
||||||
};
|
|
||||||
|
|
||||||
#endif /* MODEL_UST_H */
|
|
@ -6,7 +6,7 @@
|
|||||||
|
|
||||||
#include "emu_model.h"
|
#include "emu_model.h"
|
||||||
|
|
||||||
extern struct model_spec model_ust;
|
extern struct model_spec model_ovni;
|
||||||
extern struct model_spec model_nanos6;
|
extern struct model_spec model_nanos6;
|
||||||
|
|
||||||
#endif /* MODELS_H */
|
#endif /* MODELS_H */
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
|
|
||||||
#define ENABLE_DEBUG
|
#define ENABLE_DEBUG
|
||||||
|
|
||||||
#include "model_ust.h"
|
#include "ovni_priv.h"
|
||||||
|
|
||||||
#include "emu.h"
|
#include "emu.h"
|
||||||
#include "loom.h"
|
#include "loom.h"
|
||||||
@ -262,7 +262,7 @@ pre_affinity_remote(struct emu *emu)
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* It must have an assigned CPU */
|
/* It movni have an assigned CPU */
|
||||||
if (remote_th->cpu == NULL) {
|
if (remote_th->cpu == NULL) {
|
||||||
err("thread %d has no CPU", tid);
|
err("thread %d has no CPU", tid);
|
||||||
return -1;
|
return -1;
|
||||||
@ -412,31 +412,13 @@ process_ev(struct emu *emu)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
int
|
||||||
ust_probe(struct emu *emu)
|
ovni_event(struct emu *emu)
|
||||||
{
|
{
|
||||||
if (emu->system.nthreads == 0)
|
if (emu->ev->m != 'O') {
|
||||||
return -1;
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
static int
|
|
||||||
ust_event(struct emu *emu)
|
|
||||||
{
|
|
||||||
if (emu->ev->m != model_ust.model) {
|
|
||||||
err("unexpected event model %c\n", emu->ev->m);
|
err("unexpected event model %c\n", emu->ev->m);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
return process_ev(emu);
|
return process_ev(emu);
|
||||||
}
|
}
|
||||||
|
|
||||||
struct model_spec model_ust = {
|
|
||||||
.name = "ust",
|
|
||||||
.model = 'O',
|
|
||||||
.create = NULL,
|
|
||||||
.connect = NULL,
|
|
||||||
.event = ust_event,
|
|
||||||
.probe = ust_probe,
|
|
||||||
};
|
|
28
src/emu/ovni/ovni_priv.h
Normal file
28
src/emu/ovni/ovni_priv.h
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
/* Copyright (c) 2023 Barcelona Supercomputing Center (BSC)
|
||||||
|
* SPDX-License-Identifier: GPL-3.0-or-later */
|
||||||
|
|
||||||
|
#ifndef OVNI_PRIV_H
|
||||||
|
#define OVNI_PRIV_H
|
||||||
|
|
||||||
|
/* The user-space thread "ovni" execution model tracks the state of processes and
|
||||||
|
* threads running in the CPUs by instrumenting the threads before and after
|
||||||
|
* they are going to sleep. It jovni provides an approximate view of the real
|
||||||
|
* execution by the kernel. */
|
||||||
|
|
||||||
|
#include "emu.h"
|
||||||
|
#include "chan.h"
|
||||||
|
|
||||||
|
enum ovni_chan_type {
|
||||||
|
UST_CHAN_FLUSH = 0,
|
||||||
|
UST_CHAN_BURST,
|
||||||
|
UST_CHAN_MAX,
|
||||||
|
};
|
||||||
|
|
||||||
|
struct ovni_thread {
|
||||||
|
struct chan chan[UST_CHAN_MAX];
|
||||||
|
};
|
||||||
|
|
||||||
|
int ovni_probe(struct emu *emu);
|
||||||
|
int ovni_event(struct emu *emu);
|
||||||
|
|
||||||
|
#endif /* OVNI_PRIV_H */
|
22
src/emu/ovni/probe.c
Normal file
22
src/emu/ovni/probe.c
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
/* Copyright (c) 2021-2023 Barcelona Supercomputing Center (BSC)
|
||||||
|
* SPDX-License-Identifier: GPL-3.0-or-later */
|
||||||
|
|
||||||
|
#include "ovni_priv.h"
|
||||||
|
|
||||||
|
struct model_spec model_ovni = {
|
||||||
|
.name = "ovni",
|
||||||
|
.model = 'O',
|
||||||
|
.create = NULL,
|
||||||
|
.connect = NULL,
|
||||||
|
.event = ovni_event,
|
||||||
|
.probe = ovni_probe,
|
||||||
|
};
|
||||||
|
|
||||||
|
int
|
||||||
|
ovni_probe(struct emu *emu)
|
||||||
|
{
|
||||||
|
if (emu->system.nthreads == 0)
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user