Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Compilation is at least ok - Ad(rien)
[simgrid.git] / src / simix / popping_generated.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 #ifdef HAVE_MC
18 #endif
19
20 XBT_LOG_EXTERNAL_DEFAULT_CATEGORY(simix_popping);
21
22 /** @brief Simcalls' names (generated from src/simix/simcalls.in) */
23 const char* simcall_names[] = {
24   [SIMCALL_HOST_GET_BY_NAME] = "SIMCALL_HOST_GET_BY_NAME",
25   [SIMCALL_HOST_GET_NAME] = "SIMCALL_HOST_GET_NAME",
26   [SIMCALL_HOST_ON] = "SIMCALL_HOST_ON",
27   [SIMCALL_HOST_OFF] = "SIMCALL_HOST_OFF",
28   [SIMCALL_HOST_GET_PROPERTIES] = "SIMCALL_HOST_GET_PROPERTIES",
29   [SIMCALL_HOST_GET_CORE] = "SIMCALL_HOST_GET_CORE",
30   [SIMCALL_HOST_GET_PROCESS_LIST] = "SIMCALL_HOST_GET_PROCESS_LIST",
31   [SIMCALL_HOST_GET_SPEED] = "SIMCALL_HOST_GET_SPEED",
32   [SIMCALL_HOST_GET_AVAILABLE_SPEED] = "SIMCALL_HOST_GET_AVAILABLE_SPEED",
33   [SIMCALL_HOST_GET_STATE] = "SIMCALL_HOST_GET_STATE",
34   [SIMCALL_HOST_GET_CURRENT_POWER_PEAK] = "SIMCALL_HOST_GET_CURRENT_POWER_PEAK",
35   [SIMCALL_HOST_GET_POWER_PEAK_AT] = "SIMCALL_HOST_GET_POWER_PEAK_AT",
36   [SIMCALL_HOST_GET_NB_PSTATES] = "SIMCALL_HOST_GET_NB_PSTATES",
37   [SIMCALL_HOST_SET_POWER_PEAK_AT] = "SIMCALL_HOST_SET_POWER_PEAK_AT",
38   [SIMCALL_HOST_GET_CONSUMED_ENERGY] = "SIMCALL_HOST_GET_CONSUMED_ENERGY",
39   [SIMCALL_HOST_EXECUTE] = "SIMCALL_HOST_EXECUTE",
40   [SIMCALL_HOST_PARALLEL_EXECUTE] = "SIMCALL_HOST_PARALLEL_EXECUTE",
41   [SIMCALL_HOST_EXECUTION_DESTROY] = "SIMCALL_HOST_EXECUTION_DESTROY",
42   [SIMCALL_HOST_EXECUTION_CANCEL] = "SIMCALL_HOST_EXECUTION_CANCEL",
43   [SIMCALL_HOST_EXECUTION_GET_REMAINS] = "SIMCALL_HOST_EXECUTION_GET_REMAINS",
44   [SIMCALL_HOST_EXECUTION_GET_STATE] = "SIMCALL_HOST_EXECUTION_GET_STATE",
45   [SIMCALL_HOST_EXECUTION_SET_PRIORITY] = "SIMCALL_HOST_EXECUTION_SET_PRIORITY",
46   [SIMCALL_HOST_EXECUTION_SET_BOUND] = "SIMCALL_HOST_EXECUTION_SET_BOUND",
47   [SIMCALL_HOST_EXECUTION_SET_AFFINITY] = "SIMCALL_HOST_EXECUTION_SET_AFFINITY",
48   [SIMCALL_HOST_EXECUTION_WAIT] = "SIMCALL_HOST_EXECUTION_WAIT",
49   [SIMCALL_HOST_GET_MOUNTED_STORAGE_LIST] = "SIMCALL_HOST_GET_MOUNTED_STORAGE_LIST",
50   [SIMCALL_HOST_GET_ATTACHED_STORAGE_LIST] = "SIMCALL_HOST_GET_ATTACHED_STORAGE_LIST",
51   [SIMCALL_HOST_GET_PARAMS] = "SIMCALL_HOST_GET_PARAMS",
52   [SIMCALL_HOST_SET_PARAMS] = "SIMCALL_HOST_SET_PARAMS",
53   [SIMCALL_VM_CREATE] = "SIMCALL_VM_CREATE",
54   [SIMCALL_VM_START] = "SIMCALL_VM_START",
55   [SIMCALL_VM_GET_STATE] = "SIMCALL_VM_GET_STATE",
56   [SIMCALL_VM_MIGRATE] = "SIMCALL_VM_MIGRATE",
57   [SIMCALL_VM_GET_PM] = "SIMCALL_VM_GET_PM",
58   [SIMCALL_VM_SET_BOUND] = "SIMCALL_VM_SET_BOUND",
59   [SIMCALL_VM_SET_AFFINITY] = "SIMCALL_VM_SET_AFFINITY",
60   [SIMCALL_VM_DESTROY] = "SIMCALL_VM_DESTROY",
61   [SIMCALL_VM_SUSPEND] = "SIMCALL_VM_SUSPEND",
62   [SIMCALL_VM_RESUME] = "SIMCALL_VM_RESUME",
63   [SIMCALL_VM_SHUTDOWN] = "SIMCALL_VM_SHUTDOWN",
64   [SIMCALL_VM_SAVE] = "SIMCALL_VM_SAVE",
65   [SIMCALL_VM_RESTORE] = "SIMCALL_VM_RESTORE",
66   [SIMCALL_VM_MIGRATEFROM_RESUMETO] = "SIMCALL_VM_MIGRATEFROM_RESUMETO",
67   [SIMCALL_PROCESS_CREATE] = "SIMCALL_PROCESS_CREATE",
68   [SIMCALL_PROCESS_KILL] = "SIMCALL_PROCESS_KILL",
69   [SIMCALL_PROCESS_KILLALL] = "SIMCALL_PROCESS_KILLALL",
70   [SIMCALL_PROCESS_CLEANUP] = "SIMCALL_PROCESS_CLEANUP",
71   [SIMCALL_PROCESS_CHANGE_HOST] = "SIMCALL_PROCESS_CHANGE_HOST",
72   [SIMCALL_PROCESS_SUSPEND] = "SIMCALL_PROCESS_SUSPEND",
73   [SIMCALL_PROCESS_RESUME] = "SIMCALL_PROCESS_RESUME",
74   [SIMCALL_PROCESS_COUNT] = "SIMCALL_PROCESS_COUNT",
75   [SIMCALL_PROCESS_GET_PID] = "SIMCALL_PROCESS_GET_PID",
76   [SIMCALL_PROCESS_GET_PPID] = "SIMCALL_PROCESS_GET_PPID",
77   [SIMCALL_PROCESS_GET_DATA] = "SIMCALL_PROCESS_GET_DATA",
78   [SIMCALL_PROCESS_SET_DATA] = "SIMCALL_PROCESS_SET_DATA",
79   [SIMCALL_PROCESS_GET_HOST] = "SIMCALL_PROCESS_GET_HOST",
80   [SIMCALL_PROCESS_GET_NAME] = "SIMCALL_PROCESS_GET_NAME",
81   [SIMCALL_PROCESS_IS_SUSPENDED] = "SIMCALL_PROCESS_IS_SUSPENDED",
82   [SIMCALL_PROCESS_GET_PROPERTIES] = "SIMCALL_PROCESS_GET_PROPERTIES",
83   [SIMCALL_PROCESS_JOIN] = "SIMCALL_PROCESS_JOIN",
84   [SIMCALL_PROCESS_SLEEP] = "SIMCALL_PROCESS_SLEEP",
85   [SIMCALL_PROCESS_ON_EXIT] = "SIMCALL_PROCESS_ON_EXIT",
86   [SIMCALL_PROCESS_AUTO_RESTART_SET] = "SIMCALL_PROCESS_AUTO_RESTART_SET",
87   [SIMCALL_PROCESS_RESTART] = "SIMCALL_PROCESS_RESTART",
88   [SIMCALL_RDV_CREATE] = "SIMCALL_RDV_CREATE",
89   [SIMCALL_RDV_DESTROY] = "SIMCALL_RDV_DESTROY",
90   [SIMCALL_RDV_COMM_COUNT_BY_HOST] = "SIMCALL_RDV_COMM_COUNT_BY_HOST",
91   [SIMCALL_RDV_GET_HEAD] = "SIMCALL_RDV_GET_HEAD",
92   [SIMCALL_RDV_SET_RECEIVER] = "SIMCALL_RDV_SET_RECEIVER",
93   [SIMCALL_RDV_GET_RECEIVER] = "SIMCALL_RDV_GET_RECEIVER",
94   [SIMCALL_COMM_IPROBE] = "SIMCALL_COMM_IPROBE",
95   [SIMCALL_COMM_SEND] = "SIMCALL_COMM_SEND",
96   [SIMCALL_COMM_ISEND] = "SIMCALL_COMM_ISEND",
97   [SIMCALL_COMM_RECV] = "SIMCALL_COMM_RECV",
98   [SIMCALL_COMM_IRECV] = "SIMCALL_COMM_IRECV",
99   [SIMCALL_COMM_CANCEL] = "SIMCALL_COMM_CANCEL",
100   [SIMCALL_COMM_WAITANY] = "SIMCALL_COMM_WAITANY",
101   [SIMCALL_COMM_WAIT] = "SIMCALL_COMM_WAIT",
102   [SIMCALL_COMM_TEST] = "SIMCALL_COMM_TEST",
103   [SIMCALL_COMM_TESTANY] = "SIMCALL_COMM_TESTANY",
104   [SIMCALL_COMM_GET_REMAINS] = "SIMCALL_COMM_GET_REMAINS",
105   [SIMCALL_COMM_GET_STATE] = "SIMCALL_COMM_GET_STATE",
106   [SIMCALL_COMM_GET_SRC_DATA] = "SIMCALL_COMM_GET_SRC_DATA",
107   [SIMCALL_COMM_GET_DST_DATA] = "SIMCALL_COMM_GET_DST_DATA",
108   [SIMCALL_COMM_GET_SRC_PROC] = "SIMCALL_COMM_GET_SRC_PROC",
109   [SIMCALL_COMM_GET_DST_PROC] = "SIMCALL_COMM_GET_DST_PROC",
110   [SIMCALL_MUTEX_INIT] = "SIMCALL_MUTEX_INIT",
111   [SIMCALL_MUTEX_DESTROY] = "SIMCALL_MUTEX_DESTROY",
112   [SIMCALL_MUTEX_LOCK] = "SIMCALL_MUTEX_LOCK",
113   [SIMCALL_MUTEX_TRYLOCK] = "SIMCALL_MUTEX_TRYLOCK",
114   [SIMCALL_MUTEX_UNLOCK] = "SIMCALL_MUTEX_UNLOCK",
115   [SIMCALL_COND_INIT] = "SIMCALL_COND_INIT",
116   [SIMCALL_COND_DESTROY] = "SIMCALL_COND_DESTROY",
117   [SIMCALL_COND_SIGNAL] = "SIMCALL_COND_SIGNAL",
118   [SIMCALL_COND_WAIT] = "SIMCALL_COND_WAIT",
119   [SIMCALL_COND_WAIT_TIMEOUT] = "SIMCALL_COND_WAIT_TIMEOUT",
120   [SIMCALL_COND_BROADCAST] = "SIMCALL_COND_BROADCAST",
121   [SIMCALL_SEM_INIT] = "SIMCALL_SEM_INIT",
122   [SIMCALL_SEM_DESTROY] = "SIMCALL_SEM_DESTROY",
123   [SIMCALL_SEM_RELEASE] = "SIMCALL_SEM_RELEASE",
124   [SIMCALL_SEM_WOULD_BLOCK] = "SIMCALL_SEM_WOULD_BLOCK",
125   [SIMCALL_SEM_ACQUIRE] = "SIMCALL_SEM_ACQUIRE",
126   [SIMCALL_SEM_ACQUIRE_TIMEOUT] = "SIMCALL_SEM_ACQUIRE_TIMEOUT",
127   [SIMCALL_SEM_GET_CAPACITY] = "SIMCALL_SEM_GET_CAPACITY",
128   [SIMCALL_FILE_READ] = "SIMCALL_FILE_READ",
129   [SIMCALL_FILE_WRITE] = "SIMCALL_FILE_WRITE",
130   [SIMCALL_FILE_OPEN] = "SIMCALL_FILE_OPEN",
131   [SIMCALL_FILE_CLOSE] = "SIMCALL_FILE_CLOSE",
132   [SIMCALL_FILE_UNLINK] = "SIMCALL_FILE_UNLINK",
133   [SIMCALL_FILE_GET_SIZE] = "SIMCALL_FILE_GET_SIZE",
134   [SIMCALL_FILE_TELL] = "SIMCALL_FILE_TELL",
135   [SIMCALL_FILE_SEEK] = "SIMCALL_FILE_SEEK",
136   [SIMCALL_FILE_GET_INFO] = "SIMCALL_FILE_GET_INFO",
137   [SIMCALL_FILE_MOVE] = "SIMCALL_FILE_MOVE",
138   [SIMCALL_STORAGE_GET_FREE_SIZE] = "SIMCALL_STORAGE_GET_FREE_SIZE",
139   [SIMCALL_STORAGE_GET_USED_SIZE] = "SIMCALL_STORAGE_GET_USED_SIZE",
140   [SIMCALL_STORAGE_GET_PROPERTIES] = "SIMCALL_STORAGE_GET_PROPERTIES",
141   [SIMCALL_STORAGE_GET_CONTENT] = "SIMCALL_STORAGE_GET_CONTENT",
142   [SIMCALL_ASR_GET_PROPERTIES] = "SIMCALL_ASR_GET_PROPERTIES",
143   [SIMCALL_MC_RANDOM] = "SIMCALL_MC_RANDOM",
144   [SIMCALL_SET_CATEGORY] = "SIMCALL_SET_CATEGORY",
145 #ifdef HAVE_LATENCY_BOUND_TRACKING
146   [SIMCALL_COMM_IS_LATENCY_BOUNDED] = "SIMCALL_COMM_IS_LATENCY_BOUNDED",
147 #endif
148
149 #ifdef HAVE_MC
150   [SIMCALL_MC_SNAPSHOT] = "SIMCALL_MC_SNAPSHOT",
151   [SIMCALL_MC_COMPARE_SNAPSHOTS] = "SIMCALL_MC_COMPARE_SNAPSHOTS",
152 #endif
153 [SIMCALL_NONE] = "NONE"
154 };
155
156 /**
157  * @brief (in kernel mode) unpack the simcall and activate the handler
158  * 
159  * This function is generated from src/simix/simcalls.in
160  */
161 void SIMIX_simcall_handle(smx_simcall_t simcall, int value) {
162   XBT_DEBUG("Handling simcall %p: %s", simcall, SIMIX_simcall_name(simcall->call));
163   SIMCALL_SET_MC_VALUE(simcall, value);
164   if (simcall->issuer->context->iwannadie && simcall->call != SIMCALL_PROCESS_CLEANUP)
165     return;
166   switch (simcall->call) {
167 case SIMCALL_HOST_GET_BY_NAME:
168       simcall->result.dp = SIMIX_host_get_by_name( simcall->args[0].cc);
169       SIMIX_simcall_answer(simcall);
170       break;  
171
172 case SIMCALL_HOST_GET_NAME:
173       simcall->result.cc = SIMIX_host_get_name((smx_host_t) simcall->args[0].dp);
174       SIMIX_simcall_answer(simcall);
175       break;  
176
177 case SIMCALL_HOST_ON:
178        SIMIX_host_on((smx_host_t) simcall->args[0].dp);
179       SIMIX_simcall_answer(simcall);
180       break;  
181
182 case SIMCALL_HOST_OFF:
183        simcall_HANDLER_host_off(simcall , (smx_host_t) simcall->args[0].dp);
184       SIMIX_simcall_answer(simcall);
185       break;  
186
187 case SIMCALL_HOST_GET_PROPERTIES:
188       simcall->result.dp = SIMIX_host_get_properties((smx_host_t) simcall->args[0].dp);
189       SIMIX_simcall_answer(simcall);
190       break;  
191
192 case SIMCALL_HOST_GET_CORE:
193       simcall->result.i = SIMIX_host_get_core((smx_host_t) simcall->args[0].dp);
194       SIMIX_simcall_answer(simcall);
195       break;  
196
197 case SIMCALL_HOST_GET_PROCESS_LIST:
198       simcall->result.dp = SIMIX_host_get_process_list((smx_host_t) simcall->args[0].dp);
199       SIMIX_simcall_answer(simcall);
200       break;  
201
202 case SIMCALL_HOST_GET_SPEED:
203       simcall->result.d = SIMIX_host_get_speed((smx_host_t) simcall->args[0].dp);
204       SIMIX_simcall_answer(simcall);
205       break;  
206
207 case SIMCALL_HOST_GET_AVAILABLE_SPEED:
208       simcall->result.d = SIMIX_host_get_available_speed((smx_host_t) simcall->args[0].dp);
209       SIMIX_simcall_answer(simcall);
210       break;  
211
212 case SIMCALL_HOST_GET_STATE:
213       simcall->result.i = SIMIX_host_get_state((smx_host_t) simcall->args[0].dp);
214       SIMIX_simcall_answer(simcall);
215       break;  
216
217 case SIMCALL_HOST_GET_CURRENT_POWER_PEAK:
218       simcall->result.d = SIMIX_host_get_current_power_peak((smx_host_t) simcall->args[0].dp);
219       SIMIX_simcall_answer(simcall);
220       break;  
221
222 case SIMCALL_HOST_GET_POWER_PEAK_AT:
223       simcall->result.d = SIMIX_host_get_power_peak_at((smx_host_t) simcall->args[0].dp, simcall->args[1].i);
224       SIMIX_simcall_answer(simcall);
225       break;  
226
227 case SIMCALL_HOST_GET_NB_PSTATES:
228       simcall->result.i = SIMIX_host_get_nb_pstates((smx_host_t) simcall->args[0].dp);
229       SIMIX_simcall_answer(simcall);
230       break;  
231
232 case SIMCALL_HOST_SET_POWER_PEAK_AT:
233        SIMIX_host_set_power_peak_at((smx_host_t) simcall->args[0].dp, simcall->args[1].i);
234       SIMIX_simcall_answer(simcall);
235       break;  
236
237 case SIMCALL_HOST_GET_CONSUMED_ENERGY:
238       simcall->result.d = SIMIX_host_get_consumed_energy((smx_host_t) simcall->args[0].dp);
239       SIMIX_simcall_answer(simcall);
240       break;  
241
242 case SIMCALL_HOST_EXECUTE:
243       simcall->result.dp = SIMIX_host_execute( simcall->args[0].cc,(smx_host_t) simcall->args[1].dp, simcall->args[2].d, simcall->args[3].d, simcall->args[4].d, simcall->args[5].ul);
244       SIMIX_simcall_answer(simcall);
245       break;  
246
247 case SIMCALL_HOST_PARALLEL_EXECUTE:
248       simcall->result.dp = SIMIX_host_parallel_execute( simcall->args[0].cc, simcall->args[1].i,(smx_host_t*) simcall->args[2].dp,(double*) simcall->args[3].dp,(double*) simcall->args[4].dp, simcall->args[5].d, simcall->args[6].d);
249       SIMIX_simcall_answer(simcall);
250       break;  
251
252 case SIMCALL_HOST_EXECUTION_DESTROY:
253        SIMIX_host_execution_destroy((smx_synchro_t) simcall->args[0].dp);
254       SIMIX_simcall_answer(simcall);
255       break;  
256
257 case SIMCALL_HOST_EXECUTION_CANCEL:
258        SIMIX_host_execution_cancel((smx_synchro_t) simcall->args[0].dp);
259       SIMIX_simcall_answer(simcall);
260       break;  
261
262 case SIMCALL_HOST_EXECUTION_GET_REMAINS:
263       simcall->result.d = SIMIX_host_execution_get_remains((smx_synchro_t) simcall->args[0].dp);
264       SIMIX_simcall_answer(simcall);
265       break;  
266
267 case SIMCALL_HOST_EXECUTION_GET_STATE:
268       simcall->result.i = SIMIX_host_execution_get_state((smx_synchro_t) simcall->args[0].dp);
269       SIMIX_simcall_answer(simcall);
270       break;  
271
272 case SIMCALL_HOST_EXECUTION_SET_PRIORITY:
273        SIMIX_host_execution_set_priority((smx_synchro_t) simcall->args[0].dp, simcall->args[1].d);
274       SIMIX_simcall_answer(simcall);
275       break;  
276
277 case SIMCALL_HOST_EXECUTION_SET_BOUND:
278        SIMIX_host_execution_set_bound((smx_synchro_t) simcall->args[0].dp, simcall->args[1].d);
279       SIMIX_simcall_answer(simcall);
280       break;  
281
282 case SIMCALL_HOST_EXECUTION_SET_AFFINITY:
283        SIMIX_host_execution_set_affinity((smx_synchro_t) simcall->args[0].dp,(smx_host_t) simcall->args[1].dp, simcall->args[2].ul);
284       SIMIX_simcall_answer(simcall);
285       break;  
286
287 case SIMCALL_HOST_EXECUTION_WAIT:
288        simcall_HANDLER_host_execution_wait(simcall , (smx_synchro_t) simcall->args[0].dp);
289        break;  
290
291 case SIMCALL_HOST_GET_MOUNTED_STORAGE_LIST:
292       simcall->result.dp = SIMIX_host_get_mounted_storage_list((smx_host_t) simcall->args[0].dp);
293       SIMIX_simcall_answer(simcall);
294       break;  
295
296 case SIMCALL_HOST_GET_ATTACHED_STORAGE_LIST:
297       simcall->result.dp = SIMIX_host_get_attached_storage_list((smx_host_t) simcall->args[0].dp);
298       SIMIX_simcall_answer(simcall);
299       break;  
300
301 case SIMCALL_HOST_GET_PARAMS:
302        SIMIX_host_get_params((smx_host_t) simcall->args[0].dp,(ws_params_t) simcall->args[1].dp);
303       SIMIX_simcall_answer(simcall);
304       break;  
305
306 case SIMCALL_HOST_SET_PARAMS:
307        SIMIX_host_set_params((smx_host_t) simcall->args[0].dp,(ws_params_t) simcall->args[1].dp);
308       SIMIX_simcall_answer(simcall);
309       break;  
310
311 case SIMCALL_VM_CREATE:
312       simcall->result.dp = SIMIX_vm_create( simcall->args[0].cc,(smx_host_t) simcall->args[1].dp);
313       SIMIX_simcall_answer(simcall);
314       break;  
315
316 case SIMCALL_VM_START:
317        SIMIX_vm_start((smx_host_t) simcall->args[0].dp);
318       SIMIX_simcall_answer(simcall);
319       break;  
320
321 case SIMCALL_VM_GET_STATE:
322       simcall->result.i = SIMIX_vm_get_state((smx_host_t) simcall->args[0].dp);
323       SIMIX_simcall_answer(simcall);
324       break;  
325
326 case SIMCALL_VM_MIGRATE:
327        SIMIX_vm_migrate((smx_host_t) simcall->args[0].dp,(smx_host_t) simcall->args[1].dp);
328       SIMIX_simcall_answer(simcall);
329       break;  
330
331 case SIMCALL_VM_GET_PM:
332       simcall->result.dp = SIMIX_vm_get_pm((smx_host_t) simcall->args[0].dp);
333       SIMIX_simcall_answer(simcall);
334       break;  
335
336 case SIMCALL_VM_SET_BOUND:
337        SIMIX_vm_set_bound((smx_host_t) simcall->args[0].dp, simcall->args[1].d);
338       SIMIX_simcall_answer(simcall);
339       break;  
340
341 case SIMCALL_VM_SET_AFFINITY:
342        SIMIX_vm_set_affinity((smx_host_t) simcall->args[0].dp,(smx_host_t) simcall->args[1].dp, simcall->args[2].ul);
343       SIMIX_simcall_answer(simcall);
344       break;  
345
346 case SIMCALL_VM_DESTROY:
347        SIMIX_vm_destroy((smx_host_t) simcall->args[0].dp);
348       SIMIX_simcall_answer(simcall);
349       break;  
350
351 case SIMCALL_VM_SUSPEND:
352        simcall_HANDLER_vm_suspend(simcall , (smx_host_t) simcall->args[0].dp);
353       SIMIX_simcall_answer(simcall);
354       break;  
355
356 case SIMCALL_VM_RESUME:
357        simcall_HANDLER_vm_resume(simcall , (smx_host_t) simcall->args[0].dp);
358       SIMIX_simcall_answer(simcall);
359       break;  
360
361 case SIMCALL_VM_SHUTDOWN:
362        simcall_HANDLER_vm_shutdown(simcall , (smx_host_t) simcall->args[0].dp);
363       SIMIX_simcall_answer(simcall);
364       break;  
365
366 case SIMCALL_VM_SAVE:
367        simcall_HANDLER_vm_save(simcall , (smx_host_t) simcall->args[0].dp);
368       SIMIX_simcall_answer(simcall);
369       break;  
370
371 case SIMCALL_VM_RESTORE:
372        simcall_HANDLER_vm_restore(simcall , (smx_host_t) simcall->args[0].dp);
373       SIMIX_simcall_answer(simcall);
374       break;  
375
376 case SIMCALL_VM_MIGRATEFROM_RESUMETO:
377        SIMIX_vm_migratefrom_resumeto((smx_host_t) simcall->args[0].dp,(smx_host_t) simcall->args[1].dp,(smx_host_t) simcall->args[2].dp);
378       SIMIX_simcall_answer(simcall);
379       break;  
380
381 case SIMCALL_PROCESS_CREATE:
382        simcall_HANDLER_process_create(simcall , (smx_process_t*) simcall->args[0].dp,  simcall->args[1].cc, (xbt_main_func_t) simcall->args[2].fp,  simcall->args[3].dp,  simcall->args[4].cc,  simcall->args[5].d,  simcall->args[6].i, (char**) simcall->args[7].dp, (xbt_dict_t) simcall->args[8].dp,  simcall->args[9].i);
383       SIMIX_simcall_answer(simcall);
384       break;  
385
386 case SIMCALL_PROCESS_KILL:
387        simcall_HANDLER_process_kill(simcall , (smx_process_t) simcall->args[0].dp);
388       SIMIX_simcall_answer(simcall);
389       break;  
390
391 case SIMCALL_PROCESS_KILLALL:
392        simcall_HANDLER_process_killall(simcall ,  simcall->args[0].i);
393       SIMIX_simcall_answer(simcall);
394       break;  
395
396 case SIMCALL_PROCESS_CLEANUP:
397        SIMIX_process_cleanup((smx_process_t) simcall->args[0].dp);
398       SIMIX_simcall_answer(simcall);
399       break;  
400
401 case SIMCALL_PROCESS_CHANGE_HOST:
402        simcall_HANDLER_process_change_host(simcall , (smx_process_t) simcall->args[0].dp, (smx_host_t) simcall->args[1].dp);
403       SIMIX_simcall_answer(simcall);
404       break;  
405
406 case SIMCALL_PROCESS_SUSPEND:
407        simcall_HANDLER_process_suspend(simcall , (smx_process_t) simcall->args[0].dp);
408        break;  
409
410 case SIMCALL_PROCESS_RESUME:
411        simcall_HANDLER_process_resume(simcall , (smx_process_t) simcall->args[0].dp);
412       SIMIX_simcall_answer(simcall);
413       break;  
414
415 case SIMCALL_PROCESS_COUNT:
416       simcall->result.i = SIMIX_process_count();
417       SIMIX_simcall_answer(simcall);
418       break;  
419
420 case SIMCALL_PROCESS_GET_PID:
421       simcall->result.i = SIMIX_process_get_PID((smx_process_t) simcall->args[0].dp);
422       SIMIX_simcall_answer(simcall);
423       break;  
424
425 case SIMCALL_PROCESS_GET_PPID:
426       simcall->result.i = SIMIX_process_get_PPID((smx_process_t) simcall->args[0].dp);
427       SIMIX_simcall_answer(simcall);
428       break;  
429
430 case SIMCALL_PROCESS_GET_DATA:
431       simcall->result.dp = SIMIX_process_get_data((smx_process_t) simcall->args[0].dp);
432       SIMIX_simcall_answer(simcall);
433       break;  
434
435 case SIMCALL_PROCESS_SET_DATA:
436        SIMIX_process_set_data((smx_process_t) simcall->args[0].dp, simcall->args[1].dp);
437       SIMIX_simcall_answer(simcall);
438       break;  
439
440 case SIMCALL_PROCESS_GET_HOST:
441       simcall->result.dp = SIMIX_process_get_host((smx_process_t) simcall->args[0].dp);
442       SIMIX_simcall_answer(simcall);
443       break;  
444
445 case SIMCALL_PROCESS_GET_NAME:
446       simcall->result.cc = SIMIX_process_get_name((smx_process_t) simcall->args[0].dp);
447       SIMIX_simcall_answer(simcall);
448       break;  
449
450 case SIMCALL_PROCESS_IS_SUSPENDED:
451       simcall->result.i = SIMIX_process_is_suspended((smx_process_t) simcall->args[0].dp);
452       SIMIX_simcall_answer(simcall);
453       break;  
454
455 case SIMCALL_PROCESS_GET_PROPERTIES:
456       simcall->result.dp = SIMIX_process_get_properties((smx_process_t) simcall->args[0].dp);
457       SIMIX_simcall_answer(simcall);
458       break;  
459
460 case SIMCALL_PROCESS_JOIN:
461        simcall_HANDLER_process_join(simcall , (smx_process_t) simcall->args[0].dp,  simcall->args[1].d);
462        break;  
463
464 case SIMCALL_PROCESS_SLEEP:
465        simcall_HANDLER_process_sleep(simcall ,  simcall->args[0].d);
466        break;  
467
468 case SIMCALL_PROCESS_ON_EXIT:
469        SIMIX_process_on_exit((smx_process_t) simcall->args[0].dp,(int_f_pvoid_pvoid_t) simcall->args[1].fp, simcall->args[2].dp);
470       SIMIX_simcall_answer(simcall);
471       break;  
472
473 case SIMCALL_PROCESS_AUTO_RESTART_SET:
474        SIMIX_process_auto_restart_set((smx_process_t) simcall->args[0].dp, simcall->args[1].i);
475       SIMIX_simcall_answer(simcall);
476       break;  
477
478 case SIMCALL_PROCESS_RESTART:
479       simcall->result.dp = simcall_HANDLER_process_restart(simcall , (smx_process_t) simcall->args[0].dp);
480       SIMIX_simcall_answer(simcall);
481       break;  
482
483 case SIMCALL_RDV_CREATE:
484       simcall->result.dp = SIMIX_rdv_create( simcall->args[0].cc);
485       SIMIX_simcall_answer(simcall);
486       break;  
487
488 case SIMCALL_RDV_DESTROY:
489        SIMIX_rdv_destroy((smx_rdv_t) simcall->args[0].dp);
490       SIMIX_simcall_answer(simcall);
491       break;  
492
493 case SIMCALL_RDV_COMM_COUNT_BY_HOST:
494       simcall->result.ui = SIMIX_rdv_comm_count_by_host((smx_rdv_t) simcall->args[0].dp,(smx_host_t) simcall->args[1].dp);
495       SIMIX_simcall_answer(simcall);
496       break;  
497
498 case SIMCALL_RDV_GET_HEAD:
499       simcall->result.dp = SIMIX_rdv_get_head((smx_rdv_t) simcall->args[0].dp);
500       SIMIX_simcall_answer(simcall);
501       break;  
502
503 case SIMCALL_RDV_SET_RECEIVER:
504        SIMIX_rdv_set_receiver((smx_rdv_t) simcall->args[0].dp,(smx_process_t) simcall->args[1].dp);
505       SIMIX_simcall_answer(simcall);
506       break;  
507
508 case SIMCALL_RDV_GET_RECEIVER:
509       simcall->result.dp = SIMIX_rdv_get_receiver((smx_rdv_t) simcall->args[0].dp);
510       SIMIX_simcall_answer(simcall);
511       break;  
512
513 case SIMCALL_COMM_IPROBE:
514       simcall->result.dp = simcall_HANDLER_comm_iprobe(simcall , (smx_rdv_t) simcall->args[0].dp,  simcall->args[1].i,  simcall->args[2].i,  simcall->args[3].i, (simix_match_func_t) simcall->args[4].fp,  simcall->args[5].dp);
515       SIMIX_simcall_answer(simcall);
516       break;  
517
518 case SIMCALL_COMM_SEND:
519        simcall_HANDLER_comm_send(simcall , (smx_process_t) simcall->args[0].dp, (smx_rdv_t) simcall->args[1].dp,  simcall->args[2].d,  simcall->args[3].d,  simcall->args[4].dp,  simcall->args[5].sz, (simix_match_func_t) simcall->args[6].fp, (simix_copy_data_func_t) simcall->args[7].fp,  simcall->args[8].dp,  simcall->args[9].d);
520        break;  
521
522 case SIMCALL_COMM_ISEND:
523       simcall->result.dp = simcall_HANDLER_comm_isend(simcall , (smx_process_t) simcall->args[0].dp, (smx_rdv_t) simcall->args[1].dp,  simcall->args[2].d,  simcall->args[3].d,  simcall->args[4].dp,  simcall->args[5].sz, (simix_match_func_t) simcall->args[6].fp, (simix_clean_func_t) simcall->args[7].fp, (simix_copy_data_func_t) simcall->args[8].fp,  simcall->args[9].dp,  simcall->args[10].i);
524       SIMIX_simcall_answer(simcall);
525       break;  
526
527 case SIMCALL_COMM_RECV:
528        simcall_HANDLER_comm_recv(simcall , (smx_rdv_t) simcall->args[0].dp,  simcall->args[1].dp, (size_t*) simcall->args[2].dp, (simix_match_func_t) simcall->args[3].fp, (simix_copy_data_func_t) simcall->args[4].fp,  simcall->args[5].dp,  simcall->args[6].d,  simcall->args[7].d);
529        break;  
530
531 case SIMCALL_COMM_IRECV:
532       simcall->result.dp = simcall_HANDLER_comm_irecv(simcall , (smx_rdv_t) simcall->args[0].dp,  simcall->args[1].dp, (size_t*) simcall->args[2].dp, (simix_match_func_t) simcall->args[3].fp, (simix_copy_data_func_t) simcall->args[4].fp,  simcall->args[5].dp,  simcall->args[6].d);
533       SIMIX_simcall_answer(simcall);
534       break;  
535
536 case SIMCALL_COMM_CANCEL:
537        SIMIX_comm_cancel((smx_synchro_t) simcall->args[0].dp);
538       SIMIX_simcall_answer(simcall);
539       break;  
540
541 case SIMCALL_COMM_WAITANY:
542        simcall_HANDLER_comm_waitany(simcall , (xbt_dynar_t) simcall->args[0].dp);
543        break;  
544
545 case SIMCALL_COMM_WAIT:
546        simcall_HANDLER_comm_wait(simcall , (smx_synchro_t) simcall->args[0].dp,  simcall->args[1].d);
547        break;  
548
549 case SIMCALL_COMM_TEST:
550        simcall_HANDLER_comm_test(simcall , (smx_synchro_t) simcall->args[0].dp);
551        break;  
552
553 case SIMCALL_COMM_TESTANY:
554        simcall_HANDLER_comm_testany(simcall , (xbt_dynar_t) simcall->args[0].dp);
555        break;  
556
557 case SIMCALL_COMM_GET_REMAINS:
558       simcall->result.d = SIMIX_comm_get_remains((smx_synchro_t) simcall->args[0].dp);
559       SIMIX_simcall_answer(simcall);
560       break;  
561
562 case SIMCALL_COMM_GET_STATE:
563       simcall->result.i = SIMIX_comm_get_state((smx_synchro_t) simcall->args[0].dp);
564       SIMIX_simcall_answer(simcall);
565       break;  
566
567 case SIMCALL_COMM_GET_SRC_DATA:
568       simcall->result.dp = SIMIX_comm_get_src_data((smx_synchro_t) simcall->args[0].dp);
569       SIMIX_simcall_answer(simcall);
570       break;  
571
572 case SIMCALL_COMM_GET_DST_DATA:
573       simcall->result.dp = SIMIX_comm_get_dst_data((smx_synchro_t) simcall->args[0].dp);
574       SIMIX_simcall_answer(simcall);
575       break;  
576
577 case SIMCALL_COMM_GET_SRC_PROC:
578       simcall->result.dp = SIMIX_comm_get_src_proc((smx_synchro_t) simcall->args[0].dp);
579       SIMIX_simcall_answer(simcall);
580       break;  
581
582 case SIMCALL_COMM_GET_DST_PROC:
583       simcall->result.dp = SIMIX_comm_get_dst_proc((smx_synchro_t) simcall->args[0].dp);
584       SIMIX_simcall_answer(simcall);
585       break;  
586
587 case SIMCALL_MUTEX_INIT:
588       simcall->result.dp = simcall_HANDLER_mutex_init(simcall );
589       SIMIX_simcall_answer(simcall);
590       break;  
591
592 case SIMCALL_MUTEX_DESTROY:
593        SIMIX_mutex_destroy((smx_mutex_t) simcall->args[0].dp);
594       SIMIX_simcall_answer(simcall);
595       break;  
596
597 case SIMCALL_MUTEX_LOCK:
598        simcall_HANDLER_mutex_lock(simcall , (smx_mutex_t) simcall->args[0].dp);
599        break;  
600
601 case SIMCALL_MUTEX_TRYLOCK:
602       simcall->result.i = simcall_HANDLER_mutex_trylock(simcall , (smx_mutex_t) simcall->args[0].dp);
603       SIMIX_simcall_answer(simcall);
604       break;  
605
606 case SIMCALL_MUTEX_UNLOCK:
607        simcall_HANDLER_mutex_unlock(simcall , (smx_mutex_t) simcall->args[0].dp);
608       SIMIX_simcall_answer(simcall);
609       break;  
610
611 case SIMCALL_COND_INIT:
612       simcall->result.dp = SIMIX_cond_init();
613       SIMIX_simcall_answer(simcall);
614       break;  
615
616 case SIMCALL_COND_DESTROY:
617        SIMIX_cond_destroy((smx_cond_t) simcall->args[0].dp);
618       SIMIX_simcall_answer(simcall);
619       break;  
620
621 case SIMCALL_COND_SIGNAL:
622        SIMIX_cond_signal((smx_cond_t) simcall->args[0].dp);
623       SIMIX_simcall_answer(simcall);
624       break;  
625
626 case SIMCALL_COND_WAIT:
627        simcall_HANDLER_cond_wait(simcall , (smx_cond_t) simcall->args[0].dp, (smx_mutex_t) simcall->args[1].dp);
628        break;  
629
630 case SIMCALL_COND_WAIT_TIMEOUT:
631        simcall_HANDLER_cond_wait_timeout(simcall , (smx_cond_t) simcall->args[0].dp, (smx_mutex_t) simcall->args[1].dp,  simcall->args[2].d);
632        break;  
633
634 case SIMCALL_COND_BROADCAST:
635        SIMIX_cond_broadcast((smx_cond_t) simcall->args[0].dp);
636       SIMIX_simcall_answer(simcall);
637       break;  
638
639 case SIMCALL_SEM_INIT:
640       simcall->result.dp = SIMIX_sem_init( simcall->args[0].ui);
641       SIMIX_simcall_answer(simcall);
642       break;  
643
644 case SIMCALL_SEM_DESTROY:
645        SIMIX_sem_destroy((smx_sem_t) simcall->args[0].dp);
646       SIMIX_simcall_answer(simcall);
647       break;  
648
649 case SIMCALL_SEM_RELEASE:
650        simcall_HANDLER_sem_release(simcall , (smx_sem_t) simcall->args[0].dp);
651       SIMIX_simcall_answer(simcall);
652       break;  
653
654 case SIMCALL_SEM_WOULD_BLOCK:
655       simcall->result.i = simcall_HANDLER_sem_would_block(simcall , (smx_sem_t) simcall->args[0].dp);
656       SIMIX_simcall_answer(simcall);
657       break;  
658
659 case SIMCALL_SEM_ACQUIRE:
660        simcall_HANDLER_sem_acquire(simcall , (smx_sem_t) simcall->args[0].dp);
661        break;  
662
663 case SIMCALL_SEM_ACQUIRE_TIMEOUT:
664        simcall_HANDLER_sem_acquire_timeout(simcall , (smx_sem_t) simcall->args[0].dp,  simcall->args[1].d);
665        break;  
666
667 case SIMCALL_SEM_GET_CAPACITY:
668       simcall->result.i = simcall_HANDLER_sem_get_capacity(simcall , (smx_sem_t) simcall->args[0].dp);
669       SIMIX_simcall_answer(simcall);
670       break;  
671
672 case SIMCALL_FILE_READ:
673        simcall_HANDLER_file_read(simcall , (smx_file_t) simcall->args[0].dp,  simcall->args[1].sgsz, (smx_host_t) simcall->args[2].dp);
674        break;  
675
676 case SIMCALL_FILE_WRITE:
677        simcall_HANDLER_file_write(simcall , (smx_file_t) simcall->args[0].dp,  simcall->args[1].sgsz, (smx_host_t) simcall->args[2].dp);
678        break;  
679
680 case SIMCALL_FILE_OPEN:
681        simcall_HANDLER_file_open(simcall ,  simcall->args[0].cc, (smx_host_t) simcall->args[1].dp);
682        break;  
683
684 case SIMCALL_FILE_CLOSE:
685        simcall_HANDLER_file_close(simcall , (smx_file_t) simcall->args[0].dp, (smx_host_t) simcall->args[1].dp);
686        break;  
687
688 case SIMCALL_FILE_UNLINK:
689       simcall->result.i = SIMIX_file_unlink((smx_file_t) simcall->args[0].dp,(smx_host_t) simcall->args[1].dp);
690       SIMIX_simcall_answer(simcall);
691       break;  
692
693 case SIMCALL_FILE_GET_SIZE:
694       simcall->result.sgsz = simcall_HANDLER_file_get_size(simcall , (smx_file_t) simcall->args[0].dp);
695       SIMIX_simcall_answer(simcall);
696       break;  
697
698 case SIMCALL_FILE_TELL:
699       simcall->result.sgsz = simcall_HANDLER_file_tell(simcall , (smx_file_t) simcall->args[0].dp);
700       SIMIX_simcall_answer(simcall);
701       break;  
702
703 case SIMCALL_FILE_SEEK:
704       simcall->result.i = simcall_HANDLER_file_seek(simcall , (smx_file_t) simcall->args[0].dp,  simcall->args[1].sgoff,  simcall->args[2].i);
705       SIMIX_simcall_answer(simcall);
706       break;  
707
708 case SIMCALL_FILE_GET_INFO:
709       simcall->result.dp = simcall_HANDLER_file_get_info(simcall , (smx_file_t) simcall->args[0].dp);
710       SIMIX_simcall_answer(simcall);
711       break;  
712
713 case SIMCALL_FILE_MOVE:
714       simcall->result.i = simcall_HANDLER_file_move(simcall , (smx_file_t) simcall->args[0].dp,  simcall->args[1].cc);
715       SIMIX_simcall_answer(simcall);
716       break;  
717
718 case SIMCALL_STORAGE_GET_FREE_SIZE:
719       simcall->result.sgsz = simcall_HANDLER_storage_get_free_size(simcall , (smx_storage_t) simcall->args[0].dp);
720       SIMIX_simcall_answer(simcall);
721       break;  
722
723 case SIMCALL_STORAGE_GET_USED_SIZE:
724       simcall->result.sgsz = simcall_HANDLER_storage_get_used_size(simcall , (smx_storage_t) simcall->args[0].dp);
725       SIMIX_simcall_answer(simcall);
726       break;  
727
728 case SIMCALL_STORAGE_GET_PROPERTIES:
729       simcall->result.dp = SIMIX_storage_get_properties((smx_storage_t) simcall->args[0].dp);
730       SIMIX_simcall_answer(simcall);
731       break;  
732
733 case SIMCALL_STORAGE_GET_CONTENT:
734       simcall->result.dp = SIMIX_storage_get_content((smx_storage_t) simcall->args[0].dp);
735       SIMIX_simcall_answer(simcall);
736       break;  
737
738 case SIMCALL_ASR_GET_PROPERTIES:
739       simcall->result.dp = simcall_HANDLER_asr_get_properties(simcall ,  simcall->args[0].cc);
740       SIMIX_simcall_answer(simcall);
741       break;  
742
743 case SIMCALL_MC_RANDOM:
744       simcall->result.i = simcall_HANDLER_mc_random(simcall ,  simcall->args[0].i,  simcall->args[1].i);
745       SIMIX_simcall_answer(simcall);
746       break;  
747
748 case SIMCALL_SET_CATEGORY:
749        SIMIX_set_category((smx_synchro_t) simcall->args[0].dp, simcall->args[1].cc);
750       SIMIX_simcall_answer(simcall);
751       break;  
752
753 #ifdef HAVE_LATENCY_BOUND_TRACKING
754 case SIMCALL_COMM_IS_LATENCY_BOUNDED:
755       simcall->result.i = SIMIX_comm_is_latency_bounded((smx_synchro_t) simcall->args[0].dp);
756       SIMIX_simcall_answer(simcall);
757       break;  
758
759 #endif
760
761 #ifdef HAVE_MC
762 case SIMCALL_MC_SNAPSHOT:
763       simcall->result.dp = simcall_HANDLER_mc_snapshot(simcall );
764       SIMIX_simcall_answer(simcall);
765       break;  
766
767 case SIMCALL_MC_COMPARE_SNAPSHOTS:
768       simcall->result.i = simcall_HANDLER_mc_compare_snapshots(simcall , (mc_snapshot_t) simcall->args[0].dp, (mc_snapshot_t) simcall->args[1].dp);
769       SIMIX_simcall_answer(simcall);
770       break;  
771
772 #endif
773     case NUM_SIMCALLS:
774       break;
775     case SIMCALL_NONE:
776       THROWF(arg_error,0,"Asked to do the noop syscall on %s@%s",
777           SIMIX_process_get_name(simcall->issuer),
778           SIMIX_host_get_name(SIMIX_process_get_host(simcall->issuer))
779           );
780       break;
781
782   }
783 }