}
smx_action_t SIMIX_pre_host_execute(smx_simcall_t simcall,const char *name,
- smx_host_t host, double computation_amount, double priority, double bound){
- return SIMIX_host_execute(name, host, computation_amount, priority, bound);
+ smx_host_t host, double computation_amount, double priority, double bound, unsigned long affinity_mask){
+ return SIMIX_host_execute(name, host, computation_amount, priority, bound, affinity_mask);
}
smx_action_t SIMIX_host_execute(const char *name,
- smx_host_t host, double computation_amount, double priority, double bound){
+ smx_host_t host, double computation_amount, double priority, double bound, unsigned long affinity_mask){
/* alloc structures and initialize */
smx_action_t action = xbt_mallocator_get(simix_global->action_mallocator);
ws_model->set_bound(action->execution.surf_exec, SIMIX_host_get_speed(host));
else
ws_model->set_bound(action->execution.surf_exec, bound);
+
+ if (affinity_mask != 0)
+ ws_model->set_affinity(action->execution.surf_exec, host, affinity_mask);
}
XBT_DEBUG("Create execute action %p", action);
ws_model->set_bound(action->execution.surf_exec, bound);
}
+void SIMIX_pre_host_execution_set_affinity(smx_simcall_t simcall,
+ smx_action_t action, smx_host_t host, unsigned long mask){
+ SIMIX_host_execution_set_affinity(action, host, mask);
+}
+void SIMIX_host_execution_set_affinity(smx_action_t action, smx_host_t host, unsigned long mask){
+ surf_model_t ws_model = get_ws_model_from_action(action);
+
+ if(action->execution.surf_exec)
+ ws_model->set_affinity(action->execution.surf_exec, host, mask);
+}
+
void SIMIX_pre_host_execution_wait(smx_simcall_t simcall, smx_action_t action){
XBT_DEBUG("Wait for execution of action %p, state %d", action, (int)action->state);