![]() |
The ROme OpTimistic Simulator
2.0.0
A General-Purpose Multithreaded Parallel/Distributed Simulation Platform
|
LP control blocks. More...
#include <stdbool.h>
#include <mm/state.h>
#include <mm/mm.h>
#include <mm/ecs.h>
#include <datatypes/list.h>
#include <datatypes/msgchannel.h>
#include <arch/ult.h>
#include <lib/numerical.h>
#include <lib/abm_layer.h>
#include <lib/topology.h>
#include <communication/communication.h>
#include <arch/x86/linux/cross_state_manager/cross_state_manager.h>
Go to the source code of this file.
Data Structures | |
struct | lp_struct |
Macros | |
#define | LP_STACK_SIZE 4194304 |
#define | LP_STATE_READY 0x00001 |
#define | LP_STATE_RUNNING 0x00002 |
#define | LP_STATE_RUNNING_ECS 0x00004 |
#define | LP_STATE_ROLLBACK 0x00008 |
#define | LP_STATE_SILENT_EXEC 0x00010 |
#define | LP_STATE_SUSPENDED 0x01010 |
#define | LP_STATE_READY_FOR_SYNCH 0x00011 |
#define | LP_STATE_WAIT_FOR_SYNCH 0x01001 |
#define | LP_STATE_WAIT_FOR_UNBLOCK 0x01002 |
#define | LP_STATE_WAIT_FOR_DATA 0x01004 |
#define | BLOCKED_STATE 0x01000 |
#define | is_blocked_state(state) (bool)(state & BLOCKED_STATE) |
#define | lvt(lp) (lp->bound != NULL ? lp->bound->timestamp : 0.0) |
#define | foreach_lp(lp) |
#define | foreach_bound_lp(lp) |
#define | LPS_bound_set(entry, lp) lps_bound_blocks[(entry)] = (lp); |
Functions | |
void | initialize_binding_blocks (void) |
void | initialize_lps (void) |
struct lp_struct * | find_lp_by_gid (GID_t) |
Variables | |
struct lp_struct ** | lps_blocks |
Maintain LPs' simulation and execution states. | |
__thread struct lp_struct ** | lps_bound_blocks |
__thread unsigned int | __lp_counter |
__thread unsigned int | __lp_bound_counter |
LP control blocks.
This header defines a LP control block, keeping information about both simulation state and execution state as a user thread.
This file is part of ROOT-Sim (ROme OpTimistic Simulator).
ROOT-Sim is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; only version 3 of the License applies.
ROOT-Sim is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with ROOT-Sim; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
Definition in file process.h.
#define foreach_bound_lp | ( | lp | ) |
#define foreach_lp | ( | lp | ) |
#define lvt | ( | lp | ) | (lp->bound != NULL ? lp->bound->timestamp : 0.0) |
This macro retrieves the LVT for the current LP. There is a small interval window where the value returned is the one of the next event to be processed. In particular, this happens in the scheduling function, when the bound is advanced to the next event to be processed, just before its actual execution.