56 msg_t *last_kept_event;
57 double committed_events;
61 while ((state =
list_head(lp->queue_states)) != NULL
62 && state->
lvt < time_barrier) {
64 if(&topology_settings && topology_settings.write_enabled)
65 rsfree(state->topology);
67 rsfree(state->region_data);
71 list_pop(lp->queue_states);
82 statistics_post_data(lp, STAT_COMMITTED, committed_events);
85 list_trunc(lp->queue_out, send_time, last_kept_event->timestamp,
101 bool compute_snapshot;
110 foreach_bound_lp(lp) {
115 if (compute_snapshot)
119 foreach_bound_lp(lp) {
120 if (time_barrier_pointer[i] == NULL)
127 clean_buffers_on_gvt(lp, time_barrier_pointer[i]->
lvt);
Structure for LP's state.
void log_delete(void *ckpt)
simtime_t lvt
Simulation time associated with the state log.
The ROOT-Sim scheduler main module header.
Generic thread management facilities.
Consistent and Committed Global State.
#define list_trunc(list, key_name, key_value, release_fn)
Truncate a list up to a certain point, starting from the head.
double simtime_t
This defines the type with whom timestamps are represented.
simulation_configuration rootsim_config
This global variable holds the configuration for the current simulation.
Memory Manager main header.
msg_t * last_event
This log has been taken after the execution of this event.
void * log
A pointer to the actual log.
void msg_release(msg_t *msg)
Release a message buffer.
state_t * find_time_barrier(struct lp_struct *lp, simtime_t simtime)
void ccgs_compute_snapshot(state_t *time_barrier_pointer[], simtime_t gvt)
void msg_hdr_release(msg_hdr_t *msg)
Release a message header.
void adopt_new_gvt(simtime_t new_gvt)
__thread unsigned int n_prc_per_thread
This is used to keep track of how many LPs were bound to the current KLT.
static unsigned long long snapshot_cycles
Counter for the invocations of adopt_new_gvt. This is used to determine whether a consistent state mu...
void fossil_collection(struct lp_struct *lp, simtime_t time_barrier)
int gvt_snapshot_cycles
GVT operations to be executed before rebuilding the state.