* occurs). */
static size_t wait_all_for(const std::vector<CommPtr>& comms, double timeout);
/*! take a vector s4u::CommPtr and return the rank of the first finished one (or -1 if none is done). */
- static int test_any(const std::vector<CommPtr>& comms);
+ static ssize_t test_any(const std::vector<CommPtr>& comms);
XBT_ATTRIB_DEPRECATED_v332("Please use a plain vector for parameter")
static int wait_any(const std::vector<CommPtr>* comms) { return wait_any_for(*comms, -1); }
XBT_ATTRIB_DEPRECATED_v332("Please use a plain vector for parameter")
static void wait_all(const std::vector<CommPtr>* comms) { wait_all(*comms); }
XBT_ATTRIB_DEPRECATED_v332("Please use a plain vector for parameter")
- static int test_any(const std::vector<CommPtr>* comms) { return test_any(*comms); }
+ static int test_any(const std::vector<CommPtr>* comms) { return static_cast<int>(test_any(*comms)); }
Comm* start() override;
Comm* wait_for(double timeout) override;
XBT_PUBLIC bool simcall_comm_test(simgrid::kernel::activity::ActivityImpl* comm);
XBT_ATTRIB_DEPRECATED_v330("Please use a CommImpl*[] for first parameter") XBT_PUBLIC
int simcall_comm_testany(simgrid::kernel::activity::ActivityImplPtr comms[], size_t count);
-XBT_PUBLIC int simcall_comm_testany(simgrid::kernel::activity::CommImpl* comms[], size_t count);
+XBT_PUBLIC ssize_t simcall_comm_testany(simgrid::kernel::activity::CommImpl* comms[], size_t count);
XBT_ATTRIB_DEPRECATED_v330("Please use an ActivityImpl* for first parameter") inline void simcall_comm_wait(
const simgrid::kernel::activity::ActivityImplPtr& comm, double timeout)
return comm->test();
}
-int simcall_HANDLER_comm_testany(smx_simcall_t simcall, simgrid::kernel::activity::CommImpl* comms[], size_t count)
+ssize_t simcall_HANDLER_comm_testany(smx_simcall_t simcall, simgrid::kernel::activity::CommImpl* comms[], size_t count)
{
std::vector<simgrid::kernel::activity::CommImpl*> comms_vec(comms, comms + count);
return simgrid::kernel::activity::CommImpl::test_any(simcall->issuer_, comms_vec);
}
}
-int CommImpl::test_any(const actor::ActorImpl* issuer, const std::vector<CommImpl*>& comms)
+ssize_t CommImpl::test_any(const actor::ActorImpl* issuer, const std::vector<CommImpl*>& comms)
{
if (MC_is_active() || MC_record_replay_is_active()) {
int idx = issuer->simcall_.mc_value_;
bool test() override;
void wait_for(actor::ActorImpl* issuer, double timeout) override;
- static int test_any(const actor::ActorImpl* issuer, const std::vector<CommImpl*>& comms);
+ static ssize_t test_any(const actor::ActorImpl* issuer, const std::vector<CommImpl*>& comms);
static void wait_any_for(actor::ActorImpl* issuer, const std::vector<CommImpl*>& comms, double timeout);
CommImpl* start();
*/
int MSG_comm_testany(const_xbt_dynar_t comms)
{
- int finished_index = -1;
+ ssize_t finished_index = -1;
/* Create the equivalent array with SIMIX objects: */
std::vector<simgrid::kernel::activity::CommImpl*> s_comms;
}
}
- return finished_index;
+ return static_cast<int>(finished_index);
}
/** @brief Destroys the provided communication. */
return this;
}
-int Comm::test_any(const std::vector<CommPtr>& comms)
+ssize_t Comm::test_any(const std::vector<CommPtr>& comms)
{
std::vector<kernel::activity::CommImpl*> rcomms(comms.size());
std::transform(begin(comms), end(comms), begin(rcomms),
[](const CommPtr& comm) { return static_cast<kernel::activity::CommImpl*>(comm->pimpl_.get()); });
- int changed_pos = simcall_comm_testany(rcomms.data(), rcomms.size());
+ ssize_t changed_pos = simcall_comm_testany(rcomms.data(), rcomms.size());
if (changed_pos != -1)
comms.at(changed_pos)->complete(State::FINISHED);
return changed_pos;
std::transform(comms, comms + count, begin(rcomms), [](const simgrid::kernel::activity::ActivityImplPtr& comm) {
return static_cast<simgrid::kernel::activity::CommImpl*>(comm.get());
});
- return simcall_BODY_comm_testany(rcomms.data(), rcomms.size());
+ return static_cast<int>(simcall_BODY_comm_testany(rcomms.data(), rcomms.size()));
}
-int simcall_comm_testany(simgrid::kernel::activity::CommImpl* comms[], size_t count)
+ssize_t simcall_comm_testany(simgrid::kernel::activity::CommImpl* comms[], size_t count)
{
if (count == 0)
return -1;
{
simgrid::simix::marshal<size_t>(simcall->args_[1], arg);
}
-static inline int simcall_comm_testany__get__result(smx_simcall_t simcall)
+static inline ssize_t simcall_comm_testany__get__result(smx_simcall_t simcall)
{
- return simgrid::simix::unmarshal<int>(simcall->result_);
+ return simgrid::simix::unmarshal<ssize_t>(simcall->result_);
}
-static inline int simcall_comm_testany__getraw__result(smx_simcall_t simcall)
+static inline ssize_t simcall_comm_testany__getraw__result(smx_simcall_t simcall)
{
- return simgrid::simix::unmarshal_raw<int>(simcall->result_);
+ return simgrid::simix::unmarshal_raw<ssize_t>(simcall->result_);
}
-static inline void simcall_comm_testany__set__result(smx_simcall_t simcall, int result)
+static inline void simcall_comm_testany__set__result(smx_simcall_t simcall, ssize_t result)
{
- simgrid::simix::marshal<int>(simcall->result_, result);
+ simgrid::simix::marshal<ssize_t>(simcall->result_, result);
}
static inline simgrid::kernel::activity::CommImpl** simcall_comm_waitany__get__comms(smx_simcall_t simcall)
XBT_PRIVATE void simcall_HANDLER_comm_send(smx_simcall_t simcall, smx_actor_t sender, smx_mailbox_t mbox, double task_size, double rate, unsigned char* src_buff, size_t src_buff_size, simix_match_func_t match_fun, simix_copy_data_func_t copy_data_fun, void* data, double timeout);
XBT_PRIVATE boost::intrusive_ptr<simgrid::kernel::activity::ActivityImpl> simcall_HANDLER_comm_isend(smx_simcall_t simcall, smx_actor_t sender, smx_mailbox_t mbox, double task_size, double rate, unsigned char* src_buff, size_t src_buff_size, simix_match_func_t match_fun, simix_clean_func_t clean_fun, simix_copy_data_func_t copy_data_fun, void* data, bool detached);
XBT_PRIVATE bool simcall_HANDLER_comm_test(smx_simcall_t simcall, simgrid::kernel::activity::CommImpl* comm);
-XBT_PRIVATE int simcall_HANDLER_comm_testany(smx_simcall_t simcall, simgrid::kernel::activity::CommImpl** comms, size_t count);
+XBT_PRIVATE ssize_t simcall_HANDLER_comm_testany(smx_simcall_t simcall, simgrid::kernel::activity::CommImpl** comms, size_t count);
XBT_PRIVATE void simcall_HANDLER_comm_waitany(smx_simcall_t simcall, simgrid::kernel::activity::CommImpl** comms, size_t count, double timeout);
XBT_PRIVATE void simcall_HANDLER_comm_wait(smx_simcall_t simcall, simgrid::kernel::activity::CommImpl* comm, double timeout);
return simcall<bool, simgrid::kernel::activity::CommImpl*>(Simcall::COMM_TEST, comm);
}
-inline static int simcall_BODY_comm_testany(simgrid::kernel::activity::CommImpl** comms, size_t count)
+inline static ssize_t simcall_BODY_comm_testany(simgrid::kernel::activity::CommImpl** comms, size_t count)
{
if (false) /* Go to that function to follow the code flow through the simcall barrier */
simcall_HANDLER_comm_testany(&SIMIX_process_self()->simcall_, comms, count);
- return simcall<int, simgrid::kernel::activity::CommImpl**, size_t>(Simcall::COMM_TESTANY, comms, count);
+ return simcall<ssize_t, simgrid::kernel::activity::CommImpl**, size_t>(Simcall::COMM_TESTANY, comms, count);
}
inline static int simcall_BODY_comm_waitany(simgrid::kernel::activity::CommImpl** comms, size_t count, double timeout)
break;
case Simcall::COMM_TESTANY:
- simgrid::simix::marshal<int>(simcall_.result_, simcall_HANDLER_comm_testany(&simcall_, simgrid::simix::unmarshal<simgrid::kernel::activity::CommImpl**>(simcall_.args_[0]), simgrid::simix::unmarshal<size_t>(simcall_.args_[1])));
+ simgrid::simix::marshal<ssize_t>(simcall_.result_, simcall_HANDLER_comm_testany(&simcall_, simgrid::simix::unmarshal<simgrid::kernel::activity::CommImpl**>(simcall_.args_[0]), simgrid::simix::unmarshal<size_t>(simcall_.args_[1])));
simcall_answer();
break;
void comm_send(smx_actor_t sender, smx_mailbox_t mbox, double task_size, double rate, unsigned char* src_buff, size_t src_buff_size, simix_match_func_t match_fun, simix_copy_data_func_t copy_data_fun, void* data, double timeout) [[block]];
boost::intrusive_ptr<simgrid::kernel::activity::ActivityImpl> comm_isend(smx_actor_t sender, smx_mailbox_t mbox, double task_size, double rate, unsigned char* src_buff, size_t src_buff_size, simix_match_func_t match_fun, simix_clean_func_t clean_fun, simix_copy_data_func_t copy_data_fun, void* data, bool detached);
bool comm_test(simgrid::kernel::activity::CommImpl* comm);
-int comm_testany(simgrid::kernel::activity::CommImpl** comms, size_t count);
+ssize_t comm_testany(simgrid::kernel::activity::CommImpl** comms, size_t count);
int comm_waitany(simgrid::kernel::activity::CommImpl** comms, size_t count, double timeout) [[block]];
void comm_wait(simgrid::kernel::activity::CommImpl* comm, double timeout) [[block]];