-/* Copyright (c) 2004-2017. The SimGrid Team. All rights reserved. */
+/* Copyright (c) 2004-2018. The SimGrid Team. All rights reserved. */
/* This program is free software; you can redistribute it and/or modify it
* under the terms of the license (GNU LGPL) which comes with this package. */
XBT_LOG_NEW_DEFAULT_SUBCATEGORY(msg_gos, msg, "Logging specific to MSG (gos)");
-extern "C" {
-
/** \ingroup msg_task_usage
* \brief Executes a task and waits for its termination.
*
msg_error_t status = MSG_OK;
if (TRACE_actor_is_enabled())
- simgrid::instr::Container::byName(instr_pid(MSG_process_self()))->getState("MSG_PROCESS_STATE")->pushEvent("sleep");
+ simgrid::instr::Container::byName(instr_pid(MSG_process_self()))->getState("ACTOR_STATE")->pushEvent("sleep");
try {
simcall_process_sleep(nb_sec);
}
if (TRACE_actor_is_enabled())
- simgrid::instr::Container::byName(instr_pid(MSG_process_self()))->getState("MSG_PROCESS_STATE")->popEvent();
+ simgrid::instr::Container::byName(instr_pid(MSG_process_self()))->getState("ACTOR_STATE")->popEvent();
return status;
}
return ret;
}
-/* Internal function used to factorize code between MSG_task_isend_with_matching() and MSG_task_dsend(). */
+/* Internal function used to factorize code between MSG_task_isend(), MSG_task_isend_bounded(), and MSG_task_dsend(). */
static inline msg_comm_t MSG_task_isend_internal(msg_task_t task, const char* alias,
- int (*match_fun)(void*, void*, void*), void* match_data,
void_f_pvoid_t cleanup, int detached)
{
simdata_task_t t_simdata = nullptr;
msg_process_t myself = MSG_process_self();
simgrid::s4u::MailboxPtr mailbox = simgrid::s4u::Mailbox::byName(alias);
- int call_end = TRACE_msg_task_put_start(task);
+ TRACE_msg_task_put_start(task);
/* Prepare the task to send */
t_simdata = task->simdata;
/* Send it by calling SIMIX network layer */
smx_activity_t act =
simcall_comm_isend(myself->getImpl(), mailbox->getImpl(), t_simdata->bytes_amount, t_simdata->rate, task,
- sizeof(void*), (simix_match_func_t)match_fun, cleanup, nullptr, match_data, detached);
+ sizeof(void*), nullptr, cleanup, nullptr, nullptr, detached);
t_simdata->comm = boost::static_pointer_cast<simgrid::kernel::activity::CommImpl>(act);
msg_comm_t comm = nullptr;
if (TRACE_is_enabled())
simcall_set_category(act, task->category);
- if (call_end)
- TRACE_msg_task_put_end();
+ TRACE_msg_task_put_end();
return comm;
}
*/
msg_comm_t MSG_task_isend(msg_task_t task, const char *alias)
{
- return MSG_task_isend_internal(task, alias, nullptr, nullptr, nullptr, 0);
+ return MSG_task_isend_internal(task, alias, nullptr, 0);
}
/** \ingroup msg_task_usage
msg_comm_t MSG_task_isend_bounded(msg_task_t task, const char *alias, double maxrate)
{
task->simdata->rate = maxrate;
- return MSG_task_isend_internal(task, alias, nullptr, nullptr, nullptr, 0);
-}
-
-/** \ingroup msg_task_usage
- * \brief Sends a task on a mailbox, with support for matching requests
- *
- * This is a non blocking function: use MSG_comm_wait() or MSG_comm_test() to end the communication.
- *
- * \param task a #msg_task_t to send on another location.
- * \param alias name of the mailbox to sent the task to
- * \param match_fun boolean function which parameters are:
- * - match_data_provided_here
- * - match_data_provided_by_other_side_if_any
- * - the_smx_synchro_describing_the_other_side
- * \param match_data user provided data passed to match_fun
- * \return the msg_comm_t communication created
- */
-msg_comm_t MSG_task_isend_with_matching(msg_task_t task, const char* alias, int (*match_fun)(void*, void*, void*),
- void* match_data)
-{
- return MSG_task_isend_internal(task, alias, match_fun, match_data, nullptr, 0);
+ return MSG_task_isend_internal(task, alias, nullptr, 0);
}
/** \ingroup msg_task_usage
*/
void MSG_task_dsend(msg_task_t task, const char *alias, void_f_pvoid_t cleanup)
{
- MSG_task_isend_internal(task, alias, nullptr, nullptr, cleanup, 1);
+ MSG_task_isend_internal(task, alias, cleanup, 1);
}
/** \ingroup msg_task_usage
/** \ingroup msg_task_usage
* \brief Checks whether a communication is done, and if yes, finalizes it.
* \param comm the communication to test
- * \return TRUE if the communication is finished
+ * \return 'true' if the communication is finished
* (but it may have failed, use MSG_comm_get_status() to know its status)
- * or FALSE if the communication is not finished yet
- * If the status is FALSE, don't forget to use MSG_process_sleep() after the test.
+ * or 'false' if the communication is not finished yet
+ * If the status is 'false', don't forget to use MSG_process_sleep() after the test.
*/
int MSG_comm_test(msg_comm_t comm)
{
- int finished = 0;
+ bool finished = false;
try {
finished = simcall_comm_test(comm->s_comm);
switch (e.category) {
case network_error:
comm->status = MSG_TRANSFER_FAILURE;
- finished = 1;
+ finished = true;
break;
case timeout_error:
comm->status = MSG_TIMEOUT;
- finished = 1;
+ finished = true;
break;
default:
throw;
msg_process_t process = MSG_process_self();
simgrid::s4u::MailboxPtr mailbox = simgrid::s4u::Mailbox::byName(alias);
- int call_end = TRACE_msg_task_put_start(task);
+ TRACE_msg_task_put_start(task);
/* Prepare the task to send */
t_simdata = task->simdata;
/* Try to send it by calling SIMIX network layer */
try {
smx_activity_t comm = nullptr; /* MC needs the comm to be set to nullptr during the simix call */
- comm = simcall_comm_isend(SIMIX_process_self(), mailbox->getImpl(),t_simdata->bytes_amount,
- t_simdata->rate, task, sizeof(void *), nullptr, nullptr, nullptr, task, 0);
+ comm = simcall_comm_isend(SIMIX_process_self(), mailbox->getImpl(), t_simdata->bytes_amount, t_simdata->rate, task,
+ sizeof(void*), nullptr, nullptr, nullptr, nullptr, 0);
if (TRACE_is_enabled())
simcall_set_category(comm, task->category);
t_simdata->comm = boost::static_pointer_cast<simgrid::kernel::activity::CommImpl>(comm);
t_simdata->setNotUsed();
}
- if (call_end)
- TRACE_msg_task_put_end();
+ TRACE_msg_task_put_end();
return ret;
}
{
return task->category;
}
-}