The ROme OpTimistic Simulator  3.0.0
A General-Purpose Multithreaded Parallel/Distributed Simulation Platform
gvt.h
Go to the documentation of this file.
1 
9 #pragma once
10 
11 #include <core/core.h>
12 #include <lp/msg.h>
13 
14 extern void gvt_global_init(void);
15 extern simtime_t gvt_phase_run(void);
16 extern void gvt_on_msg_process(simtime_t msg_t);
17 
18 #ifdef ROOTSIM_MPI
19 
20 extern __thread bool gvt_phase_green;
21 extern __thread unsigned remote_msg_sent[MAX_NODES];
22 extern atomic_int remote_msg_received[2];
23 
24 extern void gvt_on_start_ctrl_msg(void);
25 extern void gvt_on_done_ctrl_msg(void);
26 
27 #define gvt_on_remote_msg_send(dest_nid) \
28 __extension__({ remote_msg_sent[dest_nid]++; })
29 
30 #define gvt_on_remote_msg_receive(msg_phase) \
31 __extension__({ atomic_fetch_add_explicit(remote_msg_received + \
32  msg_phase, 1U, memory_order_relaxed); })
33 
34 #define gvt_phase_get() __extension__({ gvt_phase_green;})
35 #endif
simtime_t
double simtime_t
The type used to represent logical time in the simulation.
Definition: core.h:62
gvt_on_start_ctrl_msg
void gvt_on_start_ctrl_msg(void)
Handles a MSG_CTRL_GVT_START control message.
Definition: gvt.c:145
gvt_on_done_ctrl_msg
void gvt_on_done_ctrl_msg(void)
Handles a MSG_CTRL_GVT_DONE control message.
Definition: gvt.c:158
msg.h
Message management functions.
MAX_NODES
#define MAX_NODES
The maximum number of supported MPI nodes.
Definition: core.h:68
core.h
Core ROOT-Sim functionalities.
gvt_global_init
void gvt_global_init(void)
Initializes the gvt module in the node.
Definition: gvt.c:56