X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/98674d6baf1883ed72c4de907efed12e6e91d0b9..b08cf565e62c980d3fa23c031b341ca4f1427bd9:/src/simix/libsmx.cpp diff --git a/src/simix/libsmx.cpp b/src/simix/libsmx.cpp index 3058bad804..bbea457dd7 100644 --- a/src/simix/libsmx.cpp +++ b/src/simix/libsmx.cpp @@ -21,7 +21,8 @@ #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 @@ -40,57 +41,7 @@ void simcall_call(smx_process_t process) } } -// ***** 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 @@ -174,18 +125,6 @@ smx_synchro_t simcall_execution_parallel_start(const char *name, } -/** - * \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. @@ -198,30 +137,6 @@ void simcall_execution_cancel(smx_synchro_t execution) 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. @@ -603,9 +518,11 @@ void simcall_process_set_data(smx_process_t process, void *data) 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; } /** @@ -619,7 +536,7 @@ void simcall_process_set_kill_time(smx_process_t process, double kill_time) 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); } } } @@ -757,9 +674,10 @@ smx_mailbox_t simcall_mbox_get_by_name(const char *name) * \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) @@ -767,11 +685,6 @@ 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 */ @@ -876,9 +789,12 @@ smx_synchro_t simcall_comm_iprobe(smx_mailbox_t mbox, int type, int src, int tag /** * \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(synchro); + comm->cancel(); + }); } /** @@ -932,60 +848,6 @@ int simcall_comm_test(smx_synchro_t comm) 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 *