-
- switch (req->call_) {
- case Simcall::COMM_ISEND:
- type = "iSend";
- args = "src=" + get_actor_string(issuer);
- args += ", buff=" + pointer_to_string(simcall_comm_isend__get__src_buff(req));
- args += ", size=" + buff_size_to_string(simcall_comm_isend__get__src_buff_size(req));
- break;
-
- case Simcall::COMM_IRECV: {
- size_t* remote_size = simcall_comm_irecv__get__dst_buff_size(req);
- size_t size = 0;
- if (remote_size)
- mc_model_checker->get_remote_process().read_bytes(&size, sizeof(size), remote(remote_size));
-
- type = "iRecv";
- args = "dst=" + get_actor_string(issuer);
- args += ", buff=" + pointer_to_string(simcall_comm_irecv__get__dst_buff(req));
- args += ", size=" + buff_size_to_string(size);
- break;
- }
-
- case Simcall::COMM_WAIT: {
- simgrid::kernel::activity::CommImpl* remote_act = simcall_comm_wait__get__comm(req);
- if (value == -1) {
- type = "WaitTimeout";
- args = "comm=" + pointer_to_string(remote_act);
- } else {
- type = "Wait";
-
- simgrid::mc::Remote<simgrid::kernel::activity::CommImpl> temp_activity;
- const simgrid::kernel::activity::CommImpl* act;
- mc_model_checker->get_remote_process().read(temp_activity, remote(remote_act));
- act = temp_activity.get_buffer();
-
- smx_actor_t src_proc =
- mc_model_checker->get_remote_process().resolve_actor(simgrid::mc::remote(act->src_actor_.get()));
- smx_actor_t dst_proc =
- mc_model_checker->get_remote_process().resolve_actor(simgrid::mc::remote(act->dst_actor_.get()));
- args = "comm=" + pointer_to_string(remote_act);
- args += " [" + get_actor_string(src_proc) + "-> " + get_actor_string(dst_proc) + "]";
- }
- break;
- }
-
- case Simcall::COMM_TEST: {
- simgrid::kernel::activity::CommImpl* remote_act = simcall_comm_test__get__comm(req);
- simgrid::mc::Remote<simgrid::kernel::activity::CommImpl> temp_activity;
- const simgrid::kernel::activity::CommImpl* act;
- mc_model_checker->get_remote_process().read(temp_activity, remote(remote_act));
- act = temp_activity.get_buffer();
-
- if (act->src_actor_.get() == nullptr || act->dst_actor_.get() == nullptr) {
- type = "Test FALSE";
- args = "comm=" + pointer_to_string(remote_act);
- } else {
- type = "Test TRUE";
-
- smx_actor_t src_proc =
- mc_model_checker->get_remote_process().resolve_actor(simgrid::mc::remote(act->src_actor_.get()));
- smx_actor_t dst_proc =
- mc_model_checker->get_remote_process().resolve_actor(simgrid::mc::remote(act->dst_actor_.get()));
- args = "comm=" + pointer_to_string(remote_act);
- args += " [" + get_actor_string(src_proc) + " -> " + get_actor_string(dst_proc) + "]";
- }
- break;
- }
-
- case Simcall::COMM_WAITANY: {
- type = "WaitAny";
- size_t count = simcall_comm_waitany__get__count(req);
- if (count > 0) {
- simgrid::kernel::activity::CommImpl* remote_sync;
- remote_sync =
- mc_model_checker->get_remote_process().read(remote(simcall_comm_waitany__get__comms(req) + value));
- args = "comm=" + pointer_to_string(remote_sync) + xbt::string_printf("(%d of %zu)", value + 1, count);
- } else
- args = "comm at idx " + std::to_string(value);
- break;
- }
-
- case Simcall::COMM_TESTANY:
- if (value == -1) {
- type = "TestAny FALSE";
- args = "-";
- } else {
- type = "TestAny";
- args = xbt::string_printf("(%d of %zu)", value + 1, simcall_comm_testany__get__count(req));
- }
- break;
-
- default:
- type = SIMIX_simcall_name(req->call_);
- args = "??";
- break;
- }
-
- return "[" + get_actor_string(issuer) + "] " + type + "(" + args + ")";