* iteratively until there doesn't remain any. At this point, the function
* returns to the caller which can handle the visible (and ready) simcalls.
*/
-XBT_PRIVATE void wait_for_requests();
+XBT_PRIVATE void execute_actors();
XBT_PRIVATE extern std::vector<double> processes_time;
void replay(RecordTrace const& trace)
{
- simgrid::mc::wait_for_requests();
+ simgrid::mc::execute_actors();
for (simgrid::mc::Transition const& transition : trace) {
XBT_DEBUG("Executing %i$%i", transition.pid_, transition.times_considered_);
// Execute the request:
simcall->issuer_->simcall_handle(transition.times_considered_);
- simgrid::mc::wait_for_requests();
+ simgrid::mc::execute_actors();
}
}
s_mc_message_int_t answer{MessageType::DEADLOCK_CHECK_REPLY, deadlock};
xbt_assert(channel_.send(answer) == 0, "Could not send response");
}
-void AppSide::handle_continue(const s_mc_message_t*) const
-{
- /* Nothing to do */
-}
-void AppSide::handle_simcall(const s_mc_message_simcall_handle_t* message) const
+void AppSide::handle_simcall_execute(const s_mc_message_simcall_handle_t* message) const
{
kernel::actor::ActorImpl* process = kernel::actor::ActorImpl::by_pid(message->pid_);
xbt_assert(process != nullptr, "Invalid pid %lu", message->pid_);
void AppSide::handle_messages() const
{
- while (true) {
+ while (true) { // Until we get a CONTINUE message
XBT_DEBUG("Waiting messages from model-checker");
std::array<char, MC_MESSAGE_LENGTH> message_buffer;
case MessageType::CONTINUE:
assert_msg_size("MESSAGE_CONTINUE", s_mc_message_t);
- handle_continue(message);
return;
case MessageType::SIMCALL_HANDLE:
assert_msg_size("SIMCALL_HANDLE", s_mc_message_simcall_handle_t);
- handle_simcall((s_mc_message_simcall_handle_t*)message_buffer.data());
+ handle_simcall_execute((s_mc_message_simcall_handle_t*)message_buffer.data());
break;
case MessageType::SIMCALL_IS_VISIBLE: {
void AppSide::main_loop() const
{
while (true) {
- simgrid::mc::wait_for_requests();
+ simgrid::mc::execute_actors();
xbt_assert(channel_.send(MessageType::WAITING) == 0, "Could not send WAITING message to model-checker");
this->handle_messages();
}
private:
void handle_deadlock_check(const s_mc_message_t* msg) const;
- void handle_continue(const s_mc_message_t* msg) const;
- void handle_simcall(const s_mc_message_simcall_handle_t* message) const;
+ void handle_simcall_execute(const s_mc_message_simcall_handle_t* message) const;
void handle_actor_enabled(const s_mc_message_actor_enabled_t* msg) const;
public: