Line data Source code
1 1 : /** 2 : * @file gvt/gvt.h 3 : * 4 : * @brief Global Virtual Time 5 : * 6 : * SPDX-FileCopyrightText: 2008-2021 HPDCS Group <rootsim@googlegroups.com> 7 : * SPDX-License-Identifier: GPL-3.0-only 8 : */ 9 : #pragma once 10 : 11 : #include <core/core.h> 12 : #include <lp/msg.h> 13 : 14 1 : extern void gvt_global_init(void); 15 0 : extern simtime_t gvt_phase_run(void); 16 0 : extern void gvt_on_msg_process(simtime_t msg_t); 17 : 18 : #ifdef ROOTSIM_MPI 19 : 20 0 : extern __thread bool gvt_phase_green; 21 0 : extern __thread unsigned remote_msg_sent[MAX_NODES]; 22 0 : extern atomic_int remote_msg_received[2]; 23 : 24 1 : extern void gvt_on_start_ctrl_msg(void); 25 1 : extern void gvt_on_done_ctrl_msg(void); 26 : 27 0 : #define gvt_on_remote_msg_send(dest_nid) \ 28 : __extension__({ remote_msg_sent[dest_nid]++; }) 29 : 30 0 : #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 0 : #define gvt_phase_get() __extension__({ gvt_phase_green;}) 35 : #endif