X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/f06041cf2c450457a0b47a49b66b19cb9133c18e..d5fc777ebb223e63cbaab9c2c78cb9a8f66b019a:/src/simix/popping_bodies.c diff --git a/src/simix/popping_bodies.c b/src/simix/popping_bodies.c index 0b413a2c7b..961a2c20e8 100644 --- a/src/simix/popping_bodies.c +++ b/src/simix/popping_bodies.c @@ -14,20 +14,20 @@ */ #include "smx_private.h" -#include "mc/mc_interface.h" +#include "src/mc/mc_forward.h" #include "xbt/ex.h" -inline static smx_host_t simcall_BODY_host_get_by_name(const char* name) { +inline static void simcall_BODY_host_on(sg_host_t host) { smx_process_t self = SIMIX_process_self(); /* Go to that function to follow the code flow through the simcall barrier */ - if (0) SIMIX_host_get_by_name(name); + if (0) SIMIX_host_on(host); /* end of the guide intended to the poor programmer wanting to go from MSG to Surf */ - self->simcall.call = SIMCALL_HOST_GET_BY_NAME; + self->simcall.call = SIMCALL_HOST_ON; memset(&self->simcall.result, 0, sizeof(self->simcall.result)); memset(self->simcall.args, 0, sizeof(self->simcall.args)); - self->simcall.args[0].cc = (const char*) name; + self->simcall.args[0].dp = (void*) host; if (self != simix_global->maestro_process) { XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name, SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call); @@ -35,17 +35,17 @@ inline static smx_host_t simcall_BODY_host_get_by_name(const char* name) { } else { SIMIX_simcall_handle(&self->simcall, 0); } - return self->simcall.result.dp; + } -inline static const char* simcall_BODY_host_get_name(smx_host_t host) { +inline static void simcall_BODY_host_off(sg_host_t host) { smx_process_t self = SIMIX_process_self(); /* Go to that function to follow the code flow through the simcall barrier */ - if (0) SIMIX_host_get_name(host); + if (0) simcall_HANDLER_host_off(&self->simcall, host); /* end of the guide intended to the poor programmer wanting to go from MSG to Surf */ - self->simcall.call = SIMCALL_HOST_GET_NAME; + self->simcall.call = SIMCALL_HOST_OFF; memset(&self->simcall.result, 0, sizeof(self->simcall.result)); memset(self->simcall.args, 0, sizeof(self->simcall.args)); self->simcall.args[0].dp = (void*) host; @@ -56,17 +56,17 @@ inline static const char* simcall_BODY_host_get_name(smx_host_t host) { } else { SIMIX_simcall_handle(&self->simcall, 0); } - return self->simcall.result.cc; + } -inline static void simcall_BODY_host_on(smx_host_t host) { +inline static xbt_dict_t simcall_BODY_host_get_properties(sg_host_t host) { smx_process_t self = SIMIX_process_self(); /* Go to that function to follow the code flow through the simcall barrier */ - if (0) SIMIX_host_on(host); + if (0) SIMIX_host_get_properties(host); /* end of the guide intended to the poor programmer wanting to go from MSG to Surf */ - self->simcall.call = SIMCALL_HOST_ON; + self->simcall.call = SIMCALL_HOST_GET_PROPERTIES; memset(&self->simcall.result, 0, sizeof(self->simcall.result)); memset(self->simcall.args, 0, sizeof(self->simcall.args)); self->simcall.args[0].dp = (void*) host; @@ -77,17 +77,17 @@ inline static void simcall_BODY_host_on(smx_host_t host) { } else { SIMIX_simcall_handle(&self->simcall, 0); } - + return self->simcall.result.dp; } -inline static void simcall_BODY_host_off(smx_host_t host) { +inline static int simcall_BODY_host_get_core(sg_host_t host) { smx_process_t self = SIMIX_process_self(); /* Go to that function to follow the code flow through the simcall barrier */ - if (0) simcall_HANDLER_host_off(&self->simcall, host); + if (0) SIMIX_host_get_core(host); /* end of the guide intended to the poor programmer wanting to go from MSG to Surf */ - self->simcall.call = SIMCALL_HOST_OFF; + self->simcall.call = SIMCALL_HOST_GET_CORE; memset(&self->simcall.result, 0, sizeof(self->simcall.result)); memset(self->simcall.args, 0, sizeof(self->simcall.args)); self->simcall.args[0].dp = (void*) host; @@ -98,17 +98,17 @@ inline static void simcall_BODY_host_off(smx_host_t host) { } else { SIMIX_simcall_handle(&self->simcall, 0); } - + return self->simcall.result.i; } -inline static xbt_dict_t simcall_BODY_host_get_properties(smx_host_t host) { +inline static xbt_swag_t simcall_BODY_host_get_process_list(sg_host_t host) { smx_process_t self = SIMIX_process_self(); /* Go to that function to follow the code flow through the simcall barrier */ - if (0) SIMIX_host_get_properties(host); + if (0) SIMIX_host_get_process_list(host); /* end of the guide intended to the poor programmer wanting to go from MSG to Surf */ - self->simcall.call = SIMCALL_HOST_GET_PROPERTIES; + self->simcall.call = SIMCALL_HOST_GET_PROCESS_LIST; memset(&self->simcall.result, 0, sizeof(self->simcall.result)); memset(self->simcall.args, 0, sizeof(self->simcall.args)); self->simcall.args[0].dp = (void*) host; @@ -122,14 +122,14 @@ inline static xbt_dict_t simcall_BODY_host_get_properties(smx_host_t host) { return self->simcall.result.dp; } -inline static int simcall_BODY_host_get_core(smx_host_t host) { +inline static double simcall_BODY_host_get_speed(sg_host_t host) { smx_process_t self = SIMIX_process_self(); /* Go to that function to follow the code flow through the simcall barrier */ - if (0) SIMIX_host_get_core(host); + if (0) SIMIX_host_get_speed(host); /* end of the guide intended to the poor programmer wanting to go from MSG to Surf */ - self->simcall.call = SIMCALL_HOST_GET_CORE; + self->simcall.call = SIMCALL_HOST_GET_SPEED; memset(&self->simcall.result, 0, sizeof(self->simcall.result)); memset(self->simcall.args, 0, sizeof(self->simcall.args)); self->simcall.args[0].dp = (void*) host; @@ -140,17 +140,17 @@ inline static int simcall_BODY_host_get_core(smx_host_t host) { } else { SIMIX_simcall_handle(&self->simcall, 0); } - return self->simcall.result.i; + return self->simcall.result.d; } -inline static xbt_swag_t simcall_BODY_host_get_process_list(smx_host_t host) { +inline static double simcall_BODY_host_get_available_speed(sg_host_t host) { smx_process_t self = SIMIX_process_self(); /* Go to that function to follow the code flow through the simcall barrier */ - if (0) SIMIX_host_get_process_list(host); + if (0) SIMIX_host_get_available_speed(host); /* end of the guide intended to the poor programmer wanting to go from MSG to Surf */ - self->simcall.call = SIMCALL_HOST_GET_PROCESS_LIST; + self->simcall.call = SIMCALL_HOST_GET_AVAILABLE_SPEED; memset(&self->simcall.result, 0, sizeof(self->simcall.result)); memset(self->simcall.args, 0, sizeof(self->simcall.args)); self->simcall.args[0].dp = (void*) host; @@ -161,17 +161,38 @@ inline static xbt_swag_t simcall_BODY_host_get_process_list(smx_host_t host) { } else { SIMIX_simcall_handle(&self->simcall, 0); } - return self->simcall.result.dp; + return self->simcall.result.d; } -inline static double simcall_BODY_host_get_speed(smx_host_t host) { +inline static int simcall_BODY_host_get_state(sg_host_t host) { smx_process_t self = SIMIX_process_self(); /* Go to that function to follow the code flow through the simcall barrier */ - if (0) SIMIX_host_get_speed(host); + if (0) SIMIX_host_get_state(host); /* end of the guide intended to the poor programmer wanting to go from MSG to Surf */ - self->simcall.call = SIMCALL_HOST_GET_SPEED; + self->simcall.call = SIMCALL_HOST_GET_STATE; + memset(&self->simcall.result, 0, sizeof(self->simcall.result)); + memset(self->simcall.args, 0, sizeof(self->simcall.args)); + self->simcall.args[0].dp = (void*) host; + if (self != simix_global->maestro_process) { + XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name, + SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call); + SIMIX_process_yield(self); + } else { + SIMIX_simcall_handle(&self->simcall, 0); + } + return self->simcall.result.i; + } + +inline static double simcall_BODY_host_get_current_power_peak(sg_host_t host) { + smx_process_t self = SIMIX_process_self(); + + /* Go to that function to follow the code flow through the simcall barrier */ + if (0) SIMIX_host_get_current_power_peak(host); + /* end of the guide intended to the poor programmer wanting to go from MSG to Surf */ + + self->simcall.call = SIMCALL_HOST_GET_CURRENT_POWER_PEAK; memset(&self->simcall.result, 0, sizeof(self->simcall.result)); memset(self->simcall.args, 0, sizeof(self->simcall.args)); self->simcall.args[0].dp = (void*) host; @@ -185,17 +206,18 @@ inline static double simcall_BODY_host_get_speed(smx_host_t host) { return self->simcall.result.d; } -inline static double simcall_BODY_host_get_available_speed(smx_host_t host) { +inline static double simcall_BODY_host_get_power_peak_at(sg_host_t host, int pstate_index) { smx_process_t self = SIMIX_process_self(); /* Go to that function to follow the code flow through the simcall barrier */ - if (0) SIMIX_host_get_available_speed(host); + if (0) SIMIX_host_get_power_peak_at(host, pstate_index); /* end of the guide intended to the poor programmer wanting to go from MSG to Surf */ - self->simcall.call = SIMCALL_HOST_GET_AVAILABLE_SPEED; + self->simcall.call = SIMCALL_HOST_GET_POWER_PEAK_AT; memset(&self->simcall.result, 0, sizeof(self->simcall.result)); memset(self->simcall.args, 0, sizeof(self->simcall.args)); self->simcall.args[0].dp = (void*) host; + self->simcall.args[1].i = (int) pstate_index; if (self != simix_global->maestro_process) { XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name, SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call); @@ -206,14 +228,14 @@ inline static double simcall_BODY_host_get_available_speed(smx_host_t host) { return self->simcall.result.d; } -inline static int simcall_BODY_host_get_state(smx_host_t host) { +inline static int simcall_BODY_host_get_nb_pstates(sg_host_t host) { smx_process_t self = SIMIX_process_self(); /* Go to that function to follow the code flow through the simcall barrier */ - if (0) SIMIX_host_get_state(host); + if (0) SIMIX_host_get_nb_pstates(host); /* end of the guide intended to the poor programmer wanting to go from MSG to Surf */ - self->simcall.call = SIMCALL_HOST_GET_STATE; + self->simcall.call = SIMCALL_HOST_GET_NB_PSTATES; memset(&self->simcall.result, 0, sizeof(self->simcall.result)); memset(self->simcall.args, 0, sizeof(self->simcall.args)); self->simcall.args[0].dp = (void*) host; @@ -227,17 +249,18 @@ inline static int simcall_BODY_host_get_state(smx_host_t host) { return self->simcall.result.i; } -inline static double simcall_BODY_host_get_current_power_peak(smx_host_t host) { +inline static double simcall_BODY_host_get_wattmin_at(sg_host_t host, int pstate_index) { smx_process_t self = SIMIX_process_self(); /* Go to that function to follow the code flow through the simcall barrier */ - if (0) SIMIX_host_get_current_power_peak(host); + if (0) SIMIX_host_get_wattmin_at(host, pstate_index); /* end of the guide intended to the poor programmer wanting to go from MSG to Surf */ - self->simcall.call = SIMCALL_HOST_GET_CURRENT_POWER_PEAK; + self->simcall.call = SIMCALL_HOST_GET_WATTMIN_AT; memset(&self->simcall.result, 0, sizeof(self->simcall.result)); memset(self->simcall.args, 0, sizeof(self->simcall.args)); self->simcall.args[0].dp = (void*) host; + self->simcall.args[1].i = (int) pstate_index; if (self != simix_global->maestro_process) { XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name, SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call); @@ -248,14 +271,14 @@ inline static double simcall_BODY_host_get_current_power_peak(smx_host_t host) { return self->simcall.result.d; } -inline static double simcall_BODY_host_get_power_peak_at(smx_host_t host, int pstate_index) { +inline static double simcall_BODY_host_get_wattmax_at(sg_host_t host, int pstate_index) { smx_process_t self = SIMIX_process_self(); /* Go to that function to follow the code flow through the simcall barrier */ - if (0) SIMIX_host_get_power_peak_at(host, pstate_index); + if (0) SIMIX_host_get_wattmax_at(host, pstate_index); /* end of the guide intended to the poor programmer wanting to go from MSG to Surf */ - self->simcall.call = SIMCALL_HOST_GET_POWER_PEAK_AT; + self->simcall.call = SIMCALL_HOST_GET_WATTMAX_AT; memset(&self->simcall.result, 0, sizeof(self->simcall.result)); memset(self->simcall.args, 0, sizeof(self->simcall.args)); self->simcall.args[0].dp = (void*) host; @@ -270,17 +293,18 @@ inline static double simcall_BODY_host_get_power_peak_at(smx_host_t host, int ps return self->simcall.result.d; } -inline static int simcall_BODY_host_get_nb_pstates(smx_host_t host) { +inline static void simcall_BODY_host_set_pstate(sg_host_t host, int pstate_index) { smx_process_t self = SIMIX_process_self(); /* Go to that function to follow the code flow through the simcall barrier */ - if (0) SIMIX_host_get_nb_pstates(host); + if (0) SIMIX_host_set_pstate(host, pstate_index); /* end of the guide intended to the poor programmer wanting to go from MSG to Surf */ - self->simcall.call = SIMCALL_HOST_GET_NB_PSTATES; + self->simcall.call = SIMCALL_HOST_SET_PSTATE; memset(&self->simcall.result, 0, sizeof(self->simcall.result)); memset(self->simcall.args, 0, sizeof(self->simcall.args)); self->simcall.args[0].dp = (void*) host; + self->simcall.args[1].i = (int) pstate_index; if (self != simix_global->maestro_process) { XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name, SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call); @@ -288,21 +312,20 @@ inline static int simcall_BODY_host_get_nb_pstates(smx_host_t host) { } else { SIMIX_simcall_handle(&self->simcall, 0); } - return self->simcall.result.i; + } -inline static void simcall_BODY_host_set_power_peak_at(smx_host_t host, int pstate_index) { +inline static int simcall_BODY_host_get_pstate(sg_host_t host) { smx_process_t self = SIMIX_process_self(); /* Go to that function to follow the code flow through the simcall barrier */ - if (0) SIMIX_host_set_power_peak_at(host, pstate_index); + if (0) SIMIX_host_get_pstate(host); /* end of the guide intended to the poor programmer wanting to go from MSG to Surf */ - self->simcall.call = SIMCALL_HOST_SET_POWER_PEAK_AT; + self->simcall.call = SIMCALL_HOST_GET_PSTATE; memset(&self->simcall.result, 0, sizeof(self->simcall.result)); memset(self->simcall.args, 0, sizeof(self->simcall.args)); self->simcall.args[0].dp = (void*) host; - self->simcall.args[1].i = (int) pstate_index; if (self != simix_global->maestro_process) { XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name, SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call); @@ -310,10 +333,10 @@ inline static void simcall_BODY_host_set_power_peak_at(smx_host_t host, int psta } else { SIMIX_simcall_handle(&self->simcall, 0); } - + return self->simcall.result.i; } -inline static double simcall_BODY_host_get_consumed_energy(smx_host_t host) { +inline static double simcall_BODY_host_get_consumed_energy(sg_host_t host) { smx_process_t self = SIMIX_process_self(); /* Go to that function to follow the code flow through the simcall barrier */ @@ -334,22 +357,17 @@ inline static double simcall_BODY_host_get_consumed_energy(smx_host_t host) { return self->simcall.result.d; } -inline static smx_synchro_t simcall_BODY_host_execute(const char* name, smx_host_t host, double flops_amount, double priority, double bound, unsigned long affinity_mask) { +inline static xbt_dict_t simcall_BODY_host_get_mounted_storage_list(sg_host_t host) { smx_process_t self = SIMIX_process_self(); /* Go to that function to follow the code flow through the simcall barrier */ - if (0) SIMIX_host_execute(name, host, flops_amount, priority, bound, affinity_mask); + if (0) SIMIX_host_get_mounted_storage_list(host); /* end of the guide intended to the poor programmer wanting to go from MSG to Surf */ - self->simcall.call = SIMCALL_HOST_EXECUTE; + self->simcall.call = SIMCALL_HOST_GET_MOUNTED_STORAGE_LIST; memset(&self->simcall.result, 0, sizeof(self->simcall.result)); memset(self->simcall.args, 0, sizeof(self->simcall.args)); - self->simcall.args[0].cc = (const char*) name; - self->simcall.args[1].dp = (void*) host; - self->simcall.args[2].d = (double) flops_amount; - self->simcall.args[3].d = (double) priority; - self->simcall.args[4].d = (double) bound; - self->simcall.args[5].ul = (unsigned long) affinity_mask; + self->simcall.args[0].dp = (void*) host; if (self != simix_global->maestro_process) { XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name, SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call); @@ -360,23 +378,17 @@ inline static smx_synchro_t simcall_BODY_host_execute(const char* name, smx_host return self->simcall.result.dp; } -inline static smx_synchro_t simcall_BODY_host_parallel_execute(const char* name, int host_nb, smx_host_t* host_list, double* flops_amount, double* bytes_amount, double amount, double rate) { +inline static xbt_dynar_t simcall_BODY_host_get_attached_storage_list(sg_host_t host) { smx_process_t self = SIMIX_process_self(); /* Go to that function to follow the code flow through the simcall barrier */ - if (0) SIMIX_host_parallel_execute(name, host_nb, host_list, flops_amount, bytes_amount, amount, rate); + if (0) SIMIX_host_get_attached_storage_list(host); /* end of the guide intended to the poor programmer wanting to go from MSG to Surf */ - self->simcall.call = SIMCALL_HOST_PARALLEL_EXECUTE; + self->simcall.call = SIMCALL_HOST_GET_ATTACHED_STORAGE_LIST; memset(&self->simcall.result, 0, sizeof(self->simcall.result)); memset(self->simcall.args, 0, sizeof(self->simcall.args)); - self->simcall.args[0].cc = (const char*) name; - self->simcall.args[1].i = (int) host_nb; - self->simcall.args[2].dp = (void*) host_list; - self->simcall.args[3].dp = (void*) flops_amount; - self->simcall.args[4].dp = (void*) bytes_amount; - self->simcall.args[5].d = (double) amount; - self->simcall.args[6].d = (double) rate; + self->simcall.args[0].dp = (void*) host; if (self != simix_global->maestro_process) { XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name, SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call); @@ -387,17 +399,18 @@ inline static smx_synchro_t simcall_BODY_host_parallel_execute(const char* name, return self->simcall.result.dp; } -inline static void simcall_BODY_host_execution_destroy(smx_synchro_t execution) { +inline static void simcall_BODY_host_get_params(sg_host_t ind_vm, vm_params_t params) { smx_process_t self = SIMIX_process_self(); /* Go to that function to follow the code flow through the simcall barrier */ - if (0) SIMIX_host_execution_destroy(execution); + if (0) SIMIX_host_get_params(ind_vm, params); /* end of the guide intended to the poor programmer wanting to go from MSG to Surf */ - self->simcall.call = SIMCALL_HOST_EXECUTION_DESTROY; + self->simcall.call = SIMCALL_HOST_GET_PARAMS; memset(&self->simcall.result, 0, sizeof(self->simcall.result)); memset(self->simcall.args, 0, sizeof(self->simcall.args)); - self->simcall.args[0].dp = (void*) execution; + self->simcall.args[0].dp = (void*) ind_vm; + self->simcall.args[1].dp = (void*) params; if (self != simix_global->maestro_process) { XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name, SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call); @@ -408,17 +421,18 @@ inline static void simcall_BODY_host_execution_destroy(smx_synchro_t execution) } -inline static void simcall_BODY_host_execution_cancel(smx_synchro_t execution) { +inline static void simcall_BODY_host_set_params(sg_host_t ind_vm, vm_params_t params) { smx_process_t self = SIMIX_process_self(); /* Go to that function to follow the code flow through the simcall barrier */ - if (0) SIMIX_host_execution_cancel(execution); + if (0) SIMIX_host_set_params(ind_vm, params); /* end of the guide intended to the poor programmer wanting to go from MSG to Surf */ - self->simcall.call = SIMCALL_HOST_EXECUTION_CANCEL; + self->simcall.call = SIMCALL_HOST_SET_PARAMS; memset(&self->simcall.result, 0, sizeof(self->simcall.result)); memset(self->simcall.args, 0, sizeof(self->simcall.args)); - self->simcall.args[0].dp = (void*) execution; + self->simcall.args[0].dp = (void*) ind_vm; + self->simcall.args[1].dp = (void*) params; if (self != simix_global->maestro_process) { XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name, SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call); @@ -429,17 +443,18 @@ inline static void simcall_BODY_host_execution_cancel(smx_synchro_t execution) { } -inline static double simcall_BODY_host_execution_get_remains(smx_synchro_t execution) { +inline static sg_host_t simcall_BODY_vm_create(const char* name, sg_host_t ind_pm) { smx_process_t self = SIMIX_process_self(); /* Go to that function to follow the code flow through the simcall barrier */ - if (0) SIMIX_host_execution_get_remains(execution); + if (0) SIMIX_vm_create(name, ind_pm); /* end of the guide intended to the poor programmer wanting to go from MSG to Surf */ - self->simcall.call = SIMCALL_HOST_EXECUTION_GET_REMAINS; + self->simcall.call = SIMCALL_VM_CREATE; memset(&self->simcall.result, 0, sizeof(self->simcall.result)); memset(self->simcall.args, 0, sizeof(self->simcall.args)); - self->simcall.args[0].dp = (void*) execution; + self->simcall.args[0].cc = (const char*) name; + self->simcall.args[1].dp = (void*) ind_pm; if (self != simix_global->maestro_process) { XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name, SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call); @@ -447,20 +462,20 @@ inline static double simcall_BODY_host_execution_get_remains(smx_synchro_t execu } else { SIMIX_simcall_handle(&self->simcall, 0); } - return self->simcall.result.d; + return self->simcall.result.dp; } -inline static e_smx_state_t simcall_BODY_host_execution_get_state(smx_synchro_t execution) { +inline static void simcall_BODY_vm_start(sg_host_t ind_vm) { smx_process_t self = SIMIX_process_self(); /* Go to that function to follow the code flow through the simcall barrier */ - if (0) SIMIX_host_execution_get_state(execution); + if (0) SIMIX_vm_start(ind_vm); /* end of the guide intended to the poor programmer wanting to go from MSG to Surf */ - self->simcall.call = SIMCALL_HOST_EXECUTION_GET_STATE; + self->simcall.call = SIMCALL_VM_START; memset(&self->simcall.result, 0, sizeof(self->simcall.result)); memset(self->simcall.args, 0, sizeof(self->simcall.args)); - self->simcall.args[0].dp = (void*) execution; + self->simcall.args[0].dp = (void*) ind_vm; if (self != simix_global->maestro_process) { XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name, SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call); @@ -468,21 +483,20 @@ inline static e_smx_state_t simcall_BODY_host_execution_get_state(smx_synchro_t } else { SIMIX_simcall_handle(&self->simcall, 0); } - return self->simcall.result.i; + } -inline static void simcall_BODY_host_execution_set_priority(smx_synchro_t execution, double priority) { +inline static int simcall_BODY_vm_get_state(sg_host_t ind_vm) { smx_process_t self = SIMIX_process_self(); /* Go to that function to follow the code flow through the simcall barrier */ - if (0) SIMIX_host_execution_set_priority(execution, priority); + if (0) SIMIX_vm_get_state(ind_vm); /* end of the guide intended to the poor programmer wanting to go from MSG to Surf */ - self->simcall.call = SIMCALL_HOST_EXECUTION_SET_PRIORITY; + self->simcall.call = SIMCALL_VM_GET_STATE; memset(&self->simcall.result, 0, sizeof(self->simcall.result)); memset(self->simcall.args, 0, sizeof(self->simcall.args)); - self->simcall.args[0].dp = (void*) execution; - self->simcall.args[1].d = (double) priority; + self->simcall.args[0].dp = (void*) ind_vm; if (self != simix_global->maestro_process) { XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name, SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call); @@ -490,21 +504,21 @@ inline static void simcall_BODY_host_execution_set_priority(smx_synchro_t execut } else { SIMIX_simcall_handle(&self->simcall, 0); } - + return self->simcall.result.i; } -inline static void simcall_BODY_host_execution_set_bound(smx_synchro_t execution, double bound) { +inline static void simcall_BODY_vm_migrate(sg_host_t ind_vm, sg_host_t ind_dst_pm) { smx_process_t self = SIMIX_process_self(); /* Go to that function to follow the code flow through the simcall barrier */ - if (0) SIMIX_host_execution_set_bound(execution, bound); + if (0) SIMIX_vm_migrate(ind_vm, ind_dst_pm); /* end of the guide intended to the poor programmer wanting to go from MSG to Surf */ - self->simcall.call = SIMCALL_HOST_EXECUTION_SET_BOUND; + self->simcall.call = SIMCALL_VM_MIGRATE; memset(&self->simcall.result, 0, sizeof(self->simcall.result)); memset(self->simcall.args, 0, sizeof(self->simcall.args)); - self->simcall.args[0].dp = (void*) execution; - self->simcall.args[1].d = (double) bound; + self->simcall.args[0].dp = (void*) ind_vm; + self->simcall.args[1].dp = (void*) ind_dst_pm; if (self != simix_global->maestro_process) { XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name, SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call); @@ -515,19 +529,17 @@ inline static void simcall_BODY_host_execution_set_bound(smx_synchro_t execution } -inline static void simcall_BODY_host_execution_set_affinity(smx_synchro_t execution, smx_host_t ws, unsigned long mask) { +inline static void* simcall_BODY_vm_get_pm(sg_host_t ind_vm) { smx_process_t self = SIMIX_process_self(); /* Go to that function to follow the code flow through the simcall barrier */ - if (0) SIMIX_host_execution_set_affinity(execution, ws, mask); + if (0) SIMIX_vm_get_pm(ind_vm); /* end of the guide intended to the poor programmer wanting to go from MSG to Surf */ - self->simcall.call = SIMCALL_HOST_EXECUTION_SET_AFFINITY; + self->simcall.call = SIMCALL_VM_GET_PM; memset(&self->simcall.result, 0, sizeof(self->simcall.result)); memset(self->simcall.args, 0, sizeof(self->simcall.args)); - self->simcall.args[0].dp = (void*) execution; - self->simcall.args[1].dp = (void*) ws; - self->simcall.args[2].ul = (unsigned long) mask; + self->simcall.args[0].dp = (void*) ind_vm; if (self != simix_global->maestro_process) { XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name, SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call); @@ -535,20 +547,21 @@ inline static void simcall_BODY_host_execution_set_affinity(smx_synchro_t execut } else { SIMIX_simcall_handle(&self->simcall, 0); } - + return self->simcall.result.dp; } -inline static int simcall_BODY_host_execution_wait(smx_synchro_t execution) { +inline static void simcall_BODY_vm_set_bound(sg_host_t ind_vm, double bound) { smx_process_t self = SIMIX_process_self(); /* Go to that function to follow the code flow through the simcall barrier */ - if (0) simcall_HANDLER_host_execution_wait(&self->simcall, execution); + if (0) SIMIX_vm_set_bound(ind_vm, bound); /* end of the guide intended to the poor programmer wanting to go from MSG to Surf */ - self->simcall.call = SIMCALL_HOST_EXECUTION_WAIT; + self->simcall.call = SIMCALL_VM_SET_BOUND; memset(&self->simcall.result, 0, sizeof(self->simcall.result)); memset(self->simcall.args, 0, sizeof(self->simcall.args)); - self->simcall.args[0].dp = (void*) execution; + self->simcall.args[0].dp = (void*) ind_vm; + self->simcall.args[1].d = (double) bound; if (self != simix_global->maestro_process) { XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name, SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call); @@ -556,20 +569,22 @@ inline static int simcall_BODY_host_execution_wait(smx_synchro_t execution) { } else { SIMIX_simcall_handle(&self->simcall, 0); } - return self->simcall.result.i; + } -inline static xbt_dict_t simcall_BODY_host_get_mounted_storage_list(smx_host_t host) { +inline static void simcall_BODY_vm_set_affinity(sg_host_t ind_vm, sg_host_t ind_pm, unsigned long mask) { smx_process_t self = SIMIX_process_self(); /* Go to that function to follow the code flow through the simcall barrier */ - if (0) SIMIX_host_get_mounted_storage_list(host); + if (0) SIMIX_vm_set_affinity(ind_vm, ind_pm, mask); /* end of the guide intended to the poor programmer wanting to go from MSG to Surf */ - self->simcall.call = SIMCALL_HOST_GET_MOUNTED_STORAGE_LIST; + self->simcall.call = SIMCALL_VM_SET_AFFINITY; memset(&self->simcall.result, 0, sizeof(self->simcall.result)); memset(self->simcall.args, 0, sizeof(self->simcall.args)); - self->simcall.args[0].dp = (void*) host; + self->simcall.args[0].dp = (void*) ind_vm; + self->simcall.args[1].dp = (void*) ind_pm; + self->simcall.args[2].ul = (unsigned long) mask; if (self != simix_global->maestro_process) { XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name, SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call); @@ -577,20 +592,20 @@ inline static xbt_dict_t simcall_BODY_host_get_mounted_storage_list(smx_host_t h } else { SIMIX_simcall_handle(&self->simcall, 0); } - return self->simcall.result.dp; + } -inline static xbt_dynar_t simcall_BODY_host_get_attached_storage_list(smx_host_t host) { +inline static void simcall_BODY_vm_destroy(sg_host_t ind_vm) { smx_process_t self = SIMIX_process_self(); /* Go to that function to follow the code flow through the simcall barrier */ - if (0) SIMIX_host_get_attached_storage_list(host); + if (0) SIMIX_vm_destroy(ind_vm); /* end of the guide intended to the poor programmer wanting to go from MSG to Surf */ - self->simcall.call = SIMCALL_HOST_GET_ATTACHED_STORAGE_LIST; + self->simcall.call = SIMCALL_VM_DESTROY; memset(&self->simcall.result, 0, sizeof(self->simcall.result)); memset(self->simcall.args, 0, sizeof(self->simcall.args)); - self->simcall.args[0].dp = (void*) host; + self->simcall.args[0].dp = (void*) ind_vm; if (self != simix_global->maestro_process) { XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name, SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call); @@ -598,21 +613,20 @@ inline static xbt_dynar_t simcall_BODY_host_get_attached_storage_list(smx_host_t } else { SIMIX_simcall_handle(&self->simcall, 0); } - return self->simcall.result.dp; + } -inline static void simcall_BODY_host_get_params(smx_host_t ind_vm, ws_params_t params) { +inline static void simcall_BODY_vm_suspend(sg_host_t ind_vm) { smx_process_t self = SIMIX_process_self(); /* Go to that function to follow the code flow through the simcall barrier */ - if (0) SIMIX_host_get_params(ind_vm, params); + if (0) simcall_HANDLER_vm_suspend(&self->simcall, ind_vm); /* end of the guide intended to the poor programmer wanting to go from MSG to Surf */ - self->simcall.call = SIMCALL_HOST_GET_PARAMS; + self->simcall.call = SIMCALL_VM_SUSPEND; memset(&self->simcall.result, 0, sizeof(self->simcall.result)); memset(self->simcall.args, 0, sizeof(self->simcall.args)); self->simcall.args[0].dp = (void*) ind_vm; - self->simcall.args[1].dp = (void*) params; if (self != simix_global->maestro_process) { XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name, SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call); @@ -623,18 +637,17 @@ inline static void simcall_BODY_host_get_params(smx_host_t ind_vm, ws_params_t p } -inline static void simcall_BODY_host_set_params(smx_host_t ind_vm, ws_params_t params) { +inline static void simcall_BODY_vm_resume(sg_host_t ind_vm) { smx_process_t self = SIMIX_process_self(); /* Go to that function to follow the code flow through the simcall barrier */ - if (0) SIMIX_host_set_params(ind_vm, params); + if (0) simcall_HANDLER_vm_resume(&self->simcall, ind_vm); /* end of the guide intended to the poor programmer wanting to go from MSG to Surf */ - self->simcall.call = SIMCALL_HOST_SET_PARAMS; + self->simcall.call = SIMCALL_VM_RESUME; memset(&self->simcall.result, 0, sizeof(self->simcall.result)); memset(self->simcall.args, 0, sizeof(self->simcall.args)); self->simcall.args[0].dp = (void*) ind_vm; - self->simcall.args[1].dp = (void*) params; if (self != simix_global->maestro_process) { XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name, SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call); @@ -645,18 +658,17 @@ inline static void simcall_BODY_host_set_params(smx_host_t ind_vm, ws_params_t p } -inline static smx_host_t simcall_BODY_vm_create(const char* name, smx_host_t ind_pm) { +inline static void simcall_BODY_vm_shutdown(sg_host_t ind_vm) { smx_process_t self = SIMIX_process_self(); /* Go to that function to follow the code flow through the simcall barrier */ - if (0) SIMIX_vm_create(name, ind_pm); + if (0) simcall_HANDLER_vm_shutdown(&self->simcall, ind_vm); /* end of the guide intended to the poor programmer wanting to go from MSG to Surf */ - self->simcall.call = SIMCALL_VM_CREATE; + self->simcall.call = SIMCALL_VM_SHUTDOWN; memset(&self->simcall.result, 0, sizeof(self->simcall.result)); memset(self->simcall.args, 0, sizeof(self->simcall.args)); - self->simcall.args[0].cc = (const char*) name; - self->simcall.args[1].dp = (void*) ind_pm; + self->simcall.args[0].dp = (void*) ind_vm; if (self != simix_global->maestro_process) { XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name, SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call); @@ -664,17 +676,17 @@ inline static smx_host_t simcall_BODY_vm_create(const char* name, smx_host_t ind } else { SIMIX_simcall_handle(&self->simcall, 0); } - return self->simcall.result.dp; + } -inline static void simcall_BODY_vm_start(smx_host_t ind_vm) { +inline static void simcall_BODY_vm_save(sg_host_t ind_vm) { smx_process_t self = SIMIX_process_self(); /* Go to that function to follow the code flow through the simcall barrier */ - if (0) SIMIX_vm_start(ind_vm); + if (0) simcall_HANDLER_vm_save(&self->simcall, ind_vm); /* end of the guide intended to the poor programmer wanting to go from MSG to Surf */ - self->simcall.call = SIMCALL_VM_START; + self->simcall.call = SIMCALL_VM_SAVE; memset(&self->simcall.result, 0, sizeof(self->simcall.result)); memset(self->simcall.args, 0, sizeof(self->simcall.args)); self->simcall.args[0].dp = (void*) ind_vm; @@ -688,14 +700,14 @@ inline static void simcall_BODY_vm_start(smx_host_t ind_vm) { } -inline static int simcall_BODY_vm_get_state(smx_host_t ind_vm) { +inline static void simcall_BODY_vm_restore(sg_host_t ind_vm) { smx_process_t self = SIMIX_process_self(); /* Go to that function to follow the code flow through the simcall barrier */ - if (0) SIMIX_vm_get_state(ind_vm); + if (0) simcall_HANDLER_vm_restore(&self->simcall, ind_vm); /* end of the guide intended to the poor programmer wanting to go from MSG to Surf */ - self->simcall.call = SIMCALL_VM_GET_STATE; + self->simcall.call = SIMCALL_VM_RESTORE; memset(&self->simcall.result, 0, sizeof(self->simcall.result)); memset(self->simcall.args, 0, sizeof(self->simcall.args)); self->simcall.args[0].dp = (void*) ind_vm; @@ -706,21 +718,22 @@ inline static int simcall_BODY_vm_get_state(smx_host_t ind_vm) { } else { SIMIX_simcall_handle(&self->simcall, 0); } - return self->simcall.result.i; + } -inline static void simcall_BODY_vm_migrate(smx_host_t ind_vm, smx_host_t ind_dst_pm) { +inline static void simcall_BODY_vm_migratefrom_resumeto(sg_host_t vm, sg_host_t src_pm, sg_host_t dst_pm) { smx_process_t self = SIMIX_process_self(); /* Go to that function to follow the code flow through the simcall barrier */ - if (0) SIMIX_vm_migrate(ind_vm, ind_dst_pm); + if (0) SIMIX_vm_migratefrom_resumeto(vm, src_pm, dst_pm); /* end of the guide intended to the poor programmer wanting to go from MSG to Surf */ - self->simcall.call = SIMCALL_VM_MIGRATE; + self->simcall.call = SIMCALL_VM_MIGRATEFROM_RESUMETO; memset(&self->simcall.result, 0, sizeof(self->simcall.result)); memset(self->simcall.args, 0, sizeof(self->simcall.args)); - self->simcall.args[0].dp = (void*) ind_vm; - self->simcall.args[1].dp = (void*) ind_dst_pm; + self->simcall.args[0].dp = (void*) vm; + self->simcall.args[1].dp = (void*) src_pm; + self->simcall.args[2].dp = (void*) dst_pm; if (self != simix_global->maestro_process) { XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name, SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call); @@ -731,17 +744,25 @@ inline static void simcall_BODY_vm_migrate(smx_host_t ind_vm, smx_host_t ind_dst } -inline static void* simcall_BODY_vm_get_pm(smx_host_t ind_vm) { +inline static void* simcall_BODY_process_create(const char* name, xbt_main_func_t code, void* data, const char* hostname, double kill_time, int argc, char** argv, xbt_dict_t properties, int auto_restart) { smx_process_t self = SIMIX_process_self(); /* Go to that function to follow the code flow through the simcall barrier */ - if (0) SIMIX_vm_get_pm(ind_vm); + if (0) simcall_HANDLER_process_create(&self->simcall, name, code, data, hostname, kill_time, argc, argv, properties, auto_restart); /* end of the guide intended to the poor programmer wanting to go from MSG to Surf */ - self->simcall.call = SIMCALL_VM_GET_PM; + self->simcall.call = SIMCALL_PROCESS_CREATE; memset(&self->simcall.result, 0, sizeof(self->simcall.result)); memset(self->simcall.args, 0, sizeof(self->simcall.args)); - self->simcall.args[0].dp = (void*) ind_vm; + self->simcall.args[0].cc = (const char*) name; + self->simcall.args[1].fp = (FPtr) code; + self->simcall.args[2].dp = (void*) data; + self->simcall.args[3].cc = (const char*) hostname; + self->simcall.args[4].d = (double) kill_time; + self->simcall.args[5].i = (int) argc; + self->simcall.args[6].dp = (void*) argv; + self->simcall.args[7].dp = (void*) properties; + self->simcall.args[8].i = (int) auto_restart; if (self != simix_global->maestro_process) { XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name, SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call); @@ -752,18 +773,17 @@ inline static void* simcall_BODY_vm_get_pm(smx_host_t ind_vm) { return self->simcall.result.dp; } -inline static void simcall_BODY_vm_set_bound(smx_host_t ind_vm, double bound) { +inline static void simcall_BODY_process_kill(smx_process_t process) { smx_process_t self = SIMIX_process_self(); /* Go to that function to follow the code flow through the simcall barrier */ - if (0) SIMIX_vm_set_bound(ind_vm, bound); + if (0) simcall_HANDLER_process_kill(&self->simcall, process); /* end of the guide intended to the poor programmer wanting to go from MSG to Surf */ - self->simcall.call = SIMCALL_VM_SET_BOUND; + self->simcall.call = SIMCALL_PROCESS_KILL; memset(&self->simcall.result, 0, sizeof(self->simcall.result)); memset(self->simcall.args, 0, sizeof(self->simcall.args)); - self->simcall.args[0].dp = (void*) ind_vm; - self->simcall.args[1].d = (double) bound; + self->simcall.args[0].dp = (void*) process; if (self != simix_global->maestro_process) { XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name, SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call); @@ -774,19 +794,17 @@ inline static void simcall_BODY_vm_set_bound(smx_host_t ind_vm, double bound) { } -inline static void simcall_BODY_vm_set_affinity(smx_host_t ind_vm, smx_host_t ind_pm, unsigned long mask) { +inline static void simcall_BODY_process_killall(int reset_pid) { smx_process_t self = SIMIX_process_self(); /* Go to that function to follow the code flow through the simcall barrier */ - if (0) SIMIX_vm_set_affinity(ind_vm, ind_pm, mask); + if (0) simcall_HANDLER_process_killall(&self->simcall, reset_pid); /* end of the guide intended to the poor programmer wanting to go from MSG to Surf */ - self->simcall.call = SIMCALL_VM_SET_AFFINITY; + self->simcall.call = SIMCALL_PROCESS_KILLALL; memset(&self->simcall.result, 0, sizeof(self->simcall.result)); memset(self->simcall.args, 0, sizeof(self->simcall.args)); - self->simcall.args[0].dp = (void*) ind_vm; - self->simcall.args[1].dp = (void*) ind_pm; - self->simcall.args[2].ul = (unsigned long) mask; + self->simcall.args[0].i = (int) reset_pid; if (self != simix_global->maestro_process) { XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name, SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call); @@ -797,17 +815,17 @@ inline static void simcall_BODY_vm_set_affinity(smx_host_t ind_vm, smx_host_t in } -inline static void simcall_BODY_vm_destroy(smx_host_t ind_vm) { +inline static void simcall_BODY_process_cleanup(smx_process_t process) { smx_process_t self = SIMIX_process_self(); /* Go to that function to follow the code flow through the simcall barrier */ - if (0) SIMIX_vm_destroy(ind_vm); + if (0) SIMIX_process_cleanup(process); /* end of the guide intended to the poor programmer wanting to go from MSG to Surf */ - self->simcall.call = SIMCALL_VM_DESTROY; + self->simcall.call = SIMCALL_PROCESS_CLEANUP; memset(&self->simcall.result, 0, sizeof(self->simcall.result)); memset(self->simcall.args, 0, sizeof(self->simcall.args)); - self->simcall.args[0].dp = (void*) ind_vm; + self->simcall.args[0].dp = (void*) process; if (self != simix_global->maestro_process) { XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name, SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call); @@ -818,17 +836,17 @@ inline static void simcall_BODY_vm_destroy(smx_host_t ind_vm) { } -inline static void simcall_BODY_vm_suspend(smx_host_t ind_vm) { +inline static void simcall_BODY_process_suspend(smx_process_t process) { smx_process_t self = SIMIX_process_self(); /* Go to that function to follow the code flow through the simcall barrier */ - if (0) simcall_HANDLER_vm_suspend(&self->simcall, ind_vm); + if (0) simcall_HANDLER_process_suspend(&self->simcall, process); /* end of the guide intended to the poor programmer wanting to go from MSG to Surf */ - self->simcall.call = SIMCALL_VM_SUSPEND; + self->simcall.call = SIMCALL_PROCESS_SUSPEND; memset(&self->simcall.result, 0, sizeof(self->simcall.result)); memset(self->simcall.args, 0, sizeof(self->simcall.args)); - self->simcall.args[0].dp = (void*) ind_vm; + self->simcall.args[0].dp = (void*) process; if (self != simix_global->maestro_process) { XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name, SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call); @@ -839,17 +857,17 @@ inline static void simcall_BODY_vm_suspend(smx_host_t ind_vm) { } -inline static void simcall_BODY_vm_resume(smx_host_t ind_vm) { +inline static void simcall_BODY_process_resume(smx_process_t process) { smx_process_t self = SIMIX_process_self(); /* Go to that function to follow the code flow through the simcall barrier */ - if (0) simcall_HANDLER_vm_resume(&self->simcall, ind_vm); + if (0) simcall_HANDLER_process_resume(&self->simcall, process); /* end of the guide intended to the poor programmer wanting to go from MSG to Surf */ - self->simcall.call = SIMCALL_VM_RESUME; + self->simcall.call = SIMCALL_PROCESS_RESUME; memset(&self->simcall.result, 0, sizeof(self->simcall.result)); memset(self->simcall.args, 0, sizeof(self->simcall.args)); - self->simcall.args[0].dp = (void*) ind_vm; + self->simcall.args[0].dp = (void*) process; if (self != simix_global->maestro_process) { XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name, SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call); @@ -860,17 +878,17 @@ inline static void simcall_BODY_vm_resume(smx_host_t ind_vm) { } -inline static void simcall_BODY_vm_shutdown(smx_host_t ind_vm) { +inline static int simcall_BODY_process_count() { smx_process_t self = SIMIX_process_self(); /* Go to that function to follow the code flow through the simcall barrier */ - if (0) simcall_HANDLER_vm_shutdown(&self->simcall, ind_vm); + if (0) SIMIX_process_count(); /* end of the guide intended to the poor programmer wanting to go from MSG to Surf */ - self->simcall.call = SIMCALL_VM_SHUTDOWN; + self->simcall.call = SIMCALL_PROCESS_COUNT; memset(&self->simcall.result, 0, sizeof(self->simcall.result)); memset(self->simcall.args, 0, sizeof(self->simcall.args)); - self->simcall.args[0].dp = (void*) ind_vm; + if (self != simix_global->maestro_process) { XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name, SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call); @@ -878,20 +896,20 @@ inline static void simcall_BODY_vm_shutdown(smx_host_t ind_vm) { } else { SIMIX_simcall_handle(&self->simcall, 0); } - + return self->simcall.result.i; } -inline static void simcall_BODY_vm_save(smx_host_t ind_vm) { +inline static int simcall_BODY_process_get_PID(smx_process_t process) { smx_process_t self = SIMIX_process_self(); /* Go to that function to follow the code flow through the simcall barrier */ - if (0) simcall_HANDLER_vm_save(&self->simcall, ind_vm); + if (0) SIMIX_process_get_PID(process); /* end of the guide intended to the poor programmer wanting to go from MSG to Surf */ - self->simcall.call = SIMCALL_VM_SAVE; + self->simcall.call = SIMCALL_PROCESS_GET_PID; memset(&self->simcall.result, 0, sizeof(self->simcall.result)); memset(self->simcall.args, 0, sizeof(self->simcall.args)); - self->simcall.args[0].dp = (void*) ind_vm; + self->simcall.args[0].dp = (void*) process; if (self != simix_global->maestro_process) { XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name, SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call); @@ -899,20 +917,20 @@ inline static void simcall_BODY_vm_save(smx_host_t ind_vm) { } else { SIMIX_simcall_handle(&self->simcall, 0); } - + return self->simcall.result.i; } -inline static void simcall_BODY_vm_restore(smx_host_t ind_vm) { +inline static int simcall_BODY_process_get_PPID(smx_process_t process) { smx_process_t self = SIMIX_process_self(); /* Go to that function to follow the code flow through the simcall barrier */ - if (0) simcall_HANDLER_vm_restore(&self->simcall, ind_vm); + if (0) SIMIX_process_get_PPID(process); /* end of the guide intended to the poor programmer wanting to go from MSG to Surf */ - self->simcall.call = SIMCALL_VM_RESTORE; + self->simcall.call = SIMCALL_PROCESS_GET_PPID; memset(&self->simcall.result, 0, sizeof(self->simcall.result)); memset(self->simcall.args, 0, sizeof(self->simcall.args)); - self->simcall.args[0].dp = (void*) ind_vm; + self->simcall.args[0].dp = (void*) process; if (self != simix_global->maestro_process) { XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name, SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call); @@ -920,29 +938,20 @@ inline static void simcall_BODY_vm_restore(smx_host_t ind_vm) { } else { SIMIX_simcall_handle(&self->simcall, 0); } - + return self->simcall.result.i; } -inline static void simcall_BODY_process_create(smx_process_t* process, const char* name, xbt_main_func_t code, void* data, const char* hostname, double kill_time, int argc, char** argv, xbt_dict_t properties, int auto_restart) { +inline static void* simcall_BODY_process_get_data(smx_process_t process) { smx_process_t self = SIMIX_process_self(); /* Go to that function to follow the code flow through the simcall barrier */ - if (0) simcall_HANDLER_process_create(&self->simcall, process, name, code, data, hostname, kill_time, argc, argv, properties, auto_restart); + if (0) SIMIX_process_get_data(process); /* end of the guide intended to the poor programmer wanting to go from MSG to Surf */ - self->simcall.call = SIMCALL_PROCESS_CREATE; + self->simcall.call = SIMCALL_PROCESS_GET_DATA; memset(&self->simcall.result, 0, sizeof(self->simcall.result)); memset(self->simcall.args, 0, sizeof(self->simcall.args)); self->simcall.args[0].dp = (void*) process; - self->simcall.args[1].cc = (const char*) name; - self->simcall.args[2].fp = (FPtr) code; - self->simcall.args[3].dp = (void*) data; - self->simcall.args[4].cc = (const char*) hostname; - self->simcall.args[5].d = (double) kill_time; - self->simcall.args[6].i = (int) argc; - self->simcall.args[7].dp = (void*) argv; - self->simcall.args[8].dp = (void*) properties; - self->simcall.args[9].i = (int) auto_restart; if (self != simix_global->maestro_process) { XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name, SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call); @@ -950,20 +959,21 @@ inline static void simcall_BODY_process_create(smx_process_t* process, const cha } else { SIMIX_simcall_handle(&self->simcall, 0); } - + return self->simcall.result.dp; } -inline static void simcall_BODY_process_kill(smx_process_t process) { +inline static void simcall_BODY_process_set_data(smx_process_t process, void* data) { smx_process_t self = SIMIX_process_self(); /* Go to that function to follow the code flow through the simcall barrier */ - if (0) simcall_HANDLER_process_kill(&self->simcall, process); + if (0) SIMIX_process_set_data(process, data); /* end of the guide intended to the poor programmer wanting to go from MSG to Surf */ - self->simcall.call = SIMCALL_PROCESS_KILL; + self->simcall.call = SIMCALL_PROCESS_SET_DATA; memset(&self->simcall.result, 0, sizeof(self->simcall.result)); memset(self->simcall.args, 0, sizeof(self->simcall.args)); self->simcall.args[0].dp = (void*) process; + self->simcall.args[1].dp = (void*) data; if (self != simix_global->maestro_process) { XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name, SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call); @@ -974,17 +984,18 @@ inline static void simcall_BODY_process_kill(smx_process_t process) { } -inline static void simcall_BODY_process_killall(int reset_pid) { +inline static void simcall_BODY_process_set_host(smx_process_t process, sg_host_t dest) { smx_process_t self = SIMIX_process_self(); /* Go to that function to follow the code flow through the simcall barrier */ - if (0) simcall_HANDLER_process_killall(&self->simcall, reset_pid); + if (0) simcall_HANDLER_process_set_host(&self->simcall, process, dest); /* end of the guide intended to the poor programmer wanting to go from MSG to Surf */ - self->simcall.call = SIMCALL_PROCESS_KILLALL; + self->simcall.call = SIMCALL_PROCESS_SET_HOST; memset(&self->simcall.result, 0, sizeof(self->simcall.result)); memset(self->simcall.args, 0, sizeof(self->simcall.args)); - self->simcall.args[0].i = (int) reset_pid; + self->simcall.args[0].dp = (void*) process; + self->simcall.args[1].dp = (void*) dest; if (self != simix_global->maestro_process) { XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name, SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call); @@ -995,14 +1006,14 @@ inline static void simcall_BODY_process_killall(int reset_pid) { } -inline static void simcall_BODY_process_cleanup(smx_process_t process) { +inline static sg_host_t simcall_BODY_process_get_host(smx_process_t process) { smx_process_t self = SIMIX_process_self(); /* Go to that function to follow the code flow through the simcall barrier */ - if (0) SIMIX_process_cleanup(process); + if (0) SIMIX_process_get_host(process); /* end of the guide intended to the poor programmer wanting to go from MSG to Surf */ - self->simcall.call = SIMCALL_PROCESS_CLEANUP; + self->simcall.call = SIMCALL_PROCESS_GET_HOST; memset(&self->simcall.result, 0, sizeof(self->simcall.result)); memset(self->simcall.args, 0, sizeof(self->simcall.args)); self->simcall.args[0].dp = (void*) process; @@ -1013,21 +1024,20 @@ inline static void simcall_BODY_process_cleanup(smx_process_t process) { } else { SIMIX_simcall_handle(&self->simcall, 0); } - + return self->simcall.result.dp; } -inline static void simcall_BODY_process_change_host(smx_process_t process, smx_host_t dest) { +inline static const char* simcall_BODY_process_get_name(smx_process_t process) { smx_process_t self = SIMIX_process_self(); /* Go to that function to follow the code flow through the simcall barrier */ - if (0) simcall_HANDLER_process_change_host(&self->simcall, process, dest); + if (0) SIMIX_process_get_name(process); /* end of the guide intended to the poor programmer wanting to go from MSG to Surf */ - self->simcall.call = SIMCALL_PROCESS_CHANGE_HOST; + self->simcall.call = SIMCALL_PROCESS_GET_NAME; memset(&self->simcall.result, 0, sizeof(self->simcall.result)); memset(self->simcall.args, 0, sizeof(self->simcall.args)); self->simcall.args[0].dp = (void*) process; - self->simcall.args[1].dp = (void*) dest; if (self != simix_global->maestro_process) { XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name, SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call); @@ -1035,17 +1045,17 @@ inline static void simcall_BODY_process_change_host(smx_process_t process, smx_h } else { SIMIX_simcall_handle(&self->simcall, 0); } - + return self->simcall.result.cc; } -inline static void simcall_BODY_process_suspend(smx_process_t process) { +inline static int simcall_BODY_process_is_suspended(smx_process_t process) { smx_process_t self = SIMIX_process_self(); /* Go to that function to follow the code flow through the simcall barrier */ - if (0) simcall_HANDLER_process_suspend(&self->simcall, process); + if (0) SIMIX_process_is_suspended(process); /* end of the guide intended to the poor programmer wanting to go from MSG to Surf */ - self->simcall.call = SIMCALL_PROCESS_SUSPEND; + self->simcall.call = SIMCALL_PROCESS_IS_SUSPENDED; memset(&self->simcall.result, 0, sizeof(self->simcall.result)); memset(self->simcall.args, 0, sizeof(self->simcall.args)); self->simcall.args[0].dp = (void*) process; @@ -1056,17 +1066,17 @@ inline static void simcall_BODY_process_suspend(smx_process_t process) { } else { SIMIX_simcall_handle(&self->simcall, 0); } - + return self->simcall.result.i; } -inline static void simcall_BODY_process_resume(smx_process_t process) { +inline static xbt_dict_t simcall_BODY_process_get_properties(smx_process_t process) { smx_process_t self = SIMIX_process_self(); /* Go to that function to follow the code flow through the simcall barrier */ - if (0) simcall_HANDLER_process_resume(&self->simcall, process); + if (0) SIMIX_process_get_properties(process); /* end of the guide intended to the poor programmer wanting to go from MSG to Surf */ - self->simcall.call = SIMCALL_PROCESS_RESUME; + self->simcall.call = SIMCALL_PROCESS_GET_PROPERTIES; memset(&self->simcall.result, 0, sizeof(self->simcall.result)); memset(self->simcall.args, 0, sizeof(self->simcall.args)); self->simcall.args[0].dp = (void*) process; @@ -1077,20 +1087,21 @@ inline static void simcall_BODY_process_resume(smx_process_t process) { } else { SIMIX_simcall_handle(&self->simcall, 0); } - + return self->simcall.result.dp; } -inline static int simcall_BODY_process_count() { +inline static int simcall_BODY_process_join(smx_process_t process, double timeout) { smx_process_t self = SIMIX_process_self(); /* Go to that function to follow the code flow through the simcall barrier */ - if (0) SIMIX_process_count(); + if (0) simcall_HANDLER_process_join(&self->simcall, process, timeout); /* end of the guide intended to the poor programmer wanting to go from MSG to Surf */ - self->simcall.call = SIMCALL_PROCESS_COUNT; + self->simcall.call = SIMCALL_PROCESS_JOIN; memset(&self->simcall.result, 0, sizeof(self->simcall.result)); memset(self->simcall.args, 0, sizeof(self->simcall.args)); - + self->simcall.args[0].dp = (void*) process; + self->simcall.args[1].d = (double) timeout; if (self != simix_global->maestro_process) { XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name, SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call); @@ -1101,17 +1112,17 @@ inline static int simcall_BODY_process_count() { return self->simcall.result.i; } -inline static int simcall_BODY_process_get_PID(smx_process_t process) { +inline static int simcall_BODY_process_sleep(double duration) { smx_process_t self = SIMIX_process_self(); /* Go to that function to follow the code flow through the simcall barrier */ - if (0) SIMIX_process_get_PID(process); + if (0) simcall_HANDLER_process_sleep(&self->simcall, duration); /* end of the guide intended to the poor programmer wanting to go from MSG to Surf */ - self->simcall.call = SIMCALL_PROCESS_GET_PID; + self->simcall.call = SIMCALL_PROCESS_SLEEP; memset(&self->simcall.result, 0, sizeof(self->simcall.result)); memset(self->simcall.args, 0, sizeof(self->simcall.args)); - self->simcall.args[0].dp = (void*) process; + self->simcall.args[0].d = (double) duration; if (self != simix_global->maestro_process) { XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name, SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call); @@ -1122,17 +1133,21 @@ inline static int simcall_BODY_process_get_PID(smx_process_t process) { return self->simcall.result.i; } -inline static int simcall_BODY_process_get_PPID(smx_process_t process) { +inline static smx_synchro_t simcall_BODY_process_execute(const char* name, double flops_amount, double priority, double bound, unsigned long affinity_mask) { smx_process_t self = SIMIX_process_self(); /* Go to that function to follow the code flow through the simcall barrier */ - if (0) SIMIX_process_get_PPID(process); + if (0) simcall_HANDLER_process_execute(&self->simcall, name, flops_amount, priority, bound, affinity_mask); /* end of the guide intended to the poor programmer wanting to go from MSG to Surf */ - self->simcall.call = SIMCALL_PROCESS_GET_PPID; + self->simcall.call = SIMCALL_PROCESS_EXECUTE; memset(&self->simcall.result, 0, sizeof(self->simcall.result)); memset(self->simcall.args, 0, sizeof(self->simcall.args)); - self->simcall.args[0].dp = (void*) process; + self->simcall.args[0].cc = (const char*) name; + self->simcall.args[1].d = (double) flops_amount; + self->simcall.args[2].d = (double) priority; + self->simcall.args[3].d = (double) bound; + self->simcall.args[4].ul = (unsigned long) affinity_mask; if (self != simix_global->maestro_process) { XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name, SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call); @@ -1140,20 +1155,26 @@ inline static int simcall_BODY_process_get_PPID(smx_process_t process) { } else { SIMIX_simcall_handle(&self->simcall, 0); } - return self->simcall.result.i; + return self->simcall.result.dp; } -inline static void* simcall_BODY_process_get_data(smx_process_t process) { +inline static smx_synchro_t simcall_BODY_process_parallel_execute(const char* name, int host_nb, sg_host_t* host_list, double* flops_amount, double* bytes_amount, double amount, double rate) { smx_process_t self = SIMIX_process_self(); /* Go to that function to follow the code flow through the simcall barrier */ - if (0) SIMIX_process_get_data(process); + if (0) SIMIX_process_parallel_execute(name, host_nb, host_list, flops_amount, bytes_amount, amount, rate); /* end of the guide intended to the poor programmer wanting to go from MSG to Surf */ - self->simcall.call = SIMCALL_PROCESS_GET_DATA; + self->simcall.call = SIMCALL_PROCESS_PARALLEL_EXECUTE; memset(&self->simcall.result, 0, sizeof(self->simcall.result)); memset(self->simcall.args, 0, sizeof(self->simcall.args)); - self->simcall.args[0].dp = (void*) process; + self->simcall.args[0].cc = (const char*) name; + self->simcall.args[1].i = (int) host_nb; + self->simcall.args[2].dp = (void*) host_list; + self->simcall.args[3].dp = (void*) flops_amount; + self->simcall.args[4].dp = (void*) bytes_amount; + self->simcall.args[5].d = (double) amount; + self->simcall.args[6].d = (double) rate; if (self != simix_global->maestro_process) { XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name, SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call); @@ -1164,18 +1185,17 @@ inline static void* simcall_BODY_process_get_data(smx_process_t process) { return self->simcall.result.dp; } -inline static void simcall_BODY_process_set_data(smx_process_t process, void* data) { +inline static void simcall_BODY_process_execution_destroy(smx_synchro_t execution) { smx_process_t self = SIMIX_process_self(); /* Go to that function to follow the code flow through the simcall barrier */ - if (0) SIMIX_process_set_data(process, data); + if (0) SIMIX_process_execution_destroy(execution); /* end of the guide intended to the poor programmer wanting to go from MSG to Surf */ - self->simcall.call = SIMCALL_PROCESS_SET_DATA; + self->simcall.call = SIMCALL_PROCESS_EXECUTION_DESTROY; memset(&self->simcall.result, 0, sizeof(self->simcall.result)); memset(self->simcall.args, 0, sizeof(self->simcall.args)); - self->simcall.args[0].dp = (void*) process; - self->simcall.args[1].dp = (void*) data; + self->simcall.args[0].dp = (void*) execution; if (self != simix_global->maestro_process) { XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name, SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call); @@ -1186,17 +1206,17 @@ inline static void simcall_BODY_process_set_data(smx_process_t process, void* da } -inline static smx_host_t simcall_BODY_process_get_host(smx_process_t process) { +inline static void simcall_BODY_process_execution_cancel(smx_synchro_t execution) { smx_process_t self = SIMIX_process_self(); /* Go to that function to follow the code flow through the simcall barrier */ - if (0) SIMIX_process_get_host(process); + if (0) SIMIX_process_execution_cancel(execution); /* end of the guide intended to the poor programmer wanting to go from MSG to Surf */ - self->simcall.call = SIMCALL_PROCESS_GET_HOST; + self->simcall.call = SIMCALL_PROCESS_EXECUTION_CANCEL; memset(&self->simcall.result, 0, sizeof(self->simcall.result)); memset(self->simcall.args, 0, sizeof(self->simcall.args)); - self->simcall.args[0].dp = (void*) process; + self->simcall.args[0].dp = (void*) execution; if (self != simix_global->maestro_process) { XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name, SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call); @@ -1204,20 +1224,20 @@ inline static smx_host_t simcall_BODY_process_get_host(smx_process_t process) { } else { SIMIX_simcall_handle(&self->simcall, 0); } - return self->simcall.result.dp; + } -inline static const char* simcall_BODY_process_get_name(smx_process_t process) { +inline static double simcall_BODY_process_execution_get_remains(smx_synchro_t execution) { smx_process_t self = SIMIX_process_self(); /* Go to that function to follow the code flow through the simcall barrier */ - if (0) SIMIX_process_get_name(process); + if (0) SIMIX_process_execution_get_remains(execution); /* end of the guide intended to the poor programmer wanting to go from MSG to Surf */ - self->simcall.call = SIMCALL_PROCESS_GET_NAME; + self->simcall.call = SIMCALL_PROCESS_EXECUTION_GET_REMAINS; memset(&self->simcall.result, 0, sizeof(self->simcall.result)); memset(self->simcall.args, 0, sizeof(self->simcall.args)); - self->simcall.args[0].dp = (void*) process; + self->simcall.args[0].dp = (void*) execution; if (self != simix_global->maestro_process) { XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name, SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call); @@ -1225,20 +1245,20 @@ inline static const char* simcall_BODY_process_get_name(smx_process_t process) { } else { SIMIX_simcall_handle(&self->simcall, 0); } - return self->simcall.result.cc; + return self->simcall.result.d; } -inline static int simcall_BODY_process_is_suspended(smx_process_t process) { +inline static e_smx_state_t simcall_BODY_process_execution_get_state(smx_synchro_t execution) { smx_process_t self = SIMIX_process_self(); /* Go to that function to follow the code flow through the simcall barrier */ - if (0) SIMIX_process_is_suspended(process); + if (0) SIMIX_process_execution_get_state(execution); /* end of the guide intended to the poor programmer wanting to go from MSG to Surf */ - self->simcall.call = SIMCALL_PROCESS_IS_SUSPENDED; + self->simcall.call = SIMCALL_PROCESS_EXECUTION_GET_STATE; memset(&self->simcall.result, 0, sizeof(self->simcall.result)); memset(self->simcall.args, 0, sizeof(self->simcall.args)); - self->simcall.args[0].dp = (void*) process; + self->simcall.args[0].dp = (void*) execution; if (self != simix_global->maestro_process) { XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name, SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call); @@ -1249,17 +1269,18 @@ inline static int simcall_BODY_process_is_suspended(smx_process_t process) { return self->simcall.result.i; } -inline static xbt_dict_t simcall_BODY_process_get_properties(smx_process_t process) { +inline static void simcall_BODY_process_execution_set_priority(smx_synchro_t execution, double priority) { smx_process_t self = SIMIX_process_self(); /* Go to that function to follow the code flow through the simcall barrier */ - if (0) SIMIX_process_get_properties(process); + if (0) SIMIX_process_execution_set_priority(execution, priority); /* end of the guide intended to the poor programmer wanting to go from MSG to Surf */ - self->simcall.call = SIMCALL_PROCESS_GET_PROPERTIES; + self->simcall.call = SIMCALL_PROCESS_EXECUTION_SET_PRIORITY; memset(&self->simcall.result, 0, sizeof(self->simcall.result)); memset(self->simcall.args, 0, sizeof(self->simcall.args)); - self->simcall.args[0].dp = (void*) process; + self->simcall.args[0].dp = (void*) execution; + self->simcall.args[1].d = (double) priority; if (self != simix_global->maestro_process) { XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name, SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call); @@ -1267,21 +1288,21 @@ inline static xbt_dict_t simcall_BODY_process_get_properties(smx_process_t proce } else { SIMIX_simcall_handle(&self->simcall, 0); } - return self->simcall.result.dp; + } -inline static int simcall_BODY_process_join(smx_process_t process, double timeout) { +inline static void simcall_BODY_process_execution_set_bound(smx_synchro_t execution, double bound) { smx_process_t self = SIMIX_process_self(); /* Go to that function to follow the code flow through the simcall barrier */ - if (0) simcall_HANDLER_process_join(&self->simcall, process, timeout); + if (0) SIMIX_process_execution_set_bound(execution, bound); /* end of the guide intended to the poor programmer wanting to go from MSG to Surf */ - self->simcall.call = SIMCALL_PROCESS_JOIN; + self->simcall.call = SIMCALL_PROCESS_EXECUTION_SET_BOUND; memset(&self->simcall.result, 0, sizeof(self->simcall.result)); memset(self->simcall.args, 0, sizeof(self->simcall.args)); - self->simcall.args[0].dp = (void*) process; - self->simcall.args[1].d = (double) timeout; + self->simcall.args[0].dp = (void*) execution; + self->simcall.args[1].d = (double) bound; if (self != simix_global->maestro_process) { XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name, SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call); @@ -1289,20 +1310,43 @@ inline static int simcall_BODY_process_join(smx_process_t process, double timeou } else { SIMIX_simcall_handle(&self->simcall, 0); } - return self->simcall.result.i; + } -inline static int simcall_BODY_process_sleep(double duration) { +inline static void simcall_BODY_process_execution_set_affinity(smx_synchro_t execution, sg_host_t ws, unsigned long mask) { smx_process_t self = SIMIX_process_self(); /* Go to that function to follow the code flow through the simcall barrier */ - if (0) simcall_HANDLER_process_sleep(&self->simcall, duration); + if (0) SIMIX_process_execution_set_affinity(execution, ws, mask); /* end of the guide intended to the poor programmer wanting to go from MSG to Surf */ - self->simcall.call = SIMCALL_PROCESS_SLEEP; + self->simcall.call = SIMCALL_PROCESS_EXECUTION_SET_AFFINITY; memset(&self->simcall.result, 0, sizeof(self->simcall.result)); memset(self->simcall.args, 0, sizeof(self->simcall.args)); - self->simcall.args[0].d = (double) duration; + self->simcall.args[0].dp = (void*) execution; + self->simcall.args[1].dp = (void*) ws; + self->simcall.args[2].ul = (unsigned long) mask; + if (self != simix_global->maestro_process) { + XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name, + SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call); + SIMIX_process_yield(self); + } else { + SIMIX_simcall_handle(&self->simcall, 0); + } + + } + +inline static int simcall_BODY_process_execution_wait(smx_synchro_t execution) { + smx_process_t self = SIMIX_process_self(); + + /* Go to that function to follow the code flow through the simcall barrier */ + if (0) simcall_HANDLER_process_execution_wait(&self->simcall, execution); + /* end of the guide intended to the poor programmer wanting to go from MSG to Surf */ + + self->simcall.call = SIMCALL_PROCESS_EXECUTION_WAIT; + memset(&self->simcall.result, 0, sizeof(self->simcall.result)); + memset(self->simcall.args, 0, sizeof(self->simcall.args)); + self->simcall.args[0].dp = (void*) execution; if (self != simix_global->maestro_process) { XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name, SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call); @@ -1421,7 +1465,7 @@ inline static void simcall_BODY_rdv_destroy(smx_rdv_t rdv) { } -inline static unsigned int simcall_BODY_rdv_comm_count_by_host(smx_rdv_t rdv, smx_host_t host) { +inline static unsigned int simcall_BODY_rdv_comm_count_by_host(smx_rdv_t rdv, sg_host_t host) { smx_process_t self = SIMIX_process_self(); /* Go to that function to follow the code flow through the simcall barrier */ @@ -1533,17 +1577,17 @@ inline static smx_synchro_t simcall_BODY_comm_iprobe(smx_rdv_t rdv, int type, in return self->simcall.result.dp; } -inline static void simcall_BODY_comm_send(smx_process_t src, smx_rdv_t rdv, double task_size, double rate, void* src_buff, size_t src_buff_size, simix_match_func_t match_fun, simix_copy_data_func_t copy_data_fun, void* data, double timeout) { +inline static void simcall_BODY_comm_send(smx_process_t sender, smx_rdv_t rdv, double task_size, double rate, void* src_buff, size_t src_buff_size, simix_match_func_t match_fun, simix_copy_data_func_t copy_data_fun, void* data, double timeout) { smx_process_t self = SIMIX_process_self(); /* Go to that function to follow the code flow through the simcall barrier */ - if (0) simcall_HANDLER_comm_send(&self->simcall, src, rdv, task_size, rate, src_buff, src_buff_size, match_fun, copy_data_fun, data, timeout); + if (0) simcall_HANDLER_comm_send(&self->simcall, sender, rdv, task_size, rate, src_buff, src_buff_size, match_fun, copy_data_fun, data, timeout); /* end of the guide intended to the poor programmer wanting to go from MSG to Surf */ self->simcall.call = SIMCALL_COMM_SEND; memset(&self->simcall.result, 0, sizeof(self->simcall.result)); memset(self->simcall.args, 0, sizeof(self->simcall.args)); - self->simcall.args[0].dp = (void*) src; + self->simcall.args[0].dp = (void*) sender; self->simcall.args[1].dp = (void*) rdv; self->simcall.args[2].d = (double) task_size; self->simcall.args[3].d = (double) rate; @@ -1563,17 +1607,17 @@ inline static void simcall_BODY_comm_send(smx_process_t src, smx_rdv_t rdv, doub } -inline static smx_synchro_t simcall_BODY_comm_isend(smx_process_t src, smx_rdv_t rdv, double task_size, double rate, void* src_buff, size_t src_buff_size, simix_match_func_t match_fun, simix_clean_func_t clean_fun, simix_copy_data_func_t copy_data_fun, void* data, int detached) { +inline static smx_synchro_t simcall_BODY_comm_isend(smx_process_t sender, smx_rdv_t rdv, double task_size, double rate, void* src_buff, size_t src_buff_size, simix_match_func_t match_fun, simix_clean_func_t clean_fun, simix_copy_data_func_t copy_data_fun, void* data, int detached) { smx_process_t self = SIMIX_process_self(); /* Go to that function to follow the code flow through the simcall barrier */ - if (0) simcall_HANDLER_comm_isend(&self->simcall, src, rdv, task_size, rate, src_buff, src_buff_size, match_fun, clean_fun, copy_data_fun, data, detached); + if (0) simcall_HANDLER_comm_isend(&self->simcall, sender, rdv, task_size, rate, src_buff, src_buff_size, match_fun, clean_fun, copy_data_fun, data, detached); /* end of the guide intended to the poor programmer wanting to go from MSG to Surf */ self->simcall.call = SIMCALL_COMM_ISEND; memset(&self->simcall.result, 0, sizeof(self->simcall.result)); memset(self->simcall.args, 0, sizeof(self->simcall.args)); - self->simcall.args[0].dp = (void*) src; + self->simcall.args[0].dp = (void*) sender; self->simcall.args[1].dp = (void*) rdv; self->simcall.args[2].d = (double) task_size; self->simcall.args[3].d = (double) rate; @@ -1594,24 +1638,25 @@ inline static smx_synchro_t simcall_BODY_comm_isend(smx_process_t src, smx_rdv_t return self->simcall.result.dp; } -inline static void simcall_BODY_comm_recv(smx_rdv_t rdv, void* dst_buff, size_t* dst_buff_size, simix_match_func_t match_fun, simix_copy_data_func_t copy_data_fun, void* data, double timeout, double rate) { +inline static void simcall_BODY_comm_recv(smx_process_t receiver, smx_rdv_t rdv, void* dst_buff, size_t* dst_buff_size, simix_match_func_t match_fun, simix_copy_data_func_t copy_data_fun, void* data, double timeout, double rate) { smx_process_t self = SIMIX_process_self(); /* Go to that function to follow the code flow through the simcall barrier */ - if (0) simcall_HANDLER_comm_recv(&self->simcall, rdv, dst_buff, dst_buff_size, match_fun, copy_data_fun, data, timeout, rate); + if (0) simcall_HANDLER_comm_recv(&self->simcall, receiver, rdv, dst_buff, dst_buff_size, match_fun, copy_data_fun, data, timeout, rate); /* end of the guide intended to the poor programmer wanting to go from MSG to Surf */ self->simcall.call = SIMCALL_COMM_RECV; memset(&self->simcall.result, 0, sizeof(self->simcall.result)); memset(self->simcall.args, 0, sizeof(self->simcall.args)); - self->simcall.args[0].dp = (void*) rdv; - self->simcall.args[1].dp = (void*) dst_buff; - self->simcall.args[2].dp = (void*) dst_buff_size; - self->simcall.args[3].fp = (FPtr) match_fun; - self->simcall.args[4].fp = (FPtr) copy_data_fun; - self->simcall.args[5].dp = (void*) data; - self->simcall.args[6].d = (double) timeout; - self->simcall.args[7].d = (double) rate; + self->simcall.args[0].dp = (void*) receiver; + self->simcall.args[1].dp = (void*) rdv; + self->simcall.args[2].dp = (void*) dst_buff; + self->simcall.args[3].dp = (void*) dst_buff_size; + self->simcall.args[4].fp = (FPtr) match_fun; + self->simcall.args[5].fp = (FPtr) copy_data_fun; + self->simcall.args[6].dp = (void*) data; + self->simcall.args[7].d = (double) timeout; + self->simcall.args[8].d = (double) rate; if (self != simix_global->maestro_process) { XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name, SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call); @@ -1622,23 +1667,24 @@ inline static void simcall_BODY_comm_recv(smx_rdv_t rdv, void* dst_buff, size_t* } -inline static smx_synchro_t simcall_BODY_comm_irecv(smx_rdv_t rdv, void* dst_buff, size_t* dst_buff_size, simix_match_func_t match_fun, simix_copy_data_func_t copy_data_fun, void* data, double rate) { +inline static smx_synchro_t simcall_BODY_comm_irecv(smx_process_t receiver, smx_rdv_t rdv, void* dst_buff, size_t* dst_buff_size, simix_match_func_t match_fun, simix_copy_data_func_t copy_data_fun, void* data, double rate) { smx_process_t self = SIMIX_process_self(); /* Go to that function to follow the code flow through the simcall barrier */ - if (0) simcall_HANDLER_comm_irecv(&self->simcall, rdv, dst_buff, dst_buff_size, match_fun, copy_data_fun, data, rate); + if (0) simcall_HANDLER_comm_irecv(&self->simcall, receiver, rdv, dst_buff, dst_buff_size, match_fun, copy_data_fun, data, rate); /* end of the guide intended to the poor programmer wanting to go from MSG to Surf */ self->simcall.call = SIMCALL_COMM_IRECV; memset(&self->simcall.result, 0, sizeof(self->simcall.result)); memset(self->simcall.args, 0, sizeof(self->simcall.args)); - self->simcall.args[0].dp = (void*) rdv; - self->simcall.args[1].dp = (void*) dst_buff; - self->simcall.args[2].dp = (void*) dst_buff_size; - self->simcall.args[3].fp = (FPtr) match_fun; - self->simcall.args[4].fp = (FPtr) copy_data_fun; - self->simcall.args[5].dp = (void*) data; - self->simcall.args[6].d = (double) rate; + self->simcall.args[0].dp = (void*) receiver; + self->simcall.args[1].dp = (void*) rdv; + self->simcall.args[2].dp = (void*) dst_buff; + self->simcall.args[3].dp = (void*) dst_buff_size; + self->simcall.args[4].fp = (FPtr) match_fun; + self->simcall.args[5].fp = (FPtr) copy_data_fun; + self->simcall.args[6].dp = (void*) data; + self->simcall.args[7].d = (double) rate; if (self != simix_global->maestro_process) { XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name, SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call); @@ -2263,7 +2309,7 @@ inline static int simcall_BODY_sem_get_capacity(smx_sem_t sem) { return self->simcall.result.i; } -inline static sg_size_t simcall_BODY_file_read(smx_file_t fd, sg_size_t size, smx_host_t host) { +inline static sg_size_t simcall_BODY_file_read(smx_file_t fd, sg_size_t size, sg_host_t host) { smx_process_t self = SIMIX_process_self(); /* Go to that function to follow the code flow through the simcall barrier */ @@ -2286,7 +2332,7 @@ inline static sg_size_t simcall_BODY_file_read(smx_file_t fd, sg_size_t size, sm return self->simcall.result.sgsz; } -inline static sg_size_t simcall_BODY_file_write(smx_file_t fd, sg_size_t size, smx_host_t host) { +inline static sg_size_t simcall_BODY_file_write(smx_file_t fd, sg_size_t size, sg_host_t host) { smx_process_t self = SIMIX_process_self(); /* Go to that function to follow the code flow through the simcall barrier */ @@ -2309,7 +2355,7 @@ inline static sg_size_t simcall_BODY_file_write(smx_file_t fd, sg_size_t size, s return self->simcall.result.sgsz; } -inline static smx_file_t simcall_BODY_file_open(const char* fullpath, smx_host_t host) { +inline static smx_file_t simcall_BODY_file_open(const char* fullpath, sg_host_t host) { smx_process_t self = SIMIX_process_self(); /* Go to that function to follow the code flow through the simcall barrier */ @@ -2331,7 +2377,7 @@ inline static smx_file_t simcall_BODY_file_open(const char* fullpath, smx_host_t return self->simcall.result.dp; } -inline static int simcall_BODY_file_close(smx_file_t fd, smx_host_t host) { +inline static int simcall_BODY_file_close(smx_file_t fd, sg_host_t host) { smx_process_t self = SIMIX_process_self(); /* Go to that function to follow the code flow through the simcall barrier */ @@ -2353,7 +2399,7 @@ inline static int simcall_BODY_file_close(smx_file_t fd, smx_host_t host) { return self->simcall.result.i; } -inline static int simcall_BODY_file_unlink(smx_file_t fd, smx_host_t host) { +inline static int simcall_BODY_file_unlink(smx_file_t fd, sg_host_t host) { smx_process_t self = SIMIX_process_self(); /* Go to that function to follow the code flow through the simcall barrier */