}
/**
+ * \ingroup SIMIX_API
* \brief Initialize SIMIX internal data.
*
* \param argc Argc
}
/**
+ * \ingroup SIMIX_API
* \brief Clean the SIMIX simulation
*
* This functions remove the memory used by SIMIX
/**
+ * \ingroup SIMIX_API
* \brief A clock (in second).
*
* \return Return the clock.
}
}
+/**
+ * \ingroup SIMIX_API
+ * \brief Run the main simulation loop.
+ */
void SIMIX_run(void)
{
double time = 0;
/* WARNING, the order *must* be fixed or you'll jeopardize the simulation reproducibility (see RR-7653) */
/* Here, the order is ok because:
+ *
+ * Short proof: only maestro adds stuff to the process_to_run array, so the execution order of user contexts do not impact its order.
+ *
+ * Long proof: processes remain sorted through an arbitrary (implicit, complex but fixed) order in all cases.
+ *
* - if there is no kill during the simulation, processes remain sorted according by their PID.
* rational: This can be proved inductively.
* Assume that process_to_run is sorted at a beginning of one round (it is at round 0: the deployment file is parsed linearly).
}
/**
- * \brief Set the date to execute a function
+ * \brief Set the date to execute a function
*
* Set the date to execute the function on the surf.
- * \param date Date to execute function
- * \param function Function to be executed
- * \param arg Parameters of the function
+ * \param date Date to execute function
+ * \param function Function to be executed
+ * \param arg Parameters of the function
*
*/
XBT_INLINE void SIMIX_timer_set(double date, void *function, void *arg)