#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>
}
}
-// ***** Host simcalls
-// Those functions are replaced by methods on the Host object.
-
-/** \ingroup simix_host_management
- * \deprecated */
-xbt_swag_t simcall_host_get_process_list(sg_host_t host)
-{
- return host->processes();
-}
-
-/** \ingroup simix_host_management
- * \deprecated */
-double simcall_host_get_current_power_peak(sg_host_t host)
-{
- return host->currentPowerPeak();
-}
-
-/** \ingroup simix_host_management
- * \deprecated */
-double simcall_host_get_power_peak_at(sg_host_t host, int pstate_index)
-{
- return host->powerPeakAt(pstate_index);
-}
-
-/** \deprecated */
-void simcall_host_get_params(sg_host_t vm, vm_params_t params)
-{
- vm->parameters(params);
-}
-
-/** \deprecated */
-void simcall_host_set_params(sg_host_t vm, vm_params_t params)
-{
- vm->setParameters(params);
-}
-
-/** \ingroup simix_storage_management
- * \deprecated */
-xbt_dict_t simcall_host_get_mounted_storage_list(sg_host_t host)
-{
- return host->mountedStoragesAsDict();
-}
-
-/** \ingroup simix_storage_management
- * \deprecated */
-xbt_dynar_t simcall_host_get_attached_storage_list(sg_host_t host)
-{
- return host->attachedStorages();
-}
-
-// ***** Other simcalls
+// ***** AS simcalls
/**
* \ingroup simix_host_management
}
-/**
- * \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.
simgrid::simix::kernel(std::bind(SIMIX_process_set_data, process, data));
}
-static void kill_process(void* arg)
+static void kill_process_from_timer(void* arg)
{
- simix_global->kill_process_function((smx_process_t) arg);
+ smx_process_t process = (smx_process_t) arg;
+ simix_global->kill_process_function(process);
+ process->kill_timer=NULL;
}
/**
if (simix_global->kill_process_function) {
XBT_DEBUG("Set kill time %f for process %s(%s)",kill_time, process->name,
sg_host_get_name(process->host));
- process->kill_timer = SIMIX_timer_set(kill_time, kill_process, process);
+ process->kill_timer = SIMIX_timer_set(kill_time, kill_process_from_timer, process);
}
}
}
* \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
*