simgrid::kernel::actor::CommIsendSimcall observer(src, mbox, task_size, rate, src_buff, src_buff_size, match_fun,
nullptr, copy_data_fun, data, false);
simgrid::kernel::activity::ActivityImplPtr comm = simgrid::kernel::activity::CommImpl::isend(&observer);
- simcall->mc_value_ = 0;
comm->wait_for(simcall->issuer_, timeout);
}
simgrid::kernel::actor::CommIrecvSimcall observer(receiver, mbox, dst_buff, dst_buff_size, match_fun, copy_data_fun,
data, rate);
simgrid::kernel::activity::ActivityImplPtr comm = simgrid::kernel::activity::CommImpl::irecv(&observer);
- simcall->mc_value_ = 0;
comm->wait_for(simcall->issuer_, timeout);
}
/* Associate this simcall to the wait synchro */
register_simcall(&issuer->simcall_);
if (MC_is_active() || MC_record_replay_is_active()) {
- int idx = issuer->simcall_.mc_value_;
- if (idx == 0) {
- set_state(State::DONE);
- } else {
- /* If we reached this point, the wait simcall must have a timeout */
- /* Otherwise it shouldn't be enabled and executed by the MC */
- xbt_assert(timeout >= 0.0,
- "The checker asked me to raise a timeout on a communication that is not expecting any timeout");
- set_state(issuer == src_actor_ ? State::SRC_TIMEOUT : State::DST_TIMEOUT);
- }
+ // FIXME: what about timeouts?
+ set_state(State::DONE);
finish();
return;
}
/** Returns the amount of time that this transition can be used.
*
+ * If it's 0, the transition is not enabled.
* If it's 1 (as with send/wait), there is no need to fork the state space exploration on this point.
* If it's more than one (as with mc_random or waitany), we need to consider this transition several times to start
* differing branches
void simgrid::kernel::actor::ActorImpl::simcall_handle(int times_considered)
{
XBT_DEBUG("Handling simcall %p: %s", &simcall_, SIMIX_simcall_name(simcall_));
- simcall_.mc_value_ = times_considered;
if (simcall_.observer_ != nullptr)
simcall_.observer_->prepare(times_considered);
if (context_->wannadie())
simgrid::kernel::actor::SimcallObserver* observer_ = nullptr; // makes that simcall observable by the MC
unsigned int mc_max_consider_ =
0; // How many times this simcall should be used. If >1, this will be a fork in the state space.
- int mc_value_ = 0;
std::array<u_smx_scalar, 11> args_ = {};
u_smx_scalar result_ = {};
};