unsigned int iter;
while (xbt_dynar_length(simix_global->process_to_run)) {
- SIMIX_context_runall(simix_global->process_to_run);
-
- xbt_dynar_t tmp = simix_global->process_that_ran;
- simix_global->process_that_ran = simix_global->process_to_run;
- simix_global->process_to_run = tmp;
- xbt_dynar_reset(simix_global->process_to_run);
+ SIMIX_process_runall();
xbt_dynar_foreach(simix_global->process_that_ran, iter, process) {
req = &process->request;
if (req->call != REQ_NO_REQ && !MC_request_is_visible(req))
const char *hostname,
int argc, char **argv,
xbt_dict_t properties);
+void SIMIX_process_runall(void);
void SIMIX_process_kill(smx_process_t process);
void SIMIX_process_killall(smx_process_t issuer);
smx_process_t SIMIX_process_create_from_wrapper(smx_process_arg_t args);
while (xbt_dynar_length(simix_global->process_to_run)) {
XBT_DEBUG("New Sub-Schedule Round; size(queue)=%lu",
xbt_dynar_length(simix_global->process_to_run));
- SIMIX_context_runall(simix_global->process_to_run);
- xbt_dynar_t tmp = simix_global->process_that_ran;
- simix_global->process_that_ran = simix_global->process_to_run;
- simix_global->process_to_run = tmp;
- xbt_dynar_reset(simix_global->process_to_run);
+ SIMIX_process_runall();
xbt_dynar_foreach(simix_global->process_that_ran, iter, process) {
if (process->request.call != REQ_NO_REQ) {
XBT_DEBUG("Handling request %p", &process->request);
}
}
+/**
+ * \brief Executes the processes from simix_global->process_to_run.
+ *
+ * The processes of simix_global->process_to_run are run (in parallel if
+ * possible). On exit, simix_global->process_to_run is empty, and
+ * simix_global->process_that_ran contains the list of processes that just ran.
+ * The two lists are swapped so, be careful when using them before and after a
+ * call to this function.
+ */
+void SIMIX_process_runall(void)
+{
+ SIMIX_context_runall(simix_global->process_to_run);
+ xbt_dynar_t tmp = simix_global->process_that_ran;
+ simix_global->process_that_ran = simix_global->process_to_run;
+ simix_global->process_to_run = tmp;
+ xbt_dynar_reset(simix_global->process_to_run);
+}
+
/**
* \brief Internal function to kill a SIMIX process.
*