ovni/src/emu/nanos6/nanos6_priv.h

88 lines
1.4 KiB
C

/* Copyright (c) 2021-2023 Barcelona Supercomputing Center (BSC)
* SPDX-License-Identifier: GPL-3.0-or-later */
#ifndef NANOS6_PRIV_H
#define NANOS6_PRIV_H
#include "emu.h"
#include "task.h"
#include "model_cpu.h"
#include "model_thread.h"
/* Private enums */
enum nanos6_chan {
CH_TASKID = 0,
CH_TYPE,
CH_SUBSYSTEM,
CH_RANK,
CH_THREAD,
CH_IDLE,
CH_MAX,
};
enum nanos6_ss_state {
ST_TASK_BODY = 1,
ST_TASK_CREATING,
ST_TASK_SUBMIT,
ST_TASK_SPAWNING,
ST_TASK_FOR,
ST_SCHED_ADDING,
ST_SCHED_PROCESSING,
ST_SCHED_SERVING,
ST_DEP_REG,
ST_DEP_UNREG,
ST_BLK_TASKWAIT,
ST_BLK_WAITFOR,
ST_BLK_BLOCKING,
ST_BLK_UNBLOCKING,
ST_ALLOCATING,
ST_FREEING,
ST_HANDLING_TASK,
ST_WORKER_LOOP,
ST_SWITCH_TO,
ST_MIGRATE,
ST_SUSPEND,
ST_RESUME,
/* Value 51 is broken in old Paraver */
EV_SCHED_RECV = 60,
EV_SCHED_SEND,
EV_SCHED_SELF,
EV_CPU_IDLE,
EV_CPU_ACTIVE,
EV_SIGNAL,
};
enum nanos6_thread_type {
ST_TH_LEADER = 1,
ST_TH_MAIN = 2,
ST_TH_WORKER = 3,
ST_TH_EXTERNAL = 4,
};
enum nanos6_worker_idle {
ST_WORKER_IDLE = 1,
};
struct nanos6_thread {
struct model_thread m;
struct task_stack task_stack;
};
struct nanos6_cpu {
struct model_cpu m;
};
struct nanos6_proc {
struct task_info task_info;
};
int model_nanos6_probe(struct emu *emu);
int model_nanos6_create(struct emu *emu);
int model_nanos6_connect(struct emu *emu);
int model_nanos6_event(struct emu *emu);
int model_nanos6_finish(struct emu *emu);
#endif /* NANOS6_PRIV_H */