Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
New function: MSG_parallel_task_execute_with_timeout
[simgrid.git] / src / simix / libsmx.cpp
index 91447fe..4686b80 100644 (file)
 
 #include <xbt/functional.hpp>
 
+#include <simgrid/s4u/VirtualMachine.hpp>
 #include <simgrid/simix/blocking_simcall.hpp>
 
-#include "src/mc/mc_replay.h"
+#include "mc/mc.h"
 #include "smx_private.h"
+#include "src/kernel/activity/SynchroComm.hpp"
 #include "src/mc/mc_forward.hpp"
-#include "xbt/ex.h"
-#include "mc/mc.h"
+#include "src/mc/mc_replay.h"
 #include "src/simix/smx_host_private.h"
-#include "src/kernel/activity/SynchroComm.hpp"
-#include "src/surf/virtual_machine.hpp"
-
+#include "src/surf/VirtualMachineImpl.hpp"
+#include "xbt/ex.h"
 
 #include <simgrid/simix.hpp>
 
@@ -97,15 +97,12 @@ smx_activity_t simcall_execution_start(const char *name,
  * amount between each pair of hosts
  * \param amount the SURF action amount
  * \param rate the SURF action rate
+ * \param timeout timeout
  * \return A new SIMIX execution synchronization
  */
-smx_activity_t simcall_execution_parallel_start(const char *name,
-                                         int host_nb,
-                                         sg_host_t *host_list,
-                                         double *flops_amount,
-                                         double *bytes_amount,
-                                         double amount,
-                                         double rate)
+smx_activity_t simcall_execution_parallel_start(const char* name, int host_nb, sg_host_t* host_list,
+                                                double* flops_amount, double* bytes_amount, double amount, double rate,
+                                                double timeout)
 {
   int i,j;
   /* checking for infinite values */
@@ -122,11 +119,8 @@ smx_activity_t simcall_execution_parallel_start(const char *name,
   xbt_assert(std::isfinite(amount), "amount is not finite!");
   xbt_assert(std::isfinite(rate), "rate is not finite!");
 
-  return simcall_BODY_execution_parallel_start(name, host_nb, host_list,
-                                            flops_amount,
-                                            bytes_amount,
-                                            amount, rate);
-
+  return simcall_BODY_execution_parallel_start(name, host_nb, host_list, flops_amount, bytes_amount, amount, rate,
+                                               timeout);
 }
 
 /**
@@ -181,22 +175,20 @@ e_smx_state_t simcall_execution_wait(smx_activity_t execution)
   return (e_smx_state_t) simcall_BODY_execution_wait(execution);
 }
 
-
 /**
  * \ingroup simix_vm_management
  * \brief Create a VM on the given physical host.
  *
  * \param name VM name
- * \param host Physical host
+ * \param dest Physical host on which to create the VM
  *
  * \return The host object of the VM
  */
-sg_host_t simcall_vm_create(const char *name, sg_host_t phys_host)
+sg_host_t simcall_vm_create(const char* name, sg_host_t dest)
 {
-  return simgrid::simix::kernelImmediate([&] {
-    surf_vm_model->createVM(name, phys_host);
-    sg_host_t host = sg_host_by_name(name);
-    SIMIX_host_create(host);
+  return simgrid::simix::kernelImmediate([&name, &dest] {
+    sg_host_t host = new simgrid::s4u::VirtualMachine(name, dest);
+    host->extension_set<simgrid::simix::Host>(new simgrid::simix::Host());
 
     return host;
   });