#include "xbt/ex.h"
#include "mc/mc.h"
#include "src/simix/smx_host_private.h"
-#include "src/simix/smx_private.hpp"
+
+#include "src/simix/SynchroComm.hpp"
#include <simgrid/simix.hpp>
}
-/**
- * \ingroup simix_process_management
- * \brief Destroys an execution synchro.
- *
- * Destroys a synchro, freeing its memory. This function cannot be called if there are a conditional waiting for it.
- * \param execution The execution synchro to destroy
- */
-void simcall_execution_destroy(smx_synchro_t execution)
-{
- simcall_BODY_execution_destroy(execution);
-}
-
/**
* \ingroup simix_process_management
* \brief Cancels an execution synchro.
simcall_BODY_execution_cancel(execution);
}
-/**
- * \ingroup simix_process_management
- * \brief Returns how much of an execution synchro remains to be done.
- *
- * \param execution The execution synchro
- * \return The remaining amount
- */
-double simcall_execution_get_remains(smx_synchro_t execution)
-{
- return simcall_BODY_execution_get_remains(execution);
-}
-
-/**
- * \ingroup simix_process_management
- * \brief Returns the state of an execution synchro.
- *
- * \param execution The execution synchro
- * \return The state
- */
-e_smx_state_t simcall_execution_get_state(smx_synchro_t execution)
-{
- return simcall_BODY_execution_get_state(execution);
-}
-
/**
* \ingroup simix_process_management
* \brief Changes the priority of an execution synchro.
* \param mbox The rendez-vous point
* \return The communication or NULL if empty
*/
-smx_synchro_t simcall_mbox_get_head(smx_mailbox_t mbox)
+smx_synchro_t simcall_mbox_front(smx_mailbox_t mbox)
{
- return simcall_BODY_mbox_get_head(mbox);
+
+ return mbox->comm_queue->empty()? nullptr:mbox->comm_queue->front();
}
void simcall_mbox_set_receiver(smx_mailbox_t mbox, smx_process_t process)
simcall_BODY_mbox_set_receiver(mbox, process);
}
-smx_process_t simcall_mbox_get_receiver(smx_mailbox_t mbox)
-{
- return simcall_BODY_mbox_get_receiver(mbox);
-}
-
/**
* \ingroup simix_comm_management
*/
/**
* \ingroup simix_comm_management
*/
-void simcall_comm_cancel(smx_synchro_t comm)
+void simcall_comm_cancel(smx_synchro_t synchro)
{
- simcall_BODY_comm_cancel(comm);
+ simgrid::simix::kernel([synchro]{
+ simgrid::simix::Comm *comm = static_cast<simgrid::simix::Comm*>(synchro);
+ comm->cancel();
+ });
}
/**
return simcall_BODY_comm_test(comm);
}
-/**
- * \ingroup simix_comm_management
- *
- */
-double simcall_comm_get_remains(smx_synchro_t comm)
-{
- return simcall_BODY_comm_get_remains(comm);
-}
-
-/**
- * \ingroup simix_comm_management
- *
- */
-e_smx_state_t simcall_comm_get_state(smx_synchro_t comm)
-{
- return simcall_BODY_comm_get_state(comm);
-}
-
-/**
- * \ingroup simix_comm_management
- *
- */
-void *simcall_comm_get_src_data(smx_synchro_t comm)
-{
- return simcall_BODY_comm_get_src_data(comm);
-}
-
-/**
- * \ingroup simix_comm_management
- *
- */
-void *simcall_comm_get_dst_data(smx_synchro_t comm)
-{
- return simcall_BODY_comm_get_dst_data(comm);
-}
-
-/**
- * \ingroup simix_comm_management
- *
- */
-smx_process_t simcall_comm_get_src_proc(smx_synchro_t comm)
-{
- return simcall_BODY_comm_get_src_proc(comm);
-}
-
-/**
- * \ingroup simix_comm_management
- *
- */
-smx_process_t simcall_comm_get_dst_proc(smx_synchro_t comm)
-{
- return simcall_BODY_comm_get_dst_proc(comm);
-}
-
/**
* \ingroup simix_synchro_management
*