Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
2aa517132238c4309d65e49dc0a6176e9bdb1cb0
[simgrid.git] / src / simix / popping_bodies.c
1 /**********************************************************************/
2 /* File generated by src/simix/simcalls.py from src/simix/simcalls.in */
3 /*                                                                    */
4 /*                    DO NOT EVER CHANGE THIS FILE                    */
5 /*                                                                    */
6 /* change simcalls specification in src/simix/simcalls.in             */
7 /**********************************************************************/
8
9 /*
10  * Note that the name comes from http://en.wikipedia.org/wiki/Popping
11  * Indeed, the control flow is doing a strange dance in there.
12  *
13  * That's not about http://en.wikipedia.org/wiki/Poop, despite the odor :)
14  */
15
16 #include "smx_private.h"
17 #include "mc/mc_forward.h"
18 #include "xbt/ex.h"
19   
20 inline static const char* simcall_BODY_host_get_name(sg_host_t host) {
21     smx_process_t self = SIMIX_process_self();
22
23     /* Go to that function to follow the code flow through the simcall barrier */
24     if (0) SIMIX_host_get_name(host);
25     /* end of the guide intended to the poor programmer wanting to go from MSG to Surf */
26
27     self->simcall.call = SIMCALL_HOST_GET_NAME;
28     memset(&self->simcall.result, 0, sizeof(self->simcall.result));
29     memset(self->simcall.args, 0, sizeof(self->simcall.args));
30     self->simcall.args[0].dp = (void*) host;
31     if (self != simix_global->maestro_process) {
32       XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
33                 SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
34       SIMIX_process_yield(self);
35     } else {
36       SIMIX_simcall_handle(&self->simcall, 0);
37     }    
38     return self->simcall.result.cc;
39   }
40   
41 inline static void simcall_BODY_host_on(sg_host_t host) {
42     smx_process_t self = SIMIX_process_self();
43
44     /* Go to that function to follow the code flow through the simcall barrier */
45     if (0) SIMIX_host_on(host);
46     /* end of the guide intended to the poor programmer wanting to go from MSG to Surf */
47
48     self->simcall.call = SIMCALL_HOST_ON;
49     memset(&self->simcall.result, 0, sizeof(self->simcall.result));
50     memset(self->simcall.args, 0, sizeof(self->simcall.args));
51     self->simcall.args[0].dp = (void*) host;
52     if (self != simix_global->maestro_process) {
53       XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
54                 SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
55       SIMIX_process_yield(self);
56     } else {
57       SIMIX_simcall_handle(&self->simcall, 0);
58     }    
59     
60   }
61   
62 inline static void simcall_BODY_host_off(sg_host_t host) {
63     smx_process_t self = SIMIX_process_self();
64
65     /* Go to that function to follow the code flow through the simcall barrier */
66     if (0) simcall_HANDLER_host_off(&self->simcall, host);
67     /* end of the guide intended to the poor programmer wanting to go from MSG to Surf */
68
69     self->simcall.call = SIMCALL_HOST_OFF;
70     memset(&self->simcall.result, 0, sizeof(self->simcall.result));
71     memset(self->simcall.args, 0, sizeof(self->simcall.args));
72     self->simcall.args[0].dp = (void*) host;
73     if (self != simix_global->maestro_process) {
74       XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
75                 SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
76       SIMIX_process_yield(self);
77     } else {
78       SIMIX_simcall_handle(&self->simcall, 0);
79     }    
80     
81   }
82   
83 inline static xbt_dict_t simcall_BODY_host_get_properties(sg_host_t host) {
84     smx_process_t self = SIMIX_process_self();
85
86     /* Go to that function to follow the code flow through the simcall barrier */
87     if (0) SIMIX_host_get_properties(host);
88     /* end of the guide intended to the poor programmer wanting to go from MSG to Surf */
89
90     self->simcall.call = SIMCALL_HOST_GET_PROPERTIES;
91     memset(&self->simcall.result, 0, sizeof(self->simcall.result));
92     memset(self->simcall.args, 0, sizeof(self->simcall.args));
93     self->simcall.args[0].dp = (void*) host;
94     if (self != simix_global->maestro_process) {
95       XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
96                 SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
97       SIMIX_process_yield(self);
98     } else {
99       SIMIX_simcall_handle(&self->simcall, 0);
100     }    
101     return self->simcall.result.dp;
102   }
103   
104 inline static int simcall_BODY_host_get_core(sg_host_t host) {
105     smx_process_t self = SIMIX_process_self();
106
107     /* Go to that function to follow the code flow through the simcall barrier */
108     if (0) SIMIX_host_get_core(host);
109     /* end of the guide intended to the poor programmer wanting to go from MSG to Surf */
110
111     self->simcall.call = SIMCALL_HOST_GET_CORE;
112     memset(&self->simcall.result, 0, sizeof(self->simcall.result));
113     memset(self->simcall.args, 0, sizeof(self->simcall.args));
114     self->simcall.args[0].dp = (void*) host;
115     if (self != simix_global->maestro_process) {
116       XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
117                 SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
118       SIMIX_process_yield(self);
119     } else {
120       SIMIX_simcall_handle(&self->simcall, 0);
121     }    
122     return self->simcall.result.i;
123   }
124   
125 inline static xbt_swag_t simcall_BODY_host_get_process_list(sg_host_t host) {
126     smx_process_t self = SIMIX_process_self();
127
128     /* Go to that function to follow the code flow through the simcall barrier */
129     if (0) SIMIX_host_get_process_list(host);
130     /* end of the guide intended to the poor programmer wanting to go from MSG to Surf */
131
132     self->simcall.call = SIMCALL_HOST_GET_PROCESS_LIST;
133     memset(&self->simcall.result, 0, sizeof(self->simcall.result));
134     memset(self->simcall.args, 0, sizeof(self->simcall.args));
135     self->simcall.args[0].dp = (void*) host;
136     if (self != simix_global->maestro_process) {
137       XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
138                 SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
139       SIMIX_process_yield(self);
140     } else {
141       SIMIX_simcall_handle(&self->simcall, 0);
142     }    
143     return self->simcall.result.dp;
144   }
145   
146 inline static double simcall_BODY_host_get_speed(sg_host_t host) {
147     smx_process_t self = SIMIX_process_self();
148
149     /* Go to that function to follow the code flow through the simcall barrier */
150     if (0) SIMIX_host_get_speed(host);
151     /* end of the guide intended to the poor programmer wanting to go from MSG to Surf */
152
153     self->simcall.call = SIMCALL_HOST_GET_SPEED;
154     memset(&self->simcall.result, 0, sizeof(self->simcall.result));
155     memset(self->simcall.args, 0, sizeof(self->simcall.args));
156     self->simcall.args[0].dp = (void*) host;
157     if (self != simix_global->maestro_process) {
158       XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
159                 SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
160       SIMIX_process_yield(self);
161     } else {
162       SIMIX_simcall_handle(&self->simcall, 0);
163     }    
164     return self->simcall.result.d;
165   }
166   
167 inline static double simcall_BODY_host_get_available_speed(sg_host_t host) {
168     smx_process_t self = SIMIX_process_self();
169
170     /* Go to that function to follow the code flow through the simcall barrier */
171     if (0) SIMIX_host_get_available_speed(host);
172     /* end of the guide intended to the poor programmer wanting to go from MSG to Surf */
173
174     self->simcall.call = SIMCALL_HOST_GET_AVAILABLE_SPEED;
175     memset(&self->simcall.result, 0, sizeof(self->simcall.result));
176     memset(self->simcall.args, 0, sizeof(self->simcall.args));
177     self->simcall.args[0].dp = (void*) host;
178     if (self != simix_global->maestro_process) {
179       XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
180                 SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
181       SIMIX_process_yield(self);
182     } else {
183       SIMIX_simcall_handle(&self->simcall, 0);
184     }    
185     return self->simcall.result.d;
186   }
187   
188 inline static int simcall_BODY_host_get_state(sg_host_t host) {
189     smx_process_t self = SIMIX_process_self();
190
191     /* Go to that function to follow the code flow through the simcall barrier */
192     if (0) SIMIX_host_get_state(host);
193     /* end of the guide intended to the poor programmer wanting to go from MSG to Surf */
194
195     self->simcall.call = SIMCALL_HOST_GET_STATE;
196     memset(&self->simcall.result, 0, sizeof(self->simcall.result));
197     memset(self->simcall.args, 0, sizeof(self->simcall.args));
198     self->simcall.args[0].dp = (void*) host;
199     if (self != simix_global->maestro_process) {
200       XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
201                 SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
202       SIMIX_process_yield(self);
203     } else {
204       SIMIX_simcall_handle(&self->simcall, 0);
205     }    
206     return self->simcall.result.i;
207   }
208   
209 inline static double simcall_BODY_host_get_current_power_peak(sg_host_t host) {
210     smx_process_t self = SIMIX_process_self();
211
212     /* Go to that function to follow the code flow through the simcall barrier */
213     if (0) SIMIX_host_get_current_power_peak(host);
214     /* end of the guide intended to the poor programmer wanting to go from MSG to Surf */
215
216     self->simcall.call = SIMCALL_HOST_GET_CURRENT_POWER_PEAK;
217     memset(&self->simcall.result, 0, sizeof(self->simcall.result));
218     memset(self->simcall.args, 0, sizeof(self->simcall.args));
219     self->simcall.args[0].dp = (void*) host;
220     if (self != simix_global->maestro_process) {
221       XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
222                 SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
223       SIMIX_process_yield(self);
224     } else {
225       SIMIX_simcall_handle(&self->simcall, 0);
226     }    
227     return self->simcall.result.d;
228   }
229   
230 inline static double simcall_BODY_host_get_power_peak_at(sg_host_t host, int pstate_index) {
231     smx_process_t self = SIMIX_process_self();
232
233     /* Go to that function to follow the code flow through the simcall barrier */
234     if (0) SIMIX_host_get_power_peak_at(host, pstate_index);
235     /* end of the guide intended to the poor programmer wanting to go from MSG to Surf */
236
237     self->simcall.call = SIMCALL_HOST_GET_POWER_PEAK_AT;
238     memset(&self->simcall.result, 0, sizeof(self->simcall.result));
239     memset(self->simcall.args, 0, sizeof(self->simcall.args));
240     self->simcall.args[0].dp = (void*) host;
241     self->simcall.args[1].i = (int) pstate_index;
242     if (self != simix_global->maestro_process) {
243       XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
244                 SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
245       SIMIX_process_yield(self);
246     } else {
247       SIMIX_simcall_handle(&self->simcall, 0);
248     }    
249     return self->simcall.result.d;
250   }
251   
252 inline static int simcall_BODY_host_get_nb_pstates(sg_host_t host) {
253     smx_process_t self = SIMIX_process_self();
254
255     /* Go to that function to follow the code flow through the simcall barrier */
256     if (0) SIMIX_host_get_nb_pstates(host);
257     /* end of the guide intended to the poor programmer wanting to go from MSG to Surf */
258
259     self->simcall.call = SIMCALL_HOST_GET_NB_PSTATES;
260     memset(&self->simcall.result, 0, sizeof(self->simcall.result));
261     memset(self->simcall.args, 0, sizeof(self->simcall.args));
262     self->simcall.args[0].dp = (void*) host;
263     if (self != simix_global->maestro_process) {
264       XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
265                 SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
266       SIMIX_process_yield(self);
267     } else {
268       SIMIX_simcall_handle(&self->simcall, 0);
269     }    
270     return self->simcall.result.i;
271   }
272   
273 inline static double simcall_BODY_host_get_wattmin_at(sg_host_t host, int pstate_index) {
274     smx_process_t self = SIMIX_process_self();
275
276     /* Go to that function to follow the code flow through the simcall barrier */
277     if (0) SIMIX_host_get_wattmin_at(host, pstate_index);
278     /* end of the guide intended to the poor programmer wanting to go from MSG to Surf */
279
280     self->simcall.call = SIMCALL_HOST_GET_WATTMIN_AT;
281     memset(&self->simcall.result, 0, sizeof(self->simcall.result));
282     memset(self->simcall.args, 0, sizeof(self->simcall.args));
283     self->simcall.args[0].dp = (void*) host;
284     self->simcall.args[1].i = (int) pstate_index;
285     if (self != simix_global->maestro_process) {
286       XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
287                 SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
288       SIMIX_process_yield(self);
289     } else {
290       SIMIX_simcall_handle(&self->simcall, 0);
291     }    
292     return self->simcall.result.d;
293   }
294   
295 inline static double simcall_BODY_host_get_wattmax_at(sg_host_t host, int pstate_index) {
296     smx_process_t self = SIMIX_process_self();
297
298     /* Go to that function to follow the code flow through the simcall barrier */
299     if (0) SIMIX_host_get_wattmax_at(host, pstate_index);
300     /* end of the guide intended to the poor programmer wanting to go from MSG to Surf */
301
302     self->simcall.call = SIMCALL_HOST_GET_WATTMAX_AT;
303     memset(&self->simcall.result, 0, sizeof(self->simcall.result));
304     memset(self->simcall.args, 0, sizeof(self->simcall.args));
305     self->simcall.args[0].dp = (void*) host;
306     self->simcall.args[1].i = (int) pstate_index;
307     if (self != simix_global->maestro_process) {
308       XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
309                 SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
310       SIMIX_process_yield(self);
311     } else {
312       SIMIX_simcall_handle(&self->simcall, 0);
313     }    
314     return self->simcall.result.d;
315   }
316   
317 inline static void simcall_BODY_host_set_pstate(sg_host_t host, int pstate_index) {
318     smx_process_t self = SIMIX_process_self();
319
320     /* Go to that function to follow the code flow through the simcall barrier */
321     if (0) SIMIX_host_set_pstate(host, pstate_index);
322     /* end of the guide intended to the poor programmer wanting to go from MSG to Surf */
323
324     self->simcall.call = SIMCALL_HOST_SET_PSTATE;
325     memset(&self->simcall.result, 0, sizeof(self->simcall.result));
326     memset(self->simcall.args, 0, sizeof(self->simcall.args));
327     self->simcall.args[0].dp = (void*) host;
328     self->simcall.args[1].i = (int) pstate_index;
329     if (self != simix_global->maestro_process) {
330       XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
331                 SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
332       SIMIX_process_yield(self);
333     } else {
334       SIMIX_simcall_handle(&self->simcall, 0);
335     }    
336     
337   }
338   
339 inline static int simcall_BODY_host_get_pstate(sg_host_t host) {
340     smx_process_t self = SIMIX_process_self();
341
342     /* Go to that function to follow the code flow through the simcall barrier */
343     if (0) SIMIX_host_get_pstate(host);
344     /* end of the guide intended to the poor programmer wanting to go from MSG to Surf */
345
346     self->simcall.call = SIMCALL_HOST_GET_PSTATE;
347     memset(&self->simcall.result, 0, sizeof(self->simcall.result));
348     memset(self->simcall.args, 0, sizeof(self->simcall.args));
349     self->simcall.args[0].dp = (void*) host;
350     if (self != simix_global->maestro_process) {
351       XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
352                 SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
353       SIMIX_process_yield(self);
354     } else {
355       SIMIX_simcall_handle(&self->simcall, 0);
356     }    
357     return self->simcall.result.i;
358   }
359   
360 inline static double simcall_BODY_host_get_consumed_energy(sg_host_t host) {
361     smx_process_t self = SIMIX_process_self();
362
363     /* Go to that function to follow the code flow through the simcall barrier */
364     if (0) SIMIX_host_get_consumed_energy(host);
365     /* end of the guide intended to the poor programmer wanting to go from MSG to Surf */
366
367     self->simcall.call = SIMCALL_HOST_GET_CONSUMED_ENERGY;
368     memset(&self->simcall.result, 0, sizeof(self->simcall.result));
369     memset(self->simcall.args, 0, sizeof(self->simcall.args));
370     self->simcall.args[0].dp = (void*) host;
371     if (self != simix_global->maestro_process) {
372       XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
373                 SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
374       SIMIX_process_yield(self);
375     } else {
376       SIMIX_simcall_handle(&self->simcall, 0);
377     }    
378     return self->simcall.result.d;
379   }
380   
381 inline static xbt_dict_t simcall_BODY_host_get_mounted_storage_list(sg_host_t host) {
382     smx_process_t self = SIMIX_process_self();
383
384     /* Go to that function to follow the code flow through the simcall barrier */
385     if (0) SIMIX_host_get_mounted_storage_list(host);
386     /* end of the guide intended to the poor programmer wanting to go from MSG to Surf */
387
388     self->simcall.call = SIMCALL_HOST_GET_MOUNTED_STORAGE_LIST;
389     memset(&self->simcall.result, 0, sizeof(self->simcall.result));
390     memset(self->simcall.args, 0, sizeof(self->simcall.args));
391     self->simcall.args[0].dp = (void*) host;
392     if (self != simix_global->maestro_process) {
393       XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
394                 SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
395       SIMIX_process_yield(self);
396     } else {
397       SIMIX_simcall_handle(&self->simcall, 0);
398     }    
399     return self->simcall.result.dp;
400   }
401   
402 inline static xbt_dynar_t simcall_BODY_host_get_attached_storage_list(sg_host_t host) {
403     smx_process_t self = SIMIX_process_self();
404
405     /* Go to that function to follow the code flow through the simcall barrier */
406     if (0) SIMIX_host_get_attached_storage_list(host);
407     /* end of the guide intended to the poor programmer wanting to go from MSG to Surf */
408
409     self->simcall.call = SIMCALL_HOST_GET_ATTACHED_STORAGE_LIST;
410     memset(&self->simcall.result, 0, sizeof(self->simcall.result));
411     memset(self->simcall.args, 0, sizeof(self->simcall.args));
412     self->simcall.args[0].dp = (void*) host;
413     if (self != simix_global->maestro_process) {
414       XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
415                 SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
416       SIMIX_process_yield(self);
417     } else {
418       SIMIX_simcall_handle(&self->simcall, 0);
419     }    
420     return self->simcall.result.dp;
421   }
422   
423 inline static void simcall_BODY_host_get_params(sg_host_t ind_vm, vm_params_t params) {
424     smx_process_t self = SIMIX_process_self();
425
426     /* Go to that function to follow the code flow through the simcall barrier */
427     if (0) SIMIX_host_get_params(ind_vm, params);
428     /* end of the guide intended to the poor programmer wanting to go from MSG to Surf */
429
430     self->simcall.call = SIMCALL_HOST_GET_PARAMS;
431     memset(&self->simcall.result, 0, sizeof(self->simcall.result));
432     memset(self->simcall.args, 0, sizeof(self->simcall.args));
433     self->simcall.args[0].dp = (void*) ind_vm;
434     self->simcall.args[1].dp = (void*) params;
435     if (self != simix_global->maestro_process) {
436       XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
437                 SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
438       SIMIX_process_yield(self);
439     } else {
440       SIMIX_simcall_handle(&self->simcall, 0);
441     }    
442     
443   }
444   
445 inline static void simcall_BODY_host_set_params(sg_host_t ind_vm, vm_params_t params) {
446     smx_process_t self = SIMIX_process_self();
447
448     /* Go to that function to follow the code flow through the simcall barrier */
449     if (0) SIMIX_host_set_params(ind_vm, params);
450     /* end of the guide intended to the poor programmer wanting to go from MSG to Surf */
451
452     self->simcall.call = SIMCALL_HOST_SET_PARAMS;
453     memset(&self->simcall.result, 0, sizeof(self->simcall.result));
454     memset(self->simcall.args, 0, sizeof(self->simcall.args));
455     self->simcall.args[0].dp = (void*) ind_vm;
456     self->simcall.args[1].dp = (void*) params;
457     if (self != simix_global->maestro_process) {
458       XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
459                 SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
460       SIMIX_process_yield(self);
461     } else {
462       SIMIX_simcall_handle(&self->simcall, 0);
463     }    
464     
465   }
466   
467 inline static sg_host_t simcall_BODY_vm_create(const char* name, sg_host_t ind_pm) {
468     smx_process_t self = SIMIX_process_self();
469
470     /* Go to that function to follow the code flow through the simcall barrier */
471     if (0) SIMIX_vm_create(name, ind_pm);
472     /* end of the guide intended to the poor programmer wanting to go from MSG to Surf */
473
474     self->simcall.call = SIMCALL_VM_CREATE;
475     memset(&self->simcall.result, 0, sizeof(self->simcall.result));
476     memset(self->simcall.args, 0, sizeof(self->simcall.args));
477     self->simcall.args[0].cc = (const char*) name;
478     self->simcall.args[1].dp = (void*) ind_pm;
479     if (self != simix_global->maestro_process) {
480       XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
481                 SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
482       SIMIX_process_yield(self);
483     } else {
484       SIMIX_simcall_handle(&self->simcall, 0);
485     }    
486     return self->simcall.result.dp;
487   }
488   
489 inline static void simcall_BODY_vm_start(sg_host_t ind_vm) {
490     smx_process_t self = SIMIX_process_self();
491
492     /* Go to that function to follow the code flow through the simcall barrier */
493     if (0) SIMIX_vm_start(ind_vm);
494     /* end of the guide intended to the poor programmer wanting to go from MSG to Surf */
495
496     self->simcall.call = SIMCALL_VM_START;
497     memset(&self->simcall.result, 0, sizeof(self->simcall.result));
498     memset(self->simcall.args, 0, sizeof(self->simcall.args));
499     self->simcall.args[0].dp = (void*) ind_vm;
500     if (self != simix_global->maestro_process) {
501       XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
502                 SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
503       SIMIX_process_yield(self);
504     } else {
505       SIMIX_simcall_handle(&self->simcall, 0);
506     }    
507     
508   }
509   
510 inline static int simcall_BODY_vm_get_state(sg_host_t ind_vm) {
511     smx_process_t self = SIMIX_process_self();
512
513     /* Go to that function to follow the code flow through the simcall barrier */
514     if (0) SIMIX_vm_get_state(ind_vm);
515     /* end of the guide intended to the poor programmer wanting to go from MSG to Surf */
516
517     self->simcall.call = SIMCALL_VM_GET_STATE;
518     memset(&self->simcall.result, 0, sizeof(self->simcall.result));
519     memset(self->simcall.args, 0, sizeof(self->simcall.args));
520     self->simcall.args[0].dp = (void*) ind_vm;
521     if (self != simix_global->maestro_process) {
522       XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
523                 SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
524       SIMIX_process_yield(self);
525     } else {
526       SIMIX_simcall_handle(&self->simcall, 0);
527     }    
528     return self->simcall.result.i;
529   }
530   
531 inline static void simcall_BODY_vm_migrate(sg_host_t ind_vm, sg_host_t ind_dst_pm) {
532     smx_process_t self = SIMIX_process_self();
533
534     /* Go to that function to follow the code flow through the simcall barrier */
535     if (0) SIMIX_vm_migrate(ind_vm, ind_dst_pm);
536     /* end of the guide intended to the poor programmer wanting to go from MSG to Surf */
537
538     self->simcall.call = SIMCALL_VM_MIGRATE;
539     memset(&self->simcall.result, 0, sizeof(self->simcall.result));
540     memset(self->simcall.args, 0, sizeof(self->simcall.args));
541     self->simcall.args[0].dp = (void*) ind_vm;
542     self->simcall.args[1].dp = (void*) ind_dst_pm;
543     if (self != simix_global->maestro_process) {
544       XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
545                 SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
546       SIMIX_process_yield(self);
547     } else {
548       SIMIX_simcall_handle(&self->simcall, 0);
549     }    
550     
551   }
552   
553 inline static void* simcall_BODY_vm_get_pm(sg_host_t ind_vm) {
554     smx_process_t self = SIMIX_process_self();
555
556     /* Go to that function to follow the code flow through the simcall barrier */
557     if (0) SIMIX_vm_get_pm(ind_vm);
558     /* end of the guide intended to the poor programmer wanting to go from MSG to Surf */
559
560     self->simcall.call = SIMCALL_VM_GET_PM;
561     memset(&self->simcall.result, 0, sizeof(self->simcall.result));
562     memset(self->simcall.args, 0, sizeof(self->simcall.args));
563     self->simcall.args[0].dp = (void*) ind_vm;
564     if (self != simix_global->maestro_process) {
565       XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
566                 SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
567       SIMIX_process_yield(self);
568     } else {
569       SIMIX_simcall_handle(&self->simcall, 0);
570     }    
571     return self->simcall.result.dp;
572   }
573   
574 inline static void simcall_BODY_vm_set_bound(sg_host_t ind_vm, double bound) {
575     smx_process_t self = SIMIX_process_self();
576
577     /* Go to that function to follow the code flow through the simcall barrier */
578     if (0) SIMIX_vm_set_bound(ind_vm, bound);
579     /* end of the guide intended to the poor programmer wanting to go from MSG to Surf */
580
581     self->simcall.call = SIMCALL_VM_SET_BOUND;
582     memset(&self->simcall.result, 0, sizeof(self->simcall.result));
583     memset(self->simcall.args, 0, sizeof(self->simcall.args));
584     self->simcall.args[0].dp = (void*) ind_vm;
585     self->simcall.args[1].d = (double) bound;
586     if (self != simix_global->maestro_process) {
587       XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
588                 SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
589       SIMIX_process_yield(self);
590     } else {
591       SIMIX_simcall_handle(&self->simcall, 0);
592     }    
593     
594   }
595   
596 inline static void simcall_BODY_vm_set_affinity(sg_host_t ind_vm, sg_host_t ind_pm, unsigned long mask) {
597     smx_process_t self = SIMIX_process_self();
598
599     /* Go to that function to follow the code flow through the simcall barrier */
600     if (0) SIMIX_vm_set_affinity(ind_vm, ind_pm, mask);
601     /* end of the guide intended to the poor programmer wanting to go from MSG to Surf */
602
603     self->simcall.call = SIMCALL_VM_SET_AFFINITY;
604     memset(&self->simcall.result, 0, sizeof(self->simcall.result));
605     memset(self->simcall.args, 0, sizeof(self->simcall.args));
606     self->simcall.args[0].dp = (void*) ind_vm;
607     self->simcall.args[1].dp = (void*) ind_pm;
608     self->simcall.args[2].ul = (unsigned long) mask;
609     if (self != simix_global->maestro_process) {
610       XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
611                 SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
612       SIMIX_process_yield(self);
613     } else {
614       SIMIX_simcall_handle(&self->simcall, 0);
615     }    
616     
617   }
618   
619 inline static void simcall_BODY_vm_destroy(sg_host_t ind_vm) {
620     smx_process_t self = SIMIX_process_self();
621
622     /* Go to that function to follow the code flow through the simcall barrier */
623     if (0) SIMIX_vm_destroy(ind_vm);
624     /* end of the guide intended to the poor programmer wanting to go from MSG to Surf */
625
626     self->simcall.call = SIMCALL_VM_DESTROY;
627     memset(&self->simcall.result, 0, sizeof(self->simcall.result));
628     memset(self->simcall.args, 0, sizeof(self->simcall.args));
629     self->simcall.args[0].dp = (void*) ind_vm;
630     if (self != simix_global->maestro_process) {
631       XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
632                 SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
633       SIMIX_process_yield(self);
634     } else {
635       SIMIX_simcall_handle(&self->simcall, 0);
636     }    
637     
638   }
639   
640 inline static void simcall_BODY_vm_suspend(sg_host_t ind_vm) {
641     smx_process_t self = SIMIX_process_self();
642
643     /* Go to that function to follow the code flow through the simcall barrier */
644     if (0) simcall_HANDLER_vm_suspend(&self->simcall, ind_vm);
645     /* end of the guide intended to the poor programmer wanting to go from MSG to Surf */
646
647     self->simcall.call = SIMCALL_VM_SUSPEND;
648     memset(&self->simcall.result, 0, sizeof(self->simcall.result));
649     memset(self->simcall.args, 0, sizeof(self->simcall.args));
650     self->simcall.args[0].dp = (void*) ind_vm;
651     if (self != simix_global->maestro_process) {
652       XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
653                 SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
654       SIMIX_process_yield(self);
655     } else {
656       SIMIX_simcall_handle(&self->simcall, 0);
657     }    
658     
659   }
660   
661 inline static void simcall_BODY_vm_resume(sg_host_t ind_vm) {
662     smx_process_t self = SIMIX_process_self();
663
664     /* Go to that function to follow the code flow through the simcall barrier */
665     if (0) simcall_HANDLER_vm_resume(&self->simcall, ind_vm);
666     /* end of the guide intended to the poor programmer wanting to go from MSG to Surf */
667
668     self->simcall.call = SIMCALL_VM_RESUME;
669     memset(&self->simcall.result, 0, sizeof(self->simcall.result));
670     memset(self->simcall.args, 0, sizeof(self->simcall.args));
671     self->simcall.args[0].dp = (void*) ind_vm;
672     if (self != simix_global->maestro_process) {
673       XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
674                 SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
675       SIMIX_process_yield(self);
676     } else {
677       SIMIX_simcall_handle(&self->simcall, 0);
678     }    
679     
680   }
681   
682 inline static void simcall_BODY_vm_shutdown(sg_host_t ind_vm) {
683     smx_process_t self = SIMIX_process_self();
684
685     /* Go to that function to follow the code flow through the simcall barrier */
686     if (0) simcall_HANDLER_vm_shutdown(&self->simcall, ind_vm);
687     /* end of the guide intended to the poor programmer wanting to go from MSG to Surf */
688
689     self->simcall.call = SIMCALL_VM_SHUTDOWN;
690     memset(&self->simcall.result, 0, sizeof(self->simcall.result));
691     memset(self->simcall.args, 0, sizeof(self->simcall.args));
692     self->simcall.args[0].dp = (void*) ind_vm;
693     if (self != simix_global->maestro_process) {
694       XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
695                 SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
696       SIMIX_process_yield(self);
697     } else {
698       SIMIX_simcall_handle(&self->simcall, 0);
699     }    
700     
701   }
702   
703 inline static void simcall_BODY_vm_save(sg_host_t ind_vm) {
704     smx_process_t self = SIMIX_process_self();
705
706     /* Go to that function to follow the code flow through the simcall barrier */
707     if (0) simcall_HANDLER_vm_save(&self->simcall, ind_vm);
708     /* end of the guide intended to the poor programmer wanting to go from MSG to Surf */
709
710     self->simcall.call = SIMCALL_VM_SAVE;
711     memset(&self->simcall.result, 0, sizeof(self->simcall.result));
712     memset(self->simcall.args, 0, sizeof(self->simcall.args));
713     self->simcall.args[0].dp = (void*) ind_vm;
714     if (self != simix_global->maestro_process) {
715       XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
716                 SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
717       SIMIX_process_yield(self);
718     } else {
719       SIMIX_simcall_handle(&self->simcall, 0);
720     }    
721     
722   }
723   
724 inline static void simcall_BODY_vm_restore(sg_host_t ind_vm) {
725     smx_process_t self = SIMIX_process_self();
726
727     /* Go to that function to follow the code flow through the simcall barrier */
728     if (0) simcall_HANDLER_vm_restore(&self->simcall, ind_vm);
729     /* end of the guide intended to the poor programmer wanting to go from MSG to Surf */
730
731     self->simcall.call = SIMCALL_VM_RESTORE;
732     memset(&self->simcall.result, 0, sizeof(self->simcall.result));
733     memset(self->simcall.args, 0, sizeof(self->simcall.args));
734     self->simcall.args[0].dp = (void*) ind_vm;
735     if (self != simix_global->maestro_process) {
736       XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
737                 SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
738       SIMIX_process_yield(self);
739     } else {
740       SIMIX_simcall_handle(&self->simcall, 0);
741     }    
742     
743   }
744   
745 inline static void simcall_BODY_vm_migratefrom_resumeto(sg_host_t vm, sg_host_t src_pm, sg_host_t dst_pm) {
746     smx_process_t self = SIMIX_process_self();
747
748     /* Go to that function to follow the code flow through the simcall barrier */
749     if (0) SIMIX_vm_migratefrom_resumeto(vm, src_pm, dst_pm);
750     /* end of the guide intended to the poor programmer wanting to go from MSG to Surf */
751
752     self->simcall.call = SIMCALL_VM_MIGRATEFROM_RESUMETO;
753     memset(&self->simcall.result, 0, sizeof(self->simcall.result));
754     memset(self->simcall.args, 0, sizeof(self->simcall.args));
755     self->simcall.args[0].dp = (void*) vm;
756     self->simcall.args[1].dp = (void*) src_pm;
757     self->simcall.args[2].dp = (void*) dst_pm;
758     if (self != simix_global->maestro_process) {
759       XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
760                 SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
761       SIMIX_process_yield(self);
762     } else {
763       SIMIX_simcall_handle(&self->simcall, 0);
764     }    
765     
766   }
767   
768 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) {
769     smx_process_t self = SIMIX_process_self();
770
771     /* Go to that function to follow the code flow through the simcall barrier */
772     if (0) simcall_HANDLER_process_create(&self->simcall, name, code, data, hostname, kill_time, argc, argv, properties, auto_restart);
773     /* end of the guide intended to the poor programmer wanting to go from MSG to Surf */
774
775     self->simcall.call = SIMCALL_PROCESS_CREATE;
776     memset(&self->simcall.result, 0, sizeof(self->simcall.result));
777     memset(self->simcall.args, 0, sizeof(self->simcall.args));
778     self->simcall.args[0].cc = (const char*) name;
779     self->simcall.args[1].fp = (FPtr) code;
780     self->simcall.args[2].dp = (void*) data;
781     self->simcall.args[3].cc = (const char*) hostname;
782     self->simcall.args[4].d = (double) kill_time;
783     self->simcall.args[5].i = (int) argc;
784     self->simcall.args[6].dp = (void*) argv;
785     self->simcall.args[7].dp = (void*) properties;
786     self->simcall.args[8].i = (int) auto_restart;
787     if (self != simix_global->maestro_process) {
788       XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
789                 SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
790       SIMIX_process_yield(self);
791     } else {
792       SIMIX_simcall_handle(&self->simcall, 0);
793     }    
794     return self->simcall.result.dp;
795   }
796   
797 inline static void simcall_BODY_process_kill(smx_process_t process) {
798     smx_process_t self = SIMIX_process_self();
799
800     /* Go to that function to follow the code flow through the simcall barrier */
801     if (0) simcall_HANDLER_process_kill(&self->simcall, process);
802     /* end of the guide intended to the poor programmer wanting to go from MSG to Surf */
803
804     self->simcall.call = SIMCALL_PROCESS_KILL;
805     memset(&self->simcall.result, 0, sizeof(self->simcall.result));
806     memset(self->simcall.args, 0, sizeof(self->simcall.args));
807     self->simcall.args[0].dp = (void*) process;
808     if (self != simix_global->maestro_process) {
809       XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
810                 SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
811       SIMIX_process_yield(self);
812     } else {
813       SIMIX_simcall_handle(&self->simcall, 0);
814     }    
815     
816   }
817   
818 inline static void simcall_BODY_process_killall(int reset_pid) {
819     smx_process_t self = SIMIX_process_self();
820
821     /* Go to that function to follow the code flow through the simcall barrier */
822     if (0) simcall_HANDLER_process_killall(&self->simcall, reset_pid);
823     /* end of the guide intended to the poor programmer wanting to go from MSG to Surf */
824
825     self->simcall.call = SIMCALL_PROCESS_KILLALL;
826     memset(&self->simcall.result, 0, sizeof(self->simcall.result));
827     memset(self->simcall.args, 0, sizeof(self->simcall.args));
828     self->simcall.args[0].i = (int) reset_pid;
829     if (self != simix_global->maestro_process) {
830       XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
831                 SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
832       SIMIX_process_yield(self);
833     } else {
834       SIMIX_simcall_handle(&self->simcall, 0);
835     }    
836     
837   }
838   
839 inline static void simcall_BODY_process_cleanup(smx_process_t process) {
840     smx_process_t self = SIMIX_process_self();
841
842     /* Go to that function to follow the code flow through the simcall barrier */
843     if (0) SIMIX_process_cleanup(process);
844     /* end of the guide intended to the poor programmer wanting to go from MSG to Surf */
845
846     self->simcall.call = SIMCALL_PROCESS_CLEANUP;
847     memset(&self->simcall.result, 0, sizeof(self->simcall.result));
848     memset(self->simcall.args, 0, sizeof(self->simcall.args));
849     self->simcall.args[0].dp = (void*) process;
850     if (self != simix_global->maestro_process) {
851       XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
852                 SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
853       SIMIX_process_yield(self);
854     } else {
855       SIMIX_simcall_handle(&self->simcall, 0);
856     }    
857     
858   }
859   
860 inline static void simcall_BODY_process_suspend(smx_process_t process) {
861     smx_process_t self = SIMIX_process_self();
862
863     /* Go to that function to follow the code flow through the simcall barrier */
864     if (0) simcall_HANDLER_process_suspend(&self->simcall, process);
865     /* end of the guide intended to the poor programmer wanting to go from MSG to Surf */
866
867     self->simcall.call = SIMCALL_PROCESS_SUSPEND;
868     memset(&self->simcall.result, 0, sizeof(self->simcall.result));
869     memset(self->simcall.args, 0, sizeof(self->simcall.args));
870     self->simcall.args[0].dp = (void*) process;
871     if (self != simix_global->maestro_process) {
872       XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
873                 SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
874       SIMIX_process_yield(self);
875     } else {
876       SIMIX_simcall_handle(&self->simcall, 0);
877     }    
878     
879   }
880   
881 inline static void simcall_BODY_process_resume(smx_process_t process) {
882     smx_process_t self = SIMIX_process_self();
883
884     /* Go to that function to follow the code flow through the simcall barrier */
885     if (0) simcall_HANDLER_process_resume(&self->simcall, process);
886     /* end of the guide intended to the poor programmer wanting to go from MSG to Surf */
887
888     self->simcall.call = SIMCALL_PROCESS_RESUME;
889     memset(&self->simcall.result, 0, sizeof(self->simcall.result));
890     memset(self->simcall.args, 0, sizeof(self->simcall.args));
891     self->simcall.args[0].dp = (void*) process;
892     if (self != simix_global->maestro_process) {
893       XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
894                 SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
895       SIMIX_process_yield(self);
896     } else {
897       SIMIX_simcall_handle(&self->simcall, 0);
898     }    
899     
900   }
901   
902 inline static int simcall_BODY_process_count() {
903     smx_process_t self = SIMIX_process_self();
904
905     /* Go to that function to follow the code flow through the simcall barrier */
906     if (0) SIMIX_process_count();
907     /* end of the guide intended to the poor programmer wanting to go from MSG to Surf */
908
909     self->simcall.call = SIMCALL_PROCESS_COUNT;
910     memset(&self->simcall.result, 0, sizeof(self->simcall.result));
911     memset(self->simcall.args, 0, sizeof(self->simcall.args));
912
913     if (self != simix_global->maestro_process) {
914       XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
915                 SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
916       SIMIX_process_yield(self);
917     } else {
918       SIMIX_simcall_handle(&self->simcall, 0);
919     }    
920     return self->simcall.result.i;
921   }
922   
923 inline static int simcall_BODY_process_get_PID(smx_process_t process) {
924     smx_process_t self = SIMIX_process_self();
925
926     /* Go to that function to follow the code flow through the simcall barrier */
927     if (0) SIMIX_process_get_PID(process);
928     /* end of the guide intended to the poor programmer wanting to go from MSG to Surf */
929
930     self->simcall.call = SIMCALL_PROCESS_GET_PID;
931     memset(&self->simcall.result, 0, sizeof(self->simcall.result));
932     memset(self->simcall.args, 0, sizeof(self->simcall.args));
933     self->simcall.args[0].dp = (void*) process;
934     if (self != simix_global->maestro_process) {
935       XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
936                 SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
937       SIMIX_process_yield(self);
938     } else {
939       SIMIX_simcall_handle(&self->simcall, 0);
940     }    
941     return self->simcall.result.i;
942   }
943   
944 inline static int simcall_BODY_process_get_PPID(smx_process_t process) {
945     smx_process_t self = SIMIX_process_self();
946
947     /* Go to that function to follow the code flow through the simcall barrier */
948     if (0) SIMIX_process_get_PPID(process);
949     /* end of the guide intended to the poor programmer wanting to go from MSG to Surf */
950
951     self->simcall.call = SIMCALL_PROCESS_GET_PPID;
952     memset(&self->simcall.result, 0, sizeof(self->simcall.result));
953     memset(self->simcall.args, 0, sizeof(self->simcall.args));
954     self->simcall.args[0].dp = (void*) process;
955     if (self != simix_global->maestro_process) {
956       XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
957                 SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
958       SIMIX_process_yield(self);
959     } else {
960       SIMIX_simcall_handle(&self->simcall, 0);
961     }    
962     return self->simcall.result.i;
963   }
964   
965 inline static void* simcall_BODY_process_get_data(smx_process_t process) {
966     smx_process_t self = SIMIX_process_self();
967
968     /* Go to that function to follow the code flow through the simcall barrier */
969     if (0) SIMIX_process_get_data(process);
970     /* end of the guide intended to the poor programmer wanting to go from MSG to Surf */
971
972     self->simcall.call = SIMCALL_PROCESS_GET_DATA;
973     memset(&self->simcall.result, 0, sizeof(self->simcall.result));
974     memset(self->simcall.args, 0, sizeof(self->simcall.args));
975     self->simcall.args[0].dp = (void*) process;
976     if (self != simix_global->maestro_process) {
977       XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
978                 SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
979       SIMIX_process_yield(self);
980     } else {
981       SIMIX_simcall_handle(&self->simcall, 0);
982     }    
983     return self->simcall.result.dp;
984   }
985   
986 inline static void simcall_BODY_process_set_data(smx_process_t process, void* data) {
987     smx_process_t self = SIMIX_process_self();
988
989     /* Go to that function to follow the code flow through the simcall barrier */
990     if (0) SIMIX_process_set_data(process, data);
991     /* end of the guide intended to the poor programmer wanting to go from MSG to Surf */
992
993     self->simcall.call = SIMCALL_PROCESS_SET_DATA;
994     memset(&self->simcall.result, 0, sizeof(self->simcall.result));
995     memset(self->simcall.args, 0, sizeof(self->simcall.args));
996     self->simcall.args[0].dp = (void*) process;
997     self->simcall.args[1].dp = (void*) data;
998     if (self != simix_global->maestro_process) {
999       XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
1000                 SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
1001       SIMIX_process_yield(self);
1002     } else {
1003       SIMIX_simcall_handle(&self->simcall, 0);
1004     }    
1005     
1006   }
1007   
1008 inline static void simcall_BODY_process_set_host(smx_process_t process, sg_host_t dest) {
1009     smx_process_t self = SIMIX_process_self();
1010
1011     /* Go to that function to follow the code flow through the simcall barrier */
1012     if (0) simcall_HANDLER_process_set_host(&self->simcall, process, dest);
1013     /* end of the guide intended to the poor programmer wanting to go from MSG to Surf */
1014
1015     self->simcall.call = SIMCALL_PROCESS_SET_HOST;
1016     memset(&self->simcall.result, 0, sizeof(self->simcall.result));
1017     memset(self->simcall.args, 0, sizeof(self->simcall.args));
1018     self->simcall.args[0].dp = (void*) process;
1019     self->simcall.args[1].dp = (void*) dest;
1020     if (self != simix_global->maestro_process) {
1021       XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
1022                 SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
1023       SIMIX_process_yield(self);
1024     } else {
1025       SIMIX_simcall_handle(&self->simcall, 0);
1026     }    
1027     
1028   }
1029   
1030 inline static sg_host_t simcall_BODY_process_get_host(smx_process_t process) {
1031     smx_process_t self = SIMIX_process_self();
1032
1033     /* Go to that function to follow the code flow through the simcall barrier */
1034     if (0) SIMIX_process_get_host(process);
1035     /* end of the guide intended to the poor programmer wanting to go from MSG to Surf */
1036
1037     self->simcall.call = SIMCALL_PROCESS_GET_HOST;
1038     memset(&self->simcall.result, 0, sizeof(self->simcall.result));
1039     memset(self->simcall.args, 0, sizeof(self->simcall.args));
1040     self->simcall.args[0].dp = (void*) process;
1041     if (self != simix_global->maestro_process) {
1042       XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
1043                 SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
1044       SIMIX_process_yield(self);
1045     } else {
1046       SIMIX_simcall_handle(&self->simcall, 0);
1047     }    
1048     return self->simcall.result.dp;
1049   }
1050   
1051 inline static const char* simcall_BODY_process_get_name(smx_process_t process) {
1052     smx_process_t self = SIMIX_process_self();
1053
1054     /* Go to that function to follow the code flow through the simcall barrier */
1055     if (0) SIMIX_process_get_name(process);
1056     /* end of the guide intended to the poor programmer wanting to go from MSG to Surf */
1057
1058     self->simcall.call = SIMCALL_PROCESS_GET_NAME;
1059     memset(&self->simcall.result, 0, sizeof(self->simcall.result));
1060     memset(self->simcall.args, 0, sizeof(self->simcall.args));
1061     self->simcall.args[0].dp = (void*) process;
1062     if (self != simix_global->maestro_process) {
1063       XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
1064                 SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
1065       SIMIX_process_yield(self);
1066     } else {
1067       SIMIX_simcall_handle(&self->simcall, 0);
1068     }    
1069     return self->simcall.result.cc;
1070   }
1071   
1072 inline static int simcall_BODY_process_is_suspended(smx_process_t process) {
1073     smx_process_t self = SIMIX_process_self();
1074
1075     /* Go to that function to follow the code flow through the simcall barrier */
1076     if (0) SIMIX_process_is_suspended(process);
1077     /* end of the guide intended to the poor programmer wanting to go from MSG to Surf */
1078
1079     self->simcall.call = SIMCALL_PROCESS_IS_SUSPENDED;
1080     memset(&self->simcall.result, 0, sizeof(self->simcall.result));
1081     memset(self->simcall.args, 0, sizeof(self->simcall.args));
1082     self->simcall.args[0].dp = (void*) process;
1083     if (self != simix_global->maestro_process) {
1084       XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
1085                 SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
1086       SIMIX_process_yield(self);
1087     } else {
1088       SIMIX_simcall_handle(&self->simcall, 0);
1089     }    
1090     return self->simcall.result.i;
1091   }
1092   
1093 inline static xbt_dict_t simcall_BODY_process_get_properties(smx_process_t process) {
1094     smx_process_t self = SIMIX_process_self();
1095
1096     /* Go to that function to follow the code flow through the simcall barrier */
1097     if (0) SIMIX_process_get_properties(process);
1098     /* end of the guide intended to the poor programmer wanting to go from MSG to Surf */
1099
1100     self->simcall.call = SIMCALL_PROCESS_GET_PROPERTIES;
1101     memset(&self->simcall.result, 0, sizeof(self->simcall.result));
1102     memset(self->simcall.args, 0, sizeof(self->simcall.args));
1103     self->simcall.args[0].dp = (void*) process;
1104     if (self != simix_global->maestro_process) {
1105       XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
1106                 SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
1107       SIMIX_process_yield(self);
1108     } else {
1109       SIMIX_simcall_handle(&self->simcall, 0);
1110     }    
1111     return self->simcall.result.dp;
1112   }
1113   
1114 inline static int simcall_BODY_process_join(smx_process_t process, double timeout) {
1115     smx_process_t self = SIMIX_process_self();
1116
1117     /* Go to that function to follow the code flow through the simcall barrier */
1118     if (0) simcall_HANDLER_process_join(&self->simcall, process, timeout);
1119     /* end of the guide intended to the poor programmer wanting to go from MSG to Surf */
1120
1121     self->simcall.call = SIMCALL_PROCESS_JOIN;
1122     memset(&self->simcall.result, 0, sizeof(self->simcall.result));
1123     memset(self->simcall.args, 0, sizeof(self->simcall.args));
1124     self->simcall.args[0].dp = (void*) process;
1125     self->simcall.args[1].d = (double) timeout;
1126     if (self != simix_global->maestro_process) {
1127       XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
1128                 SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
1129       SIMIX_process_yield(self);
1130     } else {
1131       SIMIX_simcall_handle(&self->simcall, 0);
1132     }    
1133     return self->simcall.result.i;
1134   }
1135   
1136 inline static int simcall_BODY_process_sleep(double duration) {
1137     smx_process_t self = SIMIX_process_self();
1138
1139     /* Go to that function to follow the code flow through the simcall barrier */
1140     if (0) simcall_HANDLER_process_sleep(&self->simcall, duration);
1141     /* end of the guide intended to the poor programmer wanting to go from MSG to Surf */
1142
1143     self->simcall.call = SIMCALL_PROCESS_SLEEP;
1144     memset(&self->simcall.result, 0, sizeof(self->simcall.result));
1145     memset(self->simcall.args, 0, sizeof(self->simcall.args));
1146     self->simcall.args[0].d = (double) duration;
1147     if (self != simix_global->maestro_process) {
1148       XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
1149                 SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
1150       SIMIX_process_yield(self);
1151     } else {
1152       SIMIX_simcall_handle(&self->simcall, 0);
1153     }    
1154     return self->simcall.result.i;
1155   }
1156   
1157 inline static smx_synchro_t simcall_BODY_process_execute(const char* name, double flops_amount, double priority, double bound, unsigned long affinity_mask) {
1158     smx_process_t self = SIMIX_process_self();
1159
1160     /* Go to that function to follow the code flow through the simcall barrier */
1161     if (0) simcall_HANDLER_process_execute(&self->simcall, name, flops_amount, priority, bound, affinity_mask);
1162     /* end of the guide intended to the poor programmer wanting to go from MSG to Surf */
1163
1164     self->simcall.call = SIMCALL_PROCESS_EXECUTE;
1165     memset(&self->simcall.result, 0, sizeof(self->simcall.result));
1166     memset(self->simcall.args, 0, sizeof(self->simcall.args));
1167     self->simcall.args[0].cc = (const char*) name;
1168     self->simcall.args[1].d = (double) flops_amount;
1169     self->simcall.args[2].d = (double) priority;
1170     self->simcall.args[3].d = (double) bound;
1171     self->simcall.args[4].ul = (unsigned long) affinity_mask;
1172     if (self != simix_global->maestro_process) {
1173       XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
1174                 SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
1175       SIMIX_process_yield(self);
1176     } else {
1177       SIMIX_simcall_handle(&self->simcall, 0);
1178     }    
1179     return self->simcall.result.dp;
1180   }
1181   
1182 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) {
1183     smx_process_t self = SIMIX_process_self();
1184
1185     /* Go to that function to follow the code flow through the simcall barrier */
1186     if (0) SIMIX_process_parallel_execute(name, host_nb, host_list, flops_amount, bytes_amount, amount, rate);
1187     /* end of the guide intended to the poor programmer wanting to go from MSG to Surf */
1188
1189     self->simcall.call = SIMCALL_PROCESS_PARALLEL_EXECUTE;
1190     memset(&self->simcall.result, 0, sizeof(self->simcall.result));
1191     memset(self->simcall.args, 0, sizeof(self->simcall.args));
1192     self->simcall.args[0].cc = (const char*) name;
1193     self->simcall.args[1].i = (int) host_nb;
1194     self->simcall.args[2].dp = (void*) host_list;
1195     self->simcall.args[3].dp = (void*) flops_amount;
1196     self->simcall.args[4].dp = (void*) bytes_amount;
1197     self->simcall.args[5].d = (double) amount;
1198     self->simcall.args[6].d = (double) rate;
1199     if (self != simix_global->maestro_process) {
1200       XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
1201                 SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
1202       SIMIX_process_yield(self);
1203     } else {
1204       SIMIX_simcall_handle(&self->simcall, 0);
1205     }    
1206     return self->simcall.result.dp;
1207   }
1208   
1209 inline static void simcall_BODY_process_execution_destroy(smx_synchro_t execution) {
1210     smx_process_t self = SIMIX_process_self();
1211
1212     /* Go to that function to follow the code flow through the simcall barrier */
1213     if (0) SIMIX_process_execution_destroy(execution);
1214     /* end of the guide intended to the poor programmer wanting to go from MSG to Surf */
1215
1216     self->simcall.call = SIMCALL_PROCESS_EXECUTION_DESTROY;
1217     memset(&self->simcall.result, 0, sizeof(self->simcall.result));
1218     memset(self->simcall.args, 0, sizeof(self->simcall.args));
1219     self->simcall.args[0].dp = (void*) execution;
1220     if (self != simix_global->maestro_process) {
1221       XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
1222                 SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
1223       SIMIX_process_yield(self);
1224     } else {
1225       SIMIX_simcall_handle(&self->simcall, 0);
1226     }    
1227     
1228   }
1229   
1230 inline static void simcall_BODY_process_execution_cancel(smx_synchro_t execution) {
1231     smx_process_t self = SIMIX_process_self();
1232
1233     /* Go to that function to follow the code flow through the simcall barrier */
1234     if (0) SIMIX_process_execution_cancel(execution);
1235     /* end of the guide intended to the poor programmer wanting to go from MSG to Surf */
1236
1237     self->simcall.call = SIMCALL_PROCESS_EXECUTION_CANCEL;
1238     memset(&self->simcall.result, 0, sizeof(self->simcall.result));
1239     memset(self->simcall.args, 0, sizeof(self->simcall.args));
1240     self->simcall.args[0].dp = (void*) execution;
1241     if (self != simix_global->maestro_process) {
1242       XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
1243                 SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
1244       SIMIX_process_yield(self);
1245     } else {
1246       SIMIX_simcall_handle(&self->simcall, 0);
1247     }    
1248     
1249   }
1250   
1251 inline static double simcall_BODY_process_execution_get_remains(smx_synchro_t execution) {
1252     smx_process_t self = SIMIX_process_self();
1253
1254     /* Go to that function to follow the code flow through the simcall barrier */
1255     if (0) SIMIX_process_execution_get_remains(execution);
1256     /* end of the guide intended to the poor programmer wanting to go from MSG to Surf */
1257
1258     self->simcall.call = SIMCALL_PROCESS_EXECUTION_GET_REMAINS;
1259     memset(&self->simcall.result, 0, sizeof(self->simcall.result));
1260     memset(self->simcall.args, 0, sizeof(self->simcall.args));
1261     self->simcall.args[0].dp = (void*) execution;
1262     if (self != simix_global->maestro_process) {
1263       XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
1264                 SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
1265       SIMIX_process_yield(self);
1266     } else {
1267       SIMIX_simcall_handle(&self->simcall, 0);
1268     }    
1269     return self->simcall.result.d;
1270   }
1271   
1272 inline static e_smx_state_t simcall_BODY_process_execution_get_state(smx_synchro_t execution) {
1273     smx_process_t self = SIMIX_process_self();
1274
1275     /* Go to that function to follow the code flow through the simcall barrier */
1276     if (0) SIMIX_process_execution_get_state(execution);
1277     /* end of the guide intended to the poor programmer wanting to go from MSG to Surf */
1278
1279     self->simcall.call = SIMCALL_PROCESS_EXECUTION_GET_STATE;
1280     memset(&self->simcall.result, 0, sizeof(self->simcall.result));
1281     memset(self->simcall.args, 0, sizeof(self->simcall.args));
1282     self->simcall.args[0].dp = (void*) execution;
1283     if (self != simix_global->maestro_process) {
1284       XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
1285                 SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
1286       SIMIX_process_yield(self);
1287     } else {
1288       SIMIX_simcall_handle(&self->simcall, 0);
1289     }    
1290     return self->simcall.result.i;
1291   }
1292   
1293 inline static void simcall_BODY_process_execution_set_priority(smx_synchro_t execution, double priority) {
1294     smx_process_t self = SIMIX_process_self();
1295
1296     /* Go to that function to follow the code flow through the simcall barrier */
1297     if (0) SIMIX_process_execution_set_priority(execution, priority);
1298     /* end of the guide intended to the poor programmer wanting to go from MSG to Surf */
1299
1300     self->simcall.call = SIMCALL_PROCESS_EXECUTION_SET_PRIORITY;
1301     memset(&self->simcall.result, 0, sizeof(self->simcall.result));
1302     memset(self->simcall.args, 0, sizeof(self->simcall.args));
1303     self->simcall.args[0].dp = (void*) execution;
1304     self->simcall.args[1].d = (double) priority;
1305     if (self != simix_global->maestro_process) {
1306       XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
1307                 SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
1308       SIMIX_process_yield(self);
1309     } else {
1310       SIMIX_simcall_handle(&self->simcall, 0);
1311     }    
1312     
1313   }
1314   
1315 inline static void simcall_BODY_process_execution_set_bound(smx_synchro_t execution, double bound) {
1316     smx_process_t self = SIMIX_process_self();
1317
1318     /* Go to that function to follow the code flow through the simcall barrier */
1319     if (0) SIMIX_process_execution_set_bound(execution, bound);
1320     /* end of the guide intended to the poor programmer wanting to go from MSG to Surf */
1321
1322     self->simcall.call = SIMCALL_PROCESS_EXECUTION_SET_BOUND;
1323     memset(&self->simcall.result, 0, sizeof(self->simcall.result));
1324     memset(self->simcall.args, 0, sizeof(self->simcall.args));
1325     self->simcall.args[0].dp = (void*) execution;
1326     self->simcall.args[1].d = (double) bound;
1327     if (self != simix_global->maestro_process) {
1328       XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
1329                 SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
1330       SIMIX_process_yield(self);
1331     } else {
1332       SIMIX_simcall_handle(&self->simcall, 0);
1333     }    
1334     
1335   }
1336   
1337 inline static void simcall_BODY_process_execution_set_affinity(smx_synchro_t execution, sg_host_t ws, unsigned long mask) {
1338     smx_process_t self = SIMIX_process_self();
1339
1340     /* Go to that function to follow the code flow through the simcall barrier */
1341     if (0) SIMIX_process_execution_set_affinity(execution, ws, mask);
1342     /* end of the guide intended to the poor programmer wanting to go from MSG to Surf */
1343
1344     self->simcall.call = SIMCALL_PROCESS_EXECUTION_SET_AFFINITY;
1345     memset(&self->simcall.result, 0, sizeof(self->simcall.result));
1346     memset(self->simcall.args, 0, sizeof(self->simcall.args));
1347     self->simcall.args[0].dp = (void*) execution;
1348     self->simcall.args[1].dp = (void*) ws;
1349     self->simcall.args[2].ul = (unsigned long) mask;
1350     if (self != simix_global->maestro_process) {
1351       XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
1352                 SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
1353       SIMIX_process_yield(self);
1354     } else {
1355       SIMIX_simcall_handle(&self->simcall, 0);
1356     }    
1357     
1358   }
1359   
1360 inline static int simcall_BODY_process_execution_wait(smx_synchro_t execution) {
1361     smx_process_t self = SIMIX_process_self();
1362
1363     /* Go to that function to follow the code flow through the simcall barrier */
1364     if (0) simcall_HANDLER_process_execution_wait(&self->simcall, execution);
1365     /* end of the guide intended to the poor programmer wanting to go from MSG to Surf */
1366
1367     self->simcall.call = SIMCALL_PROCESS_EXECUTION_WAIT;
1368     memset(&self->simcall.result, 0, sizeof(self->simcall.result));
1369     memset(self->simcall.args, 0, sizeof(self->simcall.args));
1370     self->simcall.args[0].dp = (void*) execution;
1371     if (self != simix_global->maestro_process) {
1372       XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
1373                 SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
1374       SIMIX_process_yield(self);
1375     } else {
1376       SIMIX_simcall_handle(&self->simcall, 0);
1377     }    
1378     return self->simcall.result.i;
1379   }
1380   
1381 inline static void simcall_BODY_process_on_exit(smx_process_t process, int_f_pvoid_pvoid_t fun, void* data) {
1382     smx_process_t self = SIMIX_process_self();
1383
1384     /* Go to that function to follow the code flow through the simcall barrier */
1385     if (0) SIMIX_process_on_exit(process, fun, data);
1386     /* end of the guide intended to the poor programmer wanting to go from MSG to Surf */
1387
1388     self->simcall.call = SIMCALL_PROCESS_ON_EXIT;
1389     memset(&self->simcall.result, 0, sizeof(self->simcall.result));
1390     memset(self->simcall.args, 0, sizeof(self->simcall.args));
1391     self->simcall.args[0].dp = (void*) process;
1392     self->simcall.args[1].fp = (FPtr) fun;
1393     self->simcall.args[2].dp = (void*) data;
1394     if (self != simix_global->maestro_process) {
1395       XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
1396                 SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
1397       SIMIX_process_yield(self);
1398     } else {
1399       SIMIX_simcall_handle(&self->simcall, 0);
1400     }    
1401     
1402   }
1403   
1404 inline static void simcall_BODY_process_auto_restart_set(smx_process_t process, int auto_restart) {
1405     smx_process_t self = SIMIX_process_self();
1406
1407     /* Go to that function to follow the code flow through the simcall barrier */
1408     if (0) SIMIX_process_auto_restart_set(process, auto_restart);
1409     /* end of the guide intended to the poor programmer wanting to go from MSG to Surf */
1410
1411     self->simcall.call = SIMCALL_PROCESS_AUTO_RESTART_SET;
1412     memset(&self->simcall.result, 0, sizeof(self->simcall.result));
1413     memset(self->simcall.args, 0, sizeof(self->simcall.args));
1414     self->simcall.args[0].dp = (void*) process;
1415     self->simcall.args[1].i = (int) auto_restart;
1416     if (self != simix_global->maestro_process) {
1417       XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
1418                 SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
1419       SIMIX_process_yield(self);
1420     } else {
1421       SIMIX_simcall_handle(&self->simcall, 0);
1422     }    
1423     
1424   }
1425   
1426 inline static smx_process_t simcall_BODY_process_restart(smx_process_t process) {
1427     smx_process_t self = SIMIX_process_self();
1428
1429     /* Go to that function to follow the code flow through the simcall barrier */
1430     if (0) simcall_HANDLER_process_restart(&self->simcall, process);
1431     /* end of the guide intended to the poor programmer wanting to go from MSG to Surf */
1432
1433     self->simcall.call = SIMCALL_PROCESS_RESTART;
1434     memset(&self->simcall.result, 0, sizeof(self->simcall.result));
1435     memset(self->simcall.args, 0, sizeof(self->simcall.args));
1436     self->simcall.args[0].dp = (void*) process;
1437     if (self != simix_global->maestro_process) {
1438       XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
1439                 SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
1440       SIMIX_process_yield(self);
1441     } else {
1442       SIMIX_simcall_handle(&self->simcall, 0);
1443     }    
1444     return self->simcall.result.dp;
1445   }
1446   
1447 inline static smx_rdv_t simcall_BODY_rdv_create(const char* name) {
1448     smx_process_t self = SIMIX_process_self();
1449
1450     /* Go to that function to follow the code flow through the simcall barrier */
1451     if (0) SIMIX_rdv_create(name);
1452     /* end of the guide intended to the poor programmer wanting to go from MSG to Surf */
1453
1454     self->simcall.call = SIMCALL_RDV_CREATE;
1455     memset(&self->simcall.result, 0, sizeof(self->simcall.result));
1456     memset(self->simcall.args, 0, sizeof(self->simcall.args));
1457     self->simcall.args[0].cc = (const char*) name;
1458     if (self != simix_global->maestro_process) {
1459       XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
1460                 SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
1461       SIMIX_process_yield(self);
1462     } else {
1463       SIMIX_simcall_handle(&self->simcall, 0);
1464     }    
1465     return self->simcall.result.dp;
1466   }
1467   
1468 inline static void simcall_BODY_rdv_destroy(smx_rdv_t rdv) {
1469     smx_process_t self = SIMIX_process_self();
1470
1471     /* Go to that function to follow the code flow through the simcall barrier */
1472     if (0) SIMIX_rdv_destroy(rdv);
1473     /* end of the guide intended to the poor programmer wanting to go from MSG to Surf */
1474
1475     self->simcall.call = SIMCALL_RDV_DESTROY;
1476     memset(&self->simcall.result, 0, sizeof(self->simcall.result));
1477     memset(self->simcall.args, 0, sizeof(self->simcall.args));
1478     self->simcall.args[0].dp = (void*) rdv;
1479     if (self != simix_global->maestro_process) {
1480       XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
1481                 SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
1482       SIMIX_process_yield(self);
1483     } else {
1484       SIMIX_simcall_handle(&self->simcall, 0);
1485     }    
1486     
1487   }
1488   
1489 inline static unsigned int simcall_BODY_rdv_comm_count_by_host(smx_rdv_t rdv, sg_host_t host) {
1490     smx_process_t self = SIMIX_process_self();
1491
1492     /* Go to that function to follow the code flow through the simcall barrier */
1493     if (0) SIMIX_rdv_comm_count_by_host(rdv, host);
1494     /* end of the guide intended to the poor programmer wanting to go from MSG to Surf */
1495
1496     self->simcall.call = SIMCALL_RDV_COMM_COUNT_BY_HOST;
1497     memset(&self->simcall.result, 0, sizeof(self->simcall.result));
1498     memset(self->simcall.args, 0, sizeof(self->simcall.args));
1499     self->simcall.args[0].dp = (void*) rdv;
1500     self->simcall.args[1].dp = (void*) host;
1501     if (self != simix_global->maestro_process) {
1502       XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
1503                 SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
1504       SIMIX_process_yield(self);
1505     } else {
1506       SIMIX_simcall_handle(&self->simcall, 0);
1507     }    
1508     return self->simcall.result.ui;
1509   }
1510   
1511 inline static smx_synchro_t simcall_BODY_rdv_get_head(smx_rdv_t rdv) {
1512     smx_process_t self = SIMIX_process_self();
1513
1514     /* Go to that function to follow the code flow through the simcall barrier */
1515     if (0) SIMIX_rdv_get_head(rdv);
1516     /* end of the guide intended to the poor programmer wanting to go from MSG to Surf */
1517
1518     self->simcall.call = SIMCALL_RDV_GET_HEAD;
1519     memset(&self->simcall.result, 0, sizeof(self->simcall.result));
1520     memset(self->simcall.args, 0, sizeof(self->simcall.args));
1521     self->simcall.args[0].dp = (void*) rdv;
1522     if (self != simix_global->maestro_process) {
1523       XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
1524                 SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
1525       SIMIX_process_yield(self);
1526     } else {
1527       SIMIX_simcall_handle(&self->simcall, 0);
1528     }    
1529     return self->simcall.result.dp;
1530   }
1531   
1532 inline static void simcall_BODY_rdv_set_receiver(smx_rdv_t rdv, smx_process_t receiver) {
1533     smx_process_t self = SIMIX_process_self();
1534
1535     /* Go to that function to follow the code flow through the simcall barrier */
1536     if (0) SIMIX_rdv_set_receiver(rdv, receiver);
1537     /* end of the guide intended to the poor programmer wanting to go from MSG to Surf */
1538
1539     self->simcall.call = SIMCALL_RDV_SET_RECEIVER;
1540     memset(&self->simcall.result, 0, sizeof(self->simcall.result));
1541     memset(self->simcall.args, 0, sizeof(self->simcall.args));
1542     self->simcall.args[0].dp = (void*) rdv;
1543     self->simcall.args[1].dp = (void*) receiver;
1544     if (self != simix_global->maestro_process) {
1545       XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
1546                 SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
1547       SIMIX_process_yield(self);
1548     } else {
1549       SIMIX_simcall_handle(&self->simcall, 0);
1550     }    
1551     
1552   }
1553   
1554 inline static smx_process_t simcall_BODY_rdv_get_receiver(smx_rdv_t rdv) {
1555     smx_process_t self = SIMIX_process_self();
1556
1557     /* Go to that function to follow the code flow through the simcall barrier */
1558     if (0) SIMIX_rdv_get_receiver(rdv);
1559     /* end of the guide intended to the poor programmer wanting to go from MSG to Surf */
1560
1561     self->simcall.call = SIMCALL_RDV_GET_RECEIVER;
1562     memset(&self->simcall.result, 0, sizeof(self->simcall.result));
1563     memset(self->simcall.args, 0, sizeof(self->simcall.args));
1564     self->simcall.args[0].dp = (void*) rdv;
1565     if (self != simix_global->maestro_process) {
1566       XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
1567                 SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
1568       SIMIX_process_yield(self);
1569     } else {
1570       SIMIX_simcall_handle(&self->simcall, 0);
1571     }    
1572     return self->simcall.result.dp;
1573   }
1574   
1575 inline static smx_synchro_t simcall_BODY_comm_iprobe(smx_rdv_t rdv, int type, int src, int tag, simix_match_func_t match_fun, void* data) {
1576     smx_process_t self = SIMIX_process_self();
1577
1578     /* Go to that function to follow the code flow through the simcall barrier */
1579     if (0) simcall_HANDLER_comm_iprobe(&self->simcall, rdv, type, src, tag, match_fun, data);
1580     /* end of the guide intended to the poor programmer wanting to go from MSG to Surf */
1581
1582     self->simcall.call = SIMCALL_COMM_IPROBE;
1583     memset(&self->simcall.result, 0, sizeof(self->simcall.result));
1584     memset(self->simcall.args, 0, sizeof(self->simcall.args));
1585     self->simcall.args[0].dp = (void*) rdv;
1586     self->simcall.args[1].i = (int) type;
1587     self->simcall.args[2].i = (int) src;
1588     self->simcall.args[3].i = (int) tag;
1589     self->simcall.args[4].fp = (FPtr) match_fun;
1590     self->simcall.args[5].dp = (void*) data;
1591     if (self != simix_global->maestro_process) {
1592       XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
1593                 SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
1594       SIMIX_process_yield(self);
1595     } else {
1596       SIMIX_simcall_handle(&self->simcall, 0);
1597     }    
1598     return self->simcall.result.dp;
1599   }
1600   
1601 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) {
1602     smx_process_t self = SIMIX_process_self();
1603
1604     /* Go to that function to follow the code flow through the simcall barrier */
1605     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);
1606     /* end of the guide intended to the poor programmer wanting to go from MSG to Surf */
1607
1608     self->simcall.call = SIMCALL_COMM_SEND;
1609     memset(&self->simcall.result, 0, sizeof(self->simcall.result));
1610     memset(self->simcall.args, 0, sizeof(self->simcall.args));
1611     self->simcall.args[0].dp = (void*) sender;
1612     self->simcall.args[1].dp = (void*) rdv;
1613     self->simcall.args[2].d = (double) task_size;
1614     self->simcall.args[3].d = (double) rate;
1615     self->simcall.args[4].dp = (void*) src_buff;
1616     self->simcall.args[5].sz = (size_t) src_buff_size;
1617     self->simcall.args[6].fp = (FPtr) match_fun;
1618     self->simcall.args[7].fp = (FPtr) copy_data_fun;
1619     self->simcall.args[8].dp = (void*) data;
1620     self->simcall.args[9].d = (double) timeout;
1621     if (self != simix_global->maestro_process) {
1622       XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
1623                 SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
1624       SIMIX_process_yield(self);
1625     } else {
1626       SIMIX_simcall_handle(&self->simcall, 0);
1627     }    
1628     
1629   }
1630   
1631 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) {
1632     smx_process_t self = SIMIX_process_self();
1633
1634     /* Go to that function to follow the code flow through the simcall barrier */
1635     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);
1636     /* end of the guide intended to the poor programmer wanting to go from MSG to Surf */
1637
1638     self->simcall.call = SIMCALL_COMM_ISEND;
1639     memset(&self->simcall.result, 0, sizeof(self->simcall.result));
1640     memset(self->simcall.args, 0, sizeof(self->simcall.args));
1641     self->simcall.args[0].dp = (void*) sender;
1642     self->simcall.args[1].dp = (void*) rdv;
1643     self->simcall.args[2].d = (double) task_size;
1644     self->simcall.args[3].d = (double) rate;
1645     self->simcall.args[4].dp = (void*) src_buff;
1646     self->simcall.args[5].sz = (size_t) src_buff_size;
1647     self->simcall.args[6].fp = (FPtr) match_fun;
1648     self->simcall.args[7].fp = (FPtr) clean_fun;
1649     self->simcall.args[8].fp = (FPtr) copy_data_fun;
1650     self->simcall.args[9].dp = (void*) data;
1651     self->simcall.args[10].i = (int) detached;
1652     if (self != simix_global->maestro_process) {
1653       XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
1654                 SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
1655       SIMIX_process_yield(self);
1656     } else {
1657       SIMIX_simcall_handle(&self->simcall, 0);
1658     }    
1659     return self->simcall.result.dp;
1660   }
1661   
1662 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) {
1663     smx_process_t self = SIMIX_process_self();
1664
1665     /* Go to that function to follow the code flow through the simcall barrier */
1666     if (0) simcall_HANDLER_comm_recv(&self->simcall, receiver, rdv, dst_buff, dst_buff_size, match_fun, copy_data_fun, data, timeout, rate);
1667     /* end of the guide intended to the poor programmer wanting to go from MSG to Surf */
1668
1669     self->simcall.call = SIMCALL_COMM_RECV;
1670     memset(&self->simcall.result, 0, sizeof(self->simcall.result));
1671     memset(self->simcall.args, 0, sizeof(self->simcall.args));
1672     self->simcall.args[0].dp = (void*) receiver;
1673     self->simcall.args[1].dp = (void*) rdv;
1674     self->simcall.args[2].dp = (void*) dst_buff;
1675     self->simcall.args[3].dp = (void*) dst_buff_size;
1676     self->simcall.args[4].fp = (FPtr) match_fun;
1677     self->simcall.args[5].fp = (FPtr) copy_data_fun;
1678     self->simcall.args[6].dp = (void*) data;
1679     self->simcall.args[7].d = (double) timeout;
1680     self->simcall.args[8].d = (double) rate;
1681     if (self != simix_global->maestro_process) {
1682       XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
1683                 SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
1684       SIMIX_process_yield(self);
1685     } else {
1686       SIMIX_simcall_handle(&self->simcall, 0);
1687     }    
1688     
1689   }
1690   
1691 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) {
1692     smx_process_t self = SIMIX_process_self();
1693
1694     /* Go to that function to follow the code flow through the simcall barrier */
1695     if (0) simcall_HANDLER_comm_irecv(&self->simcall, receiver, rdv, dst_buff, dst_buff_size, match_fun, copy_data_fun, data, rate);
1696     /* end of the guide intended to the poor programmer wanting to go from MSG to Surf */
1697
1698     self->simcall.call = SIMCALL_COMM_IRECV;
1699     memset(&self->simcall.result, 0, sizeof(self->simcall.result));
1700     memset(self->simcall.args, 0, sizeof(self->simcall.args));
1701     self->simcall.args[0].dp = (void*) receiver;
1702     self->simcall.args[1].dp = (void*) rdv;
1703     self->simcall.args[2].dp = (void*) dst_buff;
1704     self->simcall.args[3].dp = (void*) dst_buff_size;
1705     self->simcall.args[4].fp = (FPtr) match_fun;
1706     self->simcall.args[5].fp = (FPtr) copy_data_fun;
1707     self->simcall.args[6].dp = (void*) data;
1708     self->simcall.args[7].d = (double) rate;
1709     if (self != simix_global->maestro_process) {
1710       XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
1711                 SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
1712       SIMIX_process_yield(self);
1713     } else {
1714       SIMIX_simcall_handle(&self->simcall, 0);
1715     }    
1716     return self->simcall.result.dp;
1717   }
1718   
1719 inline static void simcall_BODY_comm_cancel(smx_synchro_t comm) {
1720     smx_process_t self = SIMIX_process_self();
1721
1722     /* Go to that function to follow the code flow through the simcall barrier */
1723     if (0) SIMIX_comm_cancel(comm);
1724     /* end of the guide intended to the poor programmer wanting to go from MSG to Surf */
1725
1726     self->simcall.call = SIMCALL_COMM_CANCEL;
1727     memset(&self->simcall.result, 0, sizeof(self->simcall.result));
1728     memset(self->simcall.args, 0, sizeof(self->simcall.args));
1729     self->simcall.args[0].dp = (void*) comm;
1730     if (self != simix_global->maestro_process) {
1731       XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
1732                 SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
1733       SIMIX_process_yield(self);
1734     } else {
1735       SIMIX_simcall_handle(&self->simcall, 0);
1736     }    
1737     
1738   }
1739   
1740 inline static int simcall_BODY_comm_waitany(xbt_dynar_t comms) {
1741     smx_process_t self = SIMIX_process_self();
1742
1743     /* Go to that function to follow the code flow through the simcall barrier */
1744     if (0) simcall_HANDLER_comm_waitany(&self->simcall, comms);
1745     /* end of the guide intended to the poor programmer wanting to go from MSG to Surf */
1746
1747     self->simcall.call = SIMCALL_COMM_WAITANY;
1748     memset(&self->simcall.result, 0, sizeof(self->simcall.result));
1749     memset(self->simcall.args, 0, sizeof(self->simcall.args));
1750     self->simcall.args[0].dp = (void*) comms;
1751     if (self != simix_global->maestro_process) {
1752       XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
1753                 SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
1754       SIMIX_process_yield(self);
1755     } else {
1756       SIMIX_simcall_handle(&self->simcall, 0);
1757     }    
1758     return self->simcall.result.i;
1759   }
1760   
1761 inline static void simcall_BODY_comm_wait(smx_synchro_t comm, double timeout) {
1762     smx_process_t self = SIMIX_process_self();
1763
1764     /* Go to that function to follow the code flow through the simcall barrier */
1765     if (0) simcall_HANDLER_comm_wait(&self->simcall, comm, timeout);
1766     /* end of the guide intended to the poor programmer wanting to go from MSG to Surf */
1767
1768     self->simcall.call = SIMCALL_COMM_WAIT;
1769     memset(&self->simcall.result, 0, sizeof(self->simcall.result));
1770     memset(self->simcall.args, 0, sizeof(self->simcall.args));
1771     self->simcall.args[0].dp = (void*) comm;
1772     self->simcall.args[1].d = (double) timeout;
1773     if (self != simix_global->maestro_process) {
1774       XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
1775                 SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
1776       SIMIX_process_yield(self);
1777     } else {
1778       SIMIX_simcall_handle(&self->simcall, 0);
1779     }    
1780     
1781   }
1782   
1783 inline static int simcall_BODY_comm_test(smx_synchro_t comm) {
1784     smx_process_t self = SIMIX_process_self();
1785
1786     /* Go to that function to follow the code flow through the simcall barrier */
1787     if (0) simcall_HANDLER_comm_test(&self->simcall, comm);
1788     /* end of the guide intended to the poor programmer wanting to go from MSG to Surf */
1789
1790     self->simcall.call = SIMCALL_COMM_TEST;
1791     memset(&self->simcall.result, 0, sizeof(self->simcall.result));
1792     memset(self->simcall.args, 0, sizeof(self->simcall.args));
1793     self->simcall.args[0].dp = (void*) comm;
1794     if (self != simix_global->maestro_process) {
1795       XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
1796                 SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
1797       SIMIX_process_yield(self);
1798     } else {
1799       SIMIX_simcall_handle(&self->simcall, 0);
1800     }    
1801     return self->simcall.result.i;
1802   }
1803   
1804 inline static int simcall_BODY_comm_testany(xbt_dynar_t comms) {
1805     smx_process_t self = SIMIX_process_self();
1806
1807     /* Go to that function to follow the code flow through the simcall barrier */
1808     if (0) simcall_HANDLER_comm_testany(&self->simcall, comms);
1809     /* end of the guide intended to the poor programmer wanting to go from MSG to Surf */
1810
1811     self->simcall.call = SIMCALL_COMM_TESTANY;
1812     memset(&self->simcall.result, 0, sizeof(self->simcall.result));
1813     memset(self->simcall.args, 0, sizeof(self->simcall.args));
1814     self->simcall.args[0].dp = (void*) comms;
1815     if (self != simix_global->maestro_process) {
1816       XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
1817                 SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
1818       SIMIX_process_yield(self);
1819     } else {
1820       SIMIX_simcall_handle(&self->simcall, 0);
1821     }    
1822     return self->simcall.result.i;
1823   }
1824   
1825 inline static double simcall_BODY_comm_get_remains(smx_synchro_t comm) {
1826     smx_process_t self = SIMIX_process_self();
1827
1828     /* Go to that function to follow the code flow through the simcall barrier */
1829     if (0) SIMIX_comm_get_remains(comm);
1830     /* end of the guide intended to the poor programmer wanting to go from MSG to Surf */
1831
1832     self->simcall.call = SIMCALL_COMM_GET_REMAINS;
1833     memset(&self->simcall.result, 0, sizeof(self->simcall.result));
1834     memset(self->simcall.args, 0, sizeof(self->simcall.args));
1835     self->simcall.args[0].dp = (void*) comm;
1836     if (self != simix_global->maestro_process) {
1837       XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
1838                 SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
1839       SIMIX_process_yield(self);
1840     } else {
1841       SIMIX_simcall_handle(&self->simcall, 0);
1842     }    
1843     return self->simcall.result.d;
1844   }
1845   
1846 inline static e_smx_state_t simcall_BODY_comm_get_state(smx_synchro_t comm) {
1847     smx_process_t self = SIMIX_process_self();
1848
1849     /* Go to that function to follow the code flow through the simcall barrier */
1850     if (0) SIMIX_comm_get_state(comm);
1851     /* end of the guide intended to the poor programmer wanting to go from MSG to Surf */
1852
1853     self->simcall.call = SIMCALL_COMM_GET_STATE;
1854     memset(&self->simcall.result, 0, sizeof(self->simcall.result));
1855     memset(self->simcall.args, 0, sizeof(self->simcall.args));
1856     self->simcall.args[0].dp = (void*) comm;
1857     if (self != simix_global->maestro_process) {
1858       XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
1859                 SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
1860       SIMIX_process_yield(self);
1861     } else {
1862       SIMIX_simcall_handle(&self->simcall, 0);
1863     }    
1864     return self->simcall.result.i;
1865   }
1866   
1867 inline static void* simcall_BODY_comm_get_src_data(smx_synchro_t comm) {
1868     smx_process_t self = SIMIX_process_self();
1869
1870     /* Go to that function to follow the code flow through the simcall barrier */
1871     if (0) SIMIX_comm_get_src_data(comm);
1872     /* end of the guide intended to the poor programmer wanting to go from MSG to Surf */
1873
1874     self->simcall.call = SIMCALL_COMM_GET_SRC_DATA;
1875     memset(&self->simcall.result, 0, sizeof(self->simcall.result));
1876     memset(self->simcall.args, 0, sizeof(self->simcall.args));
1877     self->simcall.args[0].dp = (void*) comm;
1878     if (self != simix_global->maestro_process) {
1879       XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
1880                 SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
1881       SIMIX_process_yield(self);
1882     } else {
1883       SIMIX_simcall_handle(&self->simcall, 0);
1884     }    
1885     return self->simcall.result.dp;
1886   }
1887   
1888 inline static void* simcall_BODY_comm_get_dst_data(smx_synchro_t comm) {
1889     smx_process_t self = SIMIX_process_self();
1890
1891     /* Go to that function to follow the code flow through the simcall barrier */
1892     if (0) SIMIX_comm_get_dst_data(comm);
1893     /* end of the guide intended to the poor programmer wanting to go from MSG to Surf */
1894
1895     self->simcall.call = SIMCALL_COMM_GET_DST_DATA;
1896     memset(&self->simcall.result, 0, sizeof(self->simcall.result));
1897     memset(self->simcall.args, 0, sizeof(self->simcall.args));
1898     self->simcall.args[0].dp = (void*) comm;
1899     if (self != simix_global->maestro_process) {
1900       XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
1901                 SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
1902       SIMIX_process_yield(self);
1903     } else {
1904       SIMIX_simcall_handle(&self->simcall, 0);
1905     }    
1906     return self->simcall.result.dp;
1907   }
1908   
1909 inline static smx_process_t simcall_BODY_comm_get_src_proc(smx_synchro_t comm) {
1910     smx_process_t self = SIMIX_process_self();
1911
1912     /* Go to that function to follow the code flow through the simcall barrier */
1913     if (0) SIMIX_comm_get_src_proc(comm);
1914     /* end of the guide intended to the poor programmer wanting to go from MSG to Surf */
1915
1916     self->simcall.call = SIMCALL_COMM_GET_SRC_PROC;
1917     memset(&self->simcall.result, 0, sizeof(self->simcall.result));
1918     memset(self->simcall.args, 0, sizeof(self->simcall.args));
1919     self->simcall.args[0].dp = (void*) comm;
1920     if (self != simix_global->maestro_process) {
1921       XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
1922                 SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
1923       SIMIX_process_yield(self);
1924     } else {
1925       SIMIX_simcall_handle(&self->simcall, 0);
1926     }    
1927     return self->simcall.result.dp;
1928   }
1929   
1930 inline static smx_process_t simcall_BODY_comm_get_dst_proc(smx_synchro_t comm) {
1931     smx_process_t self = SIMIX_process_self();
1932
1933     /* Go to that function to follow the code flow through the simcall barrier */
1934     if (0) SIMIX_comm_get_dst_proc(comm);
1935     /* end of the guide intended to the poor programmer wanting to go from MSG to Surf */
1936
1937     self->simcall.call = SIMCALL_COMM_GET_DST_PROC;
1938     memset(&self->simcall.result, 0, sizeof(self->simcall.result));
1939     memset(self->simcall.args, 0, sizeof(self->simcall.args));
1940     self->simcall.args[0].dp = (void*) comm;
1941     if (self != simix_global->maestro_process) {
1942       XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
1943                 SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
1944       SIMIX_process_yield(self);
1945     } else {
1946       SIMIX_simcall_handle(&self->simcall, 0);
1947     }    
1948     return self->simcall.result.dp;
1949   }
1950   
1951 inline static smx_mutex_t simcall_BODY_mutex_init() {
1952     smx_process_t self = SIMIX_process_self();
1953
1954     /* Go to that function to follow the code flow through the simcall barrier */
1955     if (0) simcall_HANDLER_mutex_init(&self->simcall);
1956     /* end of the guide intended to the poor programmer wanting to go from MSG to Surf */
1957
1958     self->simcall.call = SIMCALL_MUTEX_INIT;
1959     memset(&self->simcall.result, 0, sizeof(self->simcall.result));
1960     memset(self->simcall.args, 0, sizeof(self->simcall.args));
1961
1962     if (self != simix_global->maestro_process) {
1963       XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
1964                 SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
1965       SIMIX_process_yield(self);
1966     } else {
1967       SIMIX_simcall_handle(&self->simcall, 0);
1968     }    
1969     return self->simcall.result.dp;
1970   }
1971   
1972 inline static void simcall_BODY_mutex_destroy(smx_mutex_t mutex) {
1973     smx_process_t self = SIMIX_process_self();
1974
1975     /* Go to that function to follow the code flow through the simcall barrier */
1976     if (0) SIMIX_mutex_destroy(mutex);
1977     /* end of the guide intended to the poor programmer wanting to go from MSG to Surf */
1978
1979     self->simcall.call = SIMCALL_MUTEX_DESTROY;
1980     memset(&self->simcall.result, 0, sizeof(self->simcall.result));
1981     memset(self->simcall.args, 0, sizeof(self->simcall.args));
1982     self->simcall.args[0].dp = (void*) mutex;
1983     if (self != simix_global->maestro_process) {
1984       XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
1985                 SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
1986       SIMIX_process_yield(self);
1987     } else {
1988       SIMIX_simcall_handle(&self->simcall, 0);
1989     }    
1990     
1991   }
1992   
1993 inline static void simcall_BODY_mutex_lock(smx_mutex_t mutex) {
1994     smx_process_t self = SIMIX_process_self();
1995
1996     /* Go to that function to follow the code flow through the simcall barrier */
1997     if (0) simcall_HANDLER_mutex_lock(&self->simcall, mutex);
1998     /* end of the guide intended to the poor programmer wanting to go from MSG to Surf */
1999
2000     self->simcall.call = SIMCALL_MUTEX_LOCK;
2001     memset(&self->simcall.result, 0, sizeof(self->simcall.result));
2002     memset(self->simcall.args, 0, sizeof(self->simcall.args));
2003     self->simcall.args[0].dp = (void*) mutex;
2004     if (self != simix_global->maestro_process) {
2005       XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
2006                 SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
2007       SIMIX_process_yield(self);
2008     } else {
2009       SIMIX_simcall_handle(&self->simcall, 0);
2010     }    
2011     
2012   }
2013   
2014 inline static int simcall_BODY_mutex_trylock(smx_mutex_t mutex) {
2015     smx_process_t self = SIMIX_process_self();
2016
2017     /* Go to that function to follow the code flow through the simcall barrier */
2018     if (0) simcall_HANDLER_mutex_trylock(&self->simcall, mutex);
2019     /* end of the guide intended to the poor programmer wanting to go from MSG to Surf */
2020
2021     self->simcall.call = SIMCALL_MUTEX_TRYLOCK;
2022     memset(&self->simcall.result, 0, sizeof(self->simcall.result));
2023     memset(self->simcall.args, 0, sizeof(self->simcall.args));
2024     self->simcall.args[0].dp = (void*) mutex;
2025     if (self != simix_global->maestro_process) {
2026       XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
2027                 SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
2028       SIMIX_process_yield(self);
2029     } else {
2030       SIMIX_simcall_handle(&self->simcall, 0);
2031     }    
2032     return self->simcall.result.i;
2033   }
2034   
2035 inline static void simcall_BODY_mutex_unlock(smx_mutex_t mutex) {
2036     smx_process_t self = SIMIX_process_self();
2037
2038     /* Go to that function to follow the code flow through the simcall barrier */
2039     if (0) simcall_HANDLER_mutex_unlock(&self->simcall, mutex);
2040     /* end of the guide intended to the poor programmer wanting to go from MSG to Surf */
2041
2042     self->simcall.call = SIMCALL_MUTEX_UNLOCK;
2043     memset(&self->simcall.result, 0, sizeof(self->simcall.result));
2044     memset(self->simcall.args, 0, sizeof(self->simcall.args));
2045     self->simcall.args[0].dp = (void*) mutex;
2046     if (self != simix_global->maestro_process) {
2047       XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
2048                 SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
2049       SIMIX_process_yield(self);
2050     } else {
2051       SIMIX_simcall_handle(&self->simcall, 0);
2052     }    
2053     
2054   }
2055   
2056 inline static smx_cond_t simcall_BODY_cond_init() {
2057     smx_process_t self = SIMIX_process_self();
2058
2059     /* Go to that function to follow the code flow through the simcall barrier */
2060     if (0) SIMIX_cond_init();
2061     /* end of the guide intended to the poor programmer wanting to go from MSG to Surf */
2062
2063     self->simcall.call = SIMCALL_COND_INIT;
2064     memset(&self->simcall.result, 0, sizeof(self->simcall.result));
2065     memset(self->simcall.args, 0, sizeof(self->simcall.args));
2066
2067     if (self != simix_global->maestro_process) {
2068       XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
2069                 SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
2070       SIMIX_process_yield(self);
2071     } else {
2072       SIMIX_simcall_handle(&self->simcall, 0);
2073     }    
2074     return self->simcall.result.dp;
2075   }
2076   
2077 inline static void simcall_BODY_cond_destroy(smx_cond_t cond) {
2078     smx_process_t self = SIMIX_process_self();
2079
2080     /* Go to that function to follow the code flow through the simcall barrier */
2081     if (0) SIMIX_cond_destroy(cond);
2082     /* end of the guide intended to the poor programmer wanting to go from MSG to Surf */
2083
2084     self->simcall.call = SIMCALL_COND_DESTROY;
2085     memset(&self->simcall.result, 0, sizeof(self->simcall.result));
2086     memset(self->simcall.args, 0, sizeof(self->simcall.args));
2087     self->simcall.args[0].dp = (void*) cond;
2088     if (self != simix_global->maestro_process) {
2089       XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
2090                 SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
2091       SIMIX_process_yield(self);
2092     } else {
2093       SIMIX_simcall_handle(&self->simcall, 0);
2094     }    
2095     
2096   }
2097   
2098 inline static void simcall_BODY_cond_signal(smx_cond_t cond) {
2099     smx_process_t self = SIMIX_process_self();
2100
2101     /* Go to that function to follow the code flow through the simcall barrier */
2102     if (0) SIMIX_cond_signal(cond);
2103     /* end of the guide intended to the poor programmer wanting to go from MSG to Surf */
2104
2105     self->simcall.call = SIMCALL_COND_SIGNAL;
2106     memset(&self->simcall.result, 0, sizeof(self->simcall.result));
2107     memset(self->simcall.args, 0, sizeof(self->simcall.args));
2108     self->simcall.args[0].dp = (void*) cond;
2109     if (self != simix_global->maestro_process) {
2110       XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
2111                 SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
2112       SIMIX_process_yield(self);
2113     } else {
2114       SIMIX_simcall_handle(&self->simcall, 0);
2115     }    
2116     
2117   }
2118   
2119 inline static void simcall_BODY_cond_wait(smx_cond_t cond, smx_mutex_t mutex) {
2120     smx_process_t self = SIMIX_process_self();
2121
2122     /* Go to that function to follow the code flow through the simcall barrier */
2123     if (0) simcall_HANDLER_cond_wait(&self->simcall, cond, mutex);
2124     /* end of the guide intended to the poor programmer wanting to go from MSG to Surf */
2125
2126     self->simcall.call = SIMCALL_COND_WAIT;
2127     memset(&self->simcall.result, 0, sizeof(self->simcall.result));
2128     memset(self->simcall.args, 0, sizeof(self->simcall.args));
2129     self->simcall.args[0].dp = (void*) cond;
2130     self->simcall.args[1].dp = (void*) mutex;
2131     if (self != simix_global->maestro_process) {
2132       XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
2133                 SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
2134       SIMIX_process_yield(self);
2135     } else {
2136       SIMIX_simcall_handle(&self->simcall, 0);
2137     }    
2138     
2139   }
2140   
2141 inline static void simcall_BODY_cond_wait_timeout(smx_cond_t cond, smx_mutex_t mutex, double timeout) {
2142     smx_process_t self = SIMIX_process_self();
2143
2144     /* Go to that function to follow the code flow through the simcall barrier */
2145     if (0) simcall_HANDLER_cond_wait_timeout(&self->simcall, cond, mutex, timeout);
2146     /* end of the guide intended to the poor programmer wanting to go from MSG to Surf */
2147
2148     self->simcall.call = SIMCALL_COND_WAIT_TIMEOUT;
2149     memset(&self->simcall.result, 0, sizeof(self->simcall.result));
2150     memset(self->simcall.args, 0, sizeof(self->simcall.args));
2151     self->simcall.args[0].dp = (void*) cond;
2152     self->simcall.args[1].dp = (void*) mutex;
2153     self->simcall.args[2].d = (double) timeout;
2154     if (self != simix_global->maestro_process) {
2155       XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
2156                 SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
2157       SIMIX_process_yield(self);
2158     } else {
2159       SIMIX_simcall_handle(&self->simcall, 0);
2160     }    
2161     
2162   }
2163   
2164 inline static void simcall_BODY_cond_broadcast(smx_cond_t cond) {
2165     smx_process_t self = SIMIX_process_self();
2166
2167     /* Go to that function to follow the code flow through the simcall barrier */
2168     if (0) SIMIX_cond_broadcast(cond);
2169     /* end of the guide intended to the poor programmer wanting to go from MSG to Surf */
2170
2171     self->simcall.call = SIMCALL_COND_BROADCAST;
2172     memset(&self->simcall.result, 0, sizeof(self->simcall.result));
2173     memset(self->simcall.args, 0, sizeof(self->simcall.args));
2174     self->simcall.args[0].dp = (void*) cond;
2175     if (self != simix_global->maestro_process) {
2176       XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
2177                 SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
2178       SIMIX_process_yield(self);
2179     } else {
2180       SIMIX_simcall_handle(&self->simcall, 0);
2181     }    
2182     
2183   }
2184   
2185 inline static smx_sem_t simcall_BODY_sem_init(unsigned int capacity) {
2186     smx_process_t self = SIMIX_process_self();
2187
2188     /* Go to that function to follow the code flow through the simcall barrier */
2189     if (0) SIMIX_sem_init(capacity);
2190     /* end of the guide intended to the poor programmer wanting to go from MSG to Surf */
2191
2192     self->simcall.call = SIMCALL_SEM_INIT;
2193     memset(&self->simcall.result, 0, sizeof(self->simcall.result));
2194     memset(self->simcall.args, 0, sizeof(self->simcall.args));
2195     self->simcall.args[0].ui = (unsigned int) capacity;
2196     if (self != simix_global->maestro_process) {
2197       XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
2198                 SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
2199       SIMIX_process_yield(self);
2200     } else {
2201       SIMIX_simcall_handle(&self->simcall, 0);
2202     }    
2203     return self->simcall.result.dp;
2204   }
2205   
2206 inline static void simcall_BODY_sem_destroy(smx_sem_t sem) {
2207     smx_process_t self = SIMIX_process_self();
2208
2209     /* Go to that function to follow the code flow through the simcall barrier */
2210     if (0) SIMIX_sem_destroy(sem);
2211     /* end of the guide intended to the poor programmer wanting to go from MSG to Surf */
2212
2213     self->simcall.call = SIMCALL_SEM_DESTROY;
2214     memset(&self->simcall.result, 0, sizeof(self->simcall.result));
2215     memset(self->simcall.args, 0, sizeof(self->simcall.args));
2216     self->simcall.args[0].dp = (void*) sem;
2217     if (self != simix_global->maestro_process) {
2218       XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
2219                 SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
2220       SIMIX_process_yield(self);
2221     } else {
2222       SIMIX_simcall_handle(&self->simcall, 0);
2223     }    
2224     
2225   }
2226   
2227 inline static void simcall_BODY_sem_release(smx_sem_t sem) {
2228     smx_process_t self = SIMIX_process_self();
2229
2230     /* Go to that function to follow the code flow through the simcall barrier */
2231     if (0) simcall_HANDLER_sem_release(&self->simcall, sem);
2232     /* end of the guide intended to the poor programmer wanting to go from MSG to Surf */
2233
2234     self->simcall.call = SIMCALL_SEM_RELEASE;
2235     memset(&self->simcall.result, 0, sizeof(self->simcall.result));
2236     memset(self->simcall.args, 0, sizeof(self->simcall.args));
2237     self->simcall.args[0].dp = (void*) sem;
2238     if (self != simix_global->maestro_process) {
2239       XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
2240                 SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
2241       SIMIX_process_yield(self);
2242     } else {
2243       SIMIX_simcall_handle(&self->simcall, 0);
2244     }    
2245     
2246   }
2247   
2248 inline static int simcall_BODY_sem_would_block(smx_sem_t sem) {
2249     smx_process_t self = SIMIX_process_self();
2250
2251     /* Go to that function to follow the code flow through the simcall barrier */
2252     if (0) simcall_HANDLER_sem_would_block(&self->simcall, sem);
2253     /* end of the guide intended to the poor programmer wanting to go from MSG to Surf */
2254
2255     self->simcall.call = SIMCALL_SEM_WOULD_BLOCK;
2256     memset(&self->simcall.result, 0, sizeof(self->simcall.result));
2257     memset(self->simcall.args, 0, sizeof(self->simcall.args));
2258     self->simcall.args[0].dp = (void*) sem;
2259     if (self != simix_global->maestro_process) {
2260       XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
2261                 SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
2262       SIMIX_process_yield(self);
2263     } else {
2264       SIMIX_simcall_handle(&self->simcall, 0);
2265     }    
2266     return self->simcall.result.i;
2267   }
2268   
2269 inline static void simcall_BODY_sem_acquire(smx_sem_t sem) {
2270     smx_process_t self = SIMIX_process_self();
2271
2272     /* Go to that function to follow the code flow through the simcall barrier */
2273     if (0) simcall_HANDLER_sem_acquire(&self->simcall, sem);
2274     /* end of the guide intended to the poor programmer wanting to go from MSG to Surf */
2275
2276     self->simcall.call = SIMCALL_SEM_ACQUIRE;
2277     memset(&self->simcall.result, 0, sizeof(self->simcall.result));
2278     memset(self->simcall.args, 0, sizeof(self->simcall.args));
2279     self->simcall.args[0].dp = (void*) sem;
2280     if (self != simix_global->maestro_process) {
2281       XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
2282                 SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
2283       SIMIX_process_yield(self);
2284     } else {
2285       SIMIX_simcall_handle(&self->simcall, 0);
2286     }    
2287     
2288   }
2289   
2290 inline static void simcall_BODY_sem_acquire_timeout(smx_sem_t sem, double timeout) {
2291     smx_process_t self = SIMIX_process_self();
2292
2293     /* Go to that function to follow the code flow through the simcall barrier */
2294     if (0) simcall_HANDLER_sem_acquire_timeout(&self->simcall, sem, timeout);
2295     /* end of the guide intended to the poor programmer wanting to go from MSG to Surf */
2296
2297     self->simcall.call = SIMCALL_SEM_ACQUIRE_TIMEOUT;
2298     memset(&self->simcall.result, 0, sizeof(self->simcall.result));
2299     memset(self->simcall.args, 0, sizeof(self->simcall.args));
2300     self->simcall.args[0].dp = (void*) sem;
2301     self->simcall.args[1].d = (double) timeout;
2302     if (self != simix_global->maestro_process) {
2303       XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
2304                 SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
2305       SIMIX_process_yield(self);
2306     } else {
2307       SIMIX_simcall_handle(&self->simcall, 0);
2308     }    
2309     
2310   }
2311   
2312 inline static int simcall_BODY_sem_get_capacity(smx_sem_t sem) {
2313     smx_process_t self = SIMIX_process_self();
2314
2315     /* Go to that function to follow the code flow through the simcall barrier */
2316     if (0) simcall_HANDLER_sem_get_capacity(&self->simcall, sem);
2317     /* end of the guide intended to the poor programmer wanting to go from MSG to Surf */
2318
2319     self->simcall.call = SIMCALL_SEM_GET_CAPACITY;
2320     memset(&self->simcall.result, 0, sizeof(self->simcall.result));
2321     memset(self->simcall.args, 0, sizeof(self->simcall.args));
2322     self->simcall.args[0].dp = (void*) sem;
2323     if (self != simix_global->maestro_process) {
2324       XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
2325                 SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
2326       SIMIX_process_yield(self);
2327     } else {
2328       SIMIX_simcall_handle(&self->simcall, 0);
2329     }    
2330     return self->simcall.result.i;
2331   }
2332   
2333 inline static sg_size_t simcall_BODY_file_read(smx_file_t fd, sg_size_t size, sg_host_t host) {
2334     smx_process_t self = SIMIX_process_self();
2335
2336     /* Go to that function to follow the code flow through the simcall barrier */
2337     if (0) simcall_HANDLER_file_read(&self->simcall, fd, size, host);
2338     /* end of the guide intended to the poor programmer wanting to go from MSG to Surf */
2339
2340     self->simcall.call = SIMCALL_FILE_READ;
2341     memset(&self->simcall.result, 0, sizeof(self->simcall.result));
2342     memset(self->simcall.args, 0, sizeof(self->simcall.args));
2343     self->simcall.args[0].dp = (void*) fd;
2344     self->simcall.args[1].sgsz = (sg_size_t) size;
2345     self->simcall.args[2].dp = (void*) host;
2346     if (self != simix_global->maestro_process) {
2347       XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
2348                 SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
2349       SIMIX_process_yield(self);
2350     } else {
2351       SIMIX_simcall_handle(&self->simcall, 0);
2352     }    
2353     return self->simcall.result.sgsz;
2354   }
2355   
2356 inline static sg_size_t simcall_BODY_file_write(smx_file_t fd, sg_size_t size, sg_host_t host) {
2357     smx_process_t self = SIMIX_process_self();
2358
2359     /* Go to that function to follow the code flow through the simcall barrier */
2360     if (0) simcall_HANDLER_file_write(&self->simcall, fd, size, host);
2361     /* end of the guide intended to the poor programmer wanting to go from MSG to Surf */
2362
2363     self->simcall.call = SIMCALL_FILE_WRITE;
2364     memset(&self->simcall.result, 0, sizeof(self->simcall.result));
2365     memset(self->simcall.args, 0, sizeof(self->simcall.args));
2366     self->simcall.args[0].dp = (void*) fd;
2367     self->simcall.args[1].sgsz = (sg_size_t) size;
2368     self->simcall.args[2].dp = (void*) host;
2369     if (self != simix_global->maestro_process) {
2370       XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
2371                 SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
2372       SIMIX_process_yield(self);
2373     } else {
2374       SIMIX_simcall_handle(&self->simcall, 0);
2375     }    
2376     return self->simcall.result.sgsz;
2377   }
2378   
2379 inline static smx_file_t simcall_BODY_file_open(const char* fullpath, sg_host_t host) {
2380     smx_process_t self = SIMIX_process_self();
2381
2382     /* Go to that function to follow the code flow through the simcall barrier */
2383     if (0) simcall_HANDLER_file_open(&self->simcall, fullpath, host);
2384     /* end of the guide intended to the poor programmer wanting to go from MSG to Surf */
2385
2386     self->simcall.call = SIMCALL_FILE_OPEN;
2387     memset(&self->simcall.result, 0, sizeof(self->simcall.result));
2388     memset(self->simcall.args, 0, sizeof(self->simcall.args));
2389     self->simcall.args[0].cc = (const char*) fullpath;
2390     self->simcall.args[1].dp = (void*) host;
2391     if (self != simix_global->maestro_process) {
2392       XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
2393                 SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
2394       SIMIX_process_yield(self);
2395     } else {
2396       SIMIX_simcall_handle(&self->simcall, 0);
2397     }    
2398     return self->simcall.result.dp;
2399   }
2400   
2401 inline static int simcall_BODY_file_close(smx_file_t fd, sg_host_t host) {
2402     smx_process_t self = SIMIX_process_self();
2403
2404     /* Go to that function to follow the code flow through the simcall barrier */
2405     if (0) simcall_HANDLER_file_close(&self->simcall, fd, host);
2406     /* end of the guide intended to the poor programmer wanting to go from MSG to Surf */
2407
2408     self->simcall.call = SIMCALL_FILE_CLOSE;
2409     memset(&self->simcall.result, 0, sizeof(self->simcall.result));
2410     memset(self->simcall.args, 0, sizeof(self->simcall.args));
2411     self->simcall.args[0].dp = (void*) fd;
2412     self->simcall.args[1].dp = (void*) host;
2413     if (self != simix_global->maestro_process) {
2414       XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
2415                 SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
2416       SIMIX_process_yield(self);
2417     } else {
2418       SIMIX_simcall_handle(&self->simcall, 0);
2419     }    
2420     return self->simcall.result.i;
2421   }
2422   
2423 inline static int simcall_BODY_file_unlink(smx_file_t fd, sg_host_t host) {
2424     smx_process_t self = SIMIX_process_self();
2425
2426     /* Go to that function to follow the code flow through the simcall barrier */
2427     if (0) SIMIX_file_unlink(fd, host);
2428     /* end of the guide intended to the poor programmer wanting to go from MSG to Surf */
2429
2430     self->simcall.call = SIMCALL_FILE_UNLINK;
2431     memset(&self->simcall.result, 0, sizeof(self->simcall.result));
2432     memset(self->simcall.args, 0, sizeof(self->simcall.args));
2433     self->simcall.args[0].dp = (void*) fd;
2434     self->simcall.args[1].dp = (void*) host;
2435     if (self != simix_global->maestro_process) {
2436       XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
2437                 SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
2438       SIMIX_process_yield(self);
2439     } else {
2440       SIMIX_simcall_handle(&self->simcall, 0);
2441     }    
2442     return self->simcall.result.i;
2443   }
2444   
2445 inline static sg_size_t simcall_BODY_file_get_size(smx_file_t fd) {
2446     smx_process_t self = SIMIX_process_self();
2447
2448     /* Go to that function to follow the code flow through the simcall barrier */
2449     if (0) simcall_HANDLER_file_get_size(&self->simcall, fd);
2450     /* end of the guide intended to the poor programmer wanting to go from MSG to Surf */
2451
2452     self->simcall.call = SIMCALL_FILE_GET_SIZE;
2453     memset(&self->simcall.result, 0, sizeof(self->simcall.result));
2454     memset(self->simcall.args, 0, sizeof(self->simcall.args));
2455     self->simcall.args[0].dp = (void*) fd;
2456     if (self != simix_global->maestro_process) {
2457       XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
2458                 SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
2459       SIMIX_process_yield(self);
2460     } else {
2461       SIMIX_simcall_handle(&self->simcall, 0);
2462     }    
2463     return self->simcall.result.sgsz;
2464   }
2465   
2466 inline static sg_size_t simcall_BODY_file_tell(smx_file_t fd) {
2467     smx_process_t self = SIMIX_process_self();
2468
2469     /* Go to that function to follow the code flow through the simcall barrier */
2470     if (0) simcall_HANDLER_file_tell(&self->simcall, fd);
2471     /* end of the guide intended to the poor programmer wanting to go from MSG to Surf */
2472
2473     self->simcall.call = SIMCALL_FILE_TELL;
2474     memset(&self->simcall.result, 0, sizeof(self->simcall.result));
2475     memset(self->simcall.args, 0, sizeof(self->simcall.args));
2476     self->simcall.args[0].dp = (void*) fd;
2477     if (self != simix_global->maestro_process) {
2478       XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
2479                 SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
2480       SIMIX_process_yield(self);
2481     } else {
2482       SIMIX_simcall_handle(&self->simcall, 0);
2483     }    
2484     return self->simcall.result.sgsz;
2485   }
2486   
2487 inline static int simcall_BODY_file_seek(smx_file_t fd, sg_offset_t offset, int origin) {
2488     smx_process_t self = SIMIX_process_self();
2489
2490     /* Go to that function to follow the code flow through the simcall barrier */
2491     if (0) simcall_HANDLER_file_seek(&self->simcall, fd, offset, origin);
2492     /* end of the guide intended to the poor programmer wanting to go from MSG to Surf */
2493
2494     self->simcall.call = SIMCALL_FILE_SEEK;
2495     memset(&self->simcall.result, 0, sizeof(self->simcall.result));
2496     memset(self->simcall.args, 0, sizeof(self->simcall.args));
2497     self->simcall.args[0].dp = (void*) fd;
2498     self->simcall.args[1].sgoff = (sg_offset_t) offset;
2499     self->simcall.args[2].i = (int) origin;
2500     if (self != simix_global->maestro_process) {
2501       XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
2502                 SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
2503       SIMIX_process_yield(self);
2504     } else {
2505       SIMIX_simcall_handle(&self->simcall, 0);
2506     }    
2507     return self->simcall.result.i;
2508   }
2509   
2510 inline static xbt_dynar_t simcall_BODY_file_get_info(smx_file_t fd) {
2511     smx_process_t self = SIMIX_process_self();
2512
2513     /* Go to that function to follow the code flow through the simcall barrier */
2514     if (0) simcall_HANDLER_file_get_info(&self->simcall, fd);
2515     /* end of the guide intended to the poor programmer wanting to go from MSG to Surf */
2516
2517     self->simcall.call = SIMCALL_FILE_GET_INFO;
2518     memset(&self->simcall.result, 0, sizeof(self->simcall.result));
2519     memset(self->simcall.args, 0, sizeof(self->simcall.args));
2520     self->simcall.args[0].dp = (void*) fd;
2521     if (self != simix_global->maestro_process) {
2522       XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
2523                 SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
2524       SIMIX_process_yield(self);
2525     } else {
2526       SIMIX_simcall_handle(&self->simcall, 0);
2527     }    
2528     return self->simcall.result.dp;
2529   }
2530   
2531 inline static int simcall_BODY_file_move(smx_file_t fd, const char* fullpath) {
2532     smx_process_t self = SIMIX_process_self();
2533
2534     /* Go to that function to follow the code flow through the simcall barrier */
2535     if (0) simcall_HANDLER_file_move(&self->simcall, fd, fullpath);
2536     /* end of the guide intended to the poor programmer wanting to go from MSG to Surf */
2537
2538     self->simcall.call = SIMCALL_FILE_MOVE;
2539     memset(&self->simcall.result, 0, sizeof(self->simcall.result));
2540     memset(self->simcall.args, 0, sizeof(self->simcall.args));
2541     self->simcall.args[0].dp = (void*) fd;
2542     self->simcall.args[1].cc = (const char*) fullpath;
2543     if (self != simix_global->maestro_process) {
2544       XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
2545                 SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
2546       SIMIX_process_yield(self);
2547     } else {
2548       SIMIX_simcall_handle(&self->simcall, 0);
2549     }    
2550     return self->simcall.result.i;
2551   }
2552   
2553 inline static sg_size_t simcall_BODY_storage_get_free_size(smx_storage_t storage) {
2554     smx_process_t self = SIMIX_process_self();
2555
2556     /* Go to that function to follow the code flow through the simcall barrier */
2557     if (0) simcall_HANDLER_storage_get_free_size(&self->simcall, storage);
2558     /* end of the guide intended to the poor programmer wanting to go from MSG to Surf */
2559
2560     self->simcall.call = SIMCALL_STORAGE_GET_FREE_SIZE;
2561     memset(&self->simcall.result, 0, sizeof(self->simcall.result));
2562     memset(self->simcall.args, 0, sizeof(self->simcall.args));
2563     self->simcall.args[0].dp = (void*) storage;
2564     if (self != simix_global->maestro_process) {
2565       XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
2566                 SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
2567       SIMIX_process_yield(self);
2568     } else {
2569       SIMIX_simcall_handle(&self->simcall, 0);
2570     }    
2571     return self->simcall.result.sgsz;
2572   }
2573   
2574 inline static sg_size_t simcall_BODY_storage_get_used_size(smx_storage_t name) {
2575     smx_process_t self = SIMIX_process_self();
2576
2577     /* Go to that function to follow the code flow through the simcall barrier */
2578     if (0) simcall_HANDLER_storage_get_used_size(&self->simcall, name);
2579     /* end of the guide intended to the poor programmer wanting to go from MSG to Surf */
2580
2581     self->simcall.call = SIMCALL_STORAGE_GET_USED_SIZE;
2582     memset(&self->simcall.result, 0, sizeof(self->simcall.result));
2583     memset(self->simcall.args, 0, sizeof(self->simcall.args));
2584     self->simcall.args[0].dp = (void*) name;
2585     if (self != simix_global->maestro_process) {
2586       XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
2587                 SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
2588       SIMIX_process_yield(self);
2589     } else {
2590       SIMIX_simcall_handle(&self->simcall, 0);
2591     }    
2592     return self->simcall.result.sgsz;
2593   }
2594   
2595 inline static xbt_dict_t simcall_BODY_storage_get_properties(smx_storage_t storage) {
2596     smx_process_t self = SIMIX_process_self();
2597
2598     /* Go to that function to follow the code flow through the simcall barrier */
2599     if (0) SIMIX_storage_get_properties(storage);
2600     /* end of the guide intended to the poor programmer wanting to go from MSG to Surf */
2601
2602     self->simcall.call = SIMCALL_STORAGE_GET_PROPERTIES;
2603     memset(&self->simcall.result, 0, sizeof(self->simcall.result));
2604     memset(self->simcall.args, 0, sizeof(self->simcall.args));
2605     self->simcall.args[0].dp = (void*) storage;
2606     if (self != simix_global->maestro_process) {
2607       XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
2608                 SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
2609       SIMIX_process_yield(self);
2610     } else {
2611       SIMIX_simcall_handle(&self->simcall, 0);
2612     }    
2613     return self->simcall.result.dp;
2614   }
2615   
2616 inline static xbt_dict_t simcall_BODY_storage_get_content(smx_storage_t storage) {
2617     smx_process_t self = SIMIX_process_self();
2618
2619     /* Go to that function to follow the code flow through the simcall barrier */
2620     if (0) SIMIX_storage_get_content(storage);
2621     /* end of the guide intended to the poor programmer wanting to go from MSG to Surf */
2622
2623     self->simcall.call = SIMCALL_STORAGE_GET_CONTENT;
2624     memset(&self->simcall.result, 0, sizeof(self->simcall.result));
2625     memset(self->simcall.args, 0, sizeof(self->simcall.args));
2626     self->simcall.args[0].dp = (void*) storage;
2627     if (self != simix_global->maestro_process) {
2628       XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
2629                 SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
2630       SIMIX_process_yield(self);
2631     } else {
2632       SIMIX_simcall_handle(&self->simcall, 0);
2633     }    
2634     return self->simcall.result.dp;
2635   }
2636   
2637 inline static xbt_dict_t simcall_BODY_asr_get_properties(const char* name) {
2638     smx_process_t self = SIMIX_process_self();
2639
2640     /* Go to that function to follow the code flow through the simcall barrier */
2641     if (0) simcall_HANDLER_asr_get_properties(&self->simcall, name);
2642     /* end of the guide intended to the poor programmer wanting to go from MSG to Surf */
2643
2644     self->simcall.call = SIMCALL_ASR_GET_PROPERTIES;
2645     memset(&self->simcall.result, 0, sizeof(self->simcall.result));
2646     memset(self->simcall.args, 0, sizeof(self->simcall.args));
2647     self->simcall.args[0].cc = (const char*) name;
2648     if (self != simix_global->maestro_process) {
2649       XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
2650                 SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
2651       SIMIX_process_yield(self);
2652     } else {
2653       SIMIX_simcall_handle(&self->simcall, 0);
2654     }    
2655     return self->simcall.result.dp;
2656   }
2657   
2658 inline static int simcall_BODY_mc_random(int min, int max) {
2659     smx_process_t self = SIMIX_process_self();
2660
2661     /* Go to that function to follow the code flow through the simcall barrier */
2662     if (0) simcall_HANDLER_mc_random(&self->simcall, min, max);
2663     /* end of the guide intended to the poor programmer wanting to go from MSG to Surf */
2664
2665     self->simcall.call = SIMCALL_MC_RANDOM;
2666     memset(&self->simcall.result, 0, sizeof(self->simcall.result));
2667     memset(self->simcall.args, 0, sizeof(self->simcall.args));
2668     self->simcall.args[0].i = (int) min;
2669     self->simcall.args[1].i = (int) max;
2670     if (self != simix_global->maestro_process) {
2671       XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
2672                 SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
2673       SIMIX_process_yield(self);
2674     } else {
2675       SIMIX_simcall_handle(&self->simcall, 0);
2676     }    
2677     return self->simcall.result.i;
2678   }
2679   
2680 inline static void simcall_BODY_set_category(smx_synchro_t synchro, const char* category) {
2681     smx_process_t self = SIMIX_process_self();
2682
2683     /* Go to that function to follow the code flow through the simcall barrier */
2684     if (0) SIMIX_set_category(synchro, category);
2685     /* end of the guide intended to the poor programmer wanting to go from MSG to Surf */
2686
2687     self->simcall.call = SIMCALL_SET_CATEGORY;
2688     memset(&self->simcall.result, 0, sizeof(self->simcall.result));
2689     memset(self->simcall.args, 0, sizeof(self->simcall.args));
2690     self->simcall.args[0].dp = (void*) synchro;
2691     self->simcall.args[1].cc = (const char*) category;
2692     if (self != simix_global->maestro_process) {
2693       XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
2694                 SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
2695       SIMIX_process_yield(self);
2696     } else {
2697       SIMIX_simcall_handle(&self->simcall, 0);
2698     }    
2699     
2700   }
2701 #ifdef HAVE_LATENCY_BOUND_TRACKING
2702   
2703 inline static int simcall_BODY_comm_is_latency_bounded(smx_synchro_t comm) {
2704     smx_process_t self = SIMIX_process_self();
2705
2706     /* Go to that function to follow the code flow through the simcall barrier */
2707     if (0) SIMIX_comm_is_latency_bounded(comm);
2708     /* end of the guide intended to the poor programmer wanting to go from MSG to Surf */
2709
2710     self->simcall.call = SIMCALL_COMM_IS_LATENCY_BOUNDED;
2711     memset(&self->simcall.result, 0, sizeof(self->simcall.result));
2712     memset(self->simcall.args, 0, sizeof(self->simcall.args));
2713     self->simcall.args[0].dp = (void*) comm;
2714     if (self != simix_global->maestro_process) {
2715       XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
2716                 SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
2717       SIMIX_process_yield(self);
2718     } else {
2719       SIMIX_simcall_handle(&self->simcall, 0);
2720     }    
2721     return self->simcall.result.i;
2722   }
2723 #endif
2724
2725 #ifdef HAVE_MC
2726   
2727 inline static mc_snapshot_t simcall_BODY_mc_snapshot() {
2728     smx_process_t self = SIMIX_process_self();
2729
2730     /* Go to that function to follow the code flow through the simcall barrier */
2731     if (0) simcall_HANDLER_mc_snapshot(&self->simcall);
2732     /* end of the guide intended to the poor programmer wanting to go from MSG to Surf */
2733
2734     self->simcall.call = SIMCALL_MC_SNAPSHOT;
2735     memset(&self->simcall.result, 0, sizeof(self->simcall.result));
2736     memset(self->simcall.args, 0, sizeof(self->simcall.args));
2737
2738     if (self != simix_global->maestro_process) {
2739       XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
2740                 SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
2741       SIMIX_process_yield(self);
2742     } else {
2743       SIMIX_simcall_handle(&self->simcall, 0);
2744     }    
2745     return self->simcall.result.dp;
2746   }
2747   
2748 inline static int simcall_BODY_mc_compare_snapshots(mc_snapshot_t s1, mc_snapshot_t s2) {
2749     smx_process_t self = SIMIX_process_self();
2750
2751     /* Go to that function to follow the code flow through the simcall barrier */
2752     if (0) simcall_HANDLER_mc_compare_snapshots(&self->simcall, s1, s2);
2753     /* end of the guide intended to the poor programmer wanting to go from MSG to Surf */
2754
2755     self->simcall.call = SIMCALL_MC_COMPARE_SNAPSHOTS;
2756     memset(&self->simcall.result, 0, sizeof(self->simcall.result));
2757     memset(self->simcall.args, 0, sizeof(self->simcall.args));
2758     self->simcall.args[0].dp = (void*) s1;
2759     self->simcall.args[1].dp = (void*) s2;
2760     if (self != simix_global->maestro_process) {
2761       XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
2762                 SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
2763       SIMIX_process_yield(self);
2764     } else {
2765       SIMIX_simcall_handle(&self->simcall, 0);
2766     }    
2767     return self->simcall.result.i;
2768   }
2769 #endif