Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
b9f26ada3dad65d50250c2a4b142f5fc9e4ed796
[simgrid.git] / src / simix / popping_generated.cpp
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 <xbt/base.h>
17 #include "smx_private.h"
18 #ifdef HAVE_MC
19 #include "src/mc/mc_forward.h"
20 #endif
21
22 XBT_LOG_EXTERNAL_DEFAULT_CATEGORY(simix_popping);
23
24 /** @brief Simcalls' names (generated from src/simix/simcalls.in) */
25 const char* simcall_names[] = {
26    "SIMCALL_NONE",  "SIMCALL_HOST_OFF",
27   "SIMCALL_VM_SUSPEND",
28   "SIMCALL_VM_RESUME",
29   "SIMCALL_VM_SHUTDOWN",
30   "SIMCALL_VM_SAVE",
31   "SIMCALL_VM_RESTORE",
32   "SIMCALL_PROCESS_CREATE",
33   "SIMCALL_PROCESS_KILL",
34   "SIMCALL_PROCESS_KILLALL",
35   "SIMCALL_PROCESS_CLEANUP",
36   "SIMCALL_PROCESS_SUSPEND",
37   "SIMCALL_PROCESS_RESUME",
38   "SIMCALL_PROCESS_SET_HOST",
39   "SIMCALL_PROCESS_IS_SUSPENDED",
40   "SIMCALL_PROCESS_JOIN",
41   "SIMCALL_PROCESS_SLEEP",
42   "SIMCALL_PROCESS_EXECUTE",
43   "SIMCALL_PROCESS_PARALLEL_EXECUTE",
44   "SIMCALL_PROCESS_EXECUTION_DESTROY",
45   "SIMCALL_PROCESS_EXECUTION_CANCEL",
46   "SIMCALL_PROCESS_EXECUTION_GET_REMAINS",
47   "SIMCALL_PROCESS_EXECUTION_GET_STATE",
48   "SIMCALL_PROCESS_EXECUTION_SET_PRIORITY",
49   "SIMCALL_PROCESS_EXECUTION_SET_BOUND",
50   "SIMCALL_PROCESS_EXECUTION_SET_AFFINITY",
51   "SIMCALL_PROCESS_EXECUTION_WAIT",
52   "SIMCALL_PROCESS_ON_EXIT",
53   "SIMCALL_PROCESS_AUTO_RESTART_SET",
54   "SIMCALL_PROCESS_RESTART",
55   "SIMCALL_RDV_CREATE",
56   "SIMCALL_RDV_DESTROY",
57   "SIMCALL_RDV_COMM_COUNT_BY_HOST",
58   "SIMCALL_RDV_GET_HEAD",
59   "SIMCALL_RDV_SET_RECEIVER",
60   "SIMCALL_RDV_GET_RECEIVER",
61   "SIMCALL_COMM_IPROBE",
62   "SIMCALL_COMM_SEND",
63   "SIMCALL_COMM_ISEND",
64   "SIMCALL_COMM_RECV",
65   "SIMCALL_COMM_IRECV",
66   "SIMCALL_COMM_CANCEL",
67   "SIMCALL_COMM_WAITANY",
68   "SIMCALL_COMM_WAIT",
69   "SIMCALL_COMM_TEST",
70   "SIMCALL_COMM_TESTANY",
71   "SIMCALL_COMM_GET_REMAINS",
72   "SIMCALL_COMM_GET_STATE",
73   "SIMCALL_COMM_GET_SRC_DATA",
74   "SIMCALL_COMM_GET_DST_DATA",
75   "SIMCALL_COMM_GET_SRC_PROC",
76   "SIMCALL_COMM_GET_DST_PROC",
77   "SIMCALL_MUTEX_INIT",
78   "SIMCALL_MUTEX_DESTROY",
79   "SIMCALL_MUTEX_LOCK",
80   "SIMCALL_MUTEX_TRYLOCK",
81   "SIMCALL_MUTEX_UNLOCK",
82   "SIMCALL_COND_INIT",
83   "SIMCALL_COND_DESTROY",
84   "SIMCALL_COND_SIGNAL",
85   "SIMCALL_COND_WAIT",
86   "SIMCALL_COND_WAIT_TIMEOUT",
87   "SIMCALL_COND_BROADCAST",
88   "SIMCALL_SEM_INIT",
89   "SIMCALL_SEM_DESTROY",
90   "SIMCALL_SEM_RELEASE",
91   "SIMCALL_SEM_WOULD_BLOCK",
92   "SIMCALL_SEM_ACQUIRE",
93   "SIMCALL_SEM_ACQUIRE_TIMEOUT",
94   "SIMCALL_SEM_GET_CAPACITY",
95   "SIMCALL_FILE_READ",
96   "SIMCALL_FILE_WRITE",
97   "SIMCALL_FILE_OPEN",
98   "SIMCALL_FILE_CLOSE",
99   "SIMCALL_FILE_UNLINK",
100   "SIMCALL_FILE_GET_SIZE",
101   "SIMCALL_FILE_TELL",
102   "SIMCALL_FILE_SEEK",
103   "SIMCALL_FILE_GET_INFO",
104   "SIMCALL_FILE_MOVE",
105   "SIMCALL_STORAGE_GET_FREE_SIZE",
106   "SIMCALL_STORAGE_GET_USED_SIZE",
107   "SIMCALL_STORAGE_GET_PROPERTIES",
108   "SIMCALL_STORAGE_GET_CONTENT",
109   "SIMCALL_ASR_GET_PROPERTIES",
110   "SIMCALL_MC_RANDOM",
111   "SIMCALL_SET_CATEGORY",
112   "SIMCALL_RUN_KERNEL",
113 #ifdef HAVE_LATENCY_BOUND_TRACKING
114   "SIMCALL_COMM_IS_LATENCY_BOUNDED",
115 #endif
116
117 #ifdef HAVE_MC
118   "SIMCALL_MC_SNAPSHOT",
119   "SIMCALL_MC_COMPARE_SNAPSHOTS",
120 #endif
121 };
122
123 /**
124  * @brief (in kernel mode) unpack the simcall and activate the handler
125  * 
126  * This function is generated from src/simix/simcalls.in
127  */
128 void SIMIX_simcall_handle(smx_simcall_t simcall, int value) {
129   XBT_DEBUG("Handling simcall %p: %s", simcall, SIMIX_simcall_name(simcall->call));
130   SIMCALL_SET_MC_VALUE(simcall, value);
131   if (simcall->issuer->context->iwannadie && simcall->call != SIMCALL_PROCESS_CLEANUP)
132     return;
133   switch (simcall->call) {
134 case SIMCALL_HOST_OFF:
135        simcall_HANDLER_host_off(simcall , (sg_host_t) simcall->args[0].dp);
136       SIMIX_simcall_answer(simcall);
137       break;  
138
139 case SIMCALL_VM_SUSPEND:
140        simcall_HANDLER_vm_suspend(simcall , (sg_host_t) simcall->args[0].dp);
141       SIMIX_simcall_answer(simcall);
142       break;  
143
144 case SIMCALL_VM_RESUME:
145        simcall_HANDLER_vm_resume(simcall , (sg_host_t) simcall->args[0].dp);
146       SIMIX_simcall_answer(simcall);
147       break;  
148
149 case SIMCALL_VM_SHUTDOWN:
150        simcall_HANDLER_vm_shutdown(simcall , (sg_host_t) simcall->args[0].dp);
151       SIMIX_simcall_answer(simcall);
152       break;  
153
154 case SIMCALL_VM_SAVE:
155        simcall_HANDLER_vm_save(simcall , (sg_host_t) simcall->args[0].dp);
156       SIMIX_simcall_answer(simcall);
157       break;  
158
159 case SIMCALL_VM_RESTORE:
160        simcall_HANDLER_vm_restore(simcall , (sg_host_t) simcall->args[0].dp);
161       SIMIX_simcall_answer(simcall);
162       break;  
163
164 case SIMCALL_PROCESS_CREATE:
165       simcall->result.dp = simcall_HANDLER_process_create(simcall ,  simcall->args[0].cc, (xbt_main_func_t) simcall->args[1].fp,  simcall->args[2].dp,  simcall->args[3].cc,  simcall->args[4].d,  simcall->args[5].i, (char**) simcall->args[6].dp, (xbt_dict_t) simcall->args[7].dp,  simcall->args[8].i);
166       SIMIX_simcall_answer(simcall);
167       break;  
168
169 case SIMCALL_PROCESS_KILL:
170        simcall_HANDLER_process_kill(simcall , (smx_process_t) simcall->args[0].dp);
171       SIMIX_simcall_answer(simcall);
172       break;  
173
174 case SIMCALL_PROCESS_KILLALL:
175        simcall_HANDLER_process_killall(simcall ,  simcall->args[0].i);
176       SIMIX_simcall_answer(simcall);
177       break;  
178
179 case SIMCALL_PROCESS_CLEANUP:
180        SIMIX_process_cleanup((smx_process_t) simcall->args[0].dp);
181       SIMIX_simcall_answer(simcall);
182       break;  
183
184 case SIMCALL_PROCESS_SUSPEND:
185        simcall_HANDLER_process_suspend(simcall , (smx_process_t) simcall->args[0].dp);
186        break;  
187
188 case SIMCALL_PROCESS_RESUME:
189        simcall_HANDLER_process_resume(simcall , (smx_process_t) simcall->args[0].dp);
190       SIMIX_simcall_answer(simcall);
191       break;  
192
193 case SIMCALL_PROCESS_SET_HOST:
194        simcall_HANDLER_process_set_host(simcall , (smx_process_t) simcall->args[0].dp, (sg_host_t) simcall->args[1].dp);
195       SIMIX_simcall_answer(simcall);
196       break;  
197
198 case SIMCALL_PROCESS_IS_SUSPENDED:
199       simcall->result.i = SIMIX_process_is_suspended((smx_process_t) simcall->args[0].dp);
200       SIMIX_simcall_answer(simcall);
201       break;  
202
203 case SIMCALL_PROCESS_JOIN:
204        simcall_HANDLER_process_join(simcall , (smx_process_t) simcall->args[0].dp,  simcall->args[1].d);
205        break;  
206
207 case SIMCALL_PROCESS_SLEEP:
208        simcall_HANDLER_process_sleep(simcall ,  simcall->args[0].d);
209        break;  
210
211 case SIMCALL_PROCESS_EXECUTE:
212       simcall->result.dp = simcall_HANDLER_process_execute(simcall ,  simcall->args[0].cc,  simcall->args[1].d,  simcall->args[2].d,  simcall->args[3].d,  simcall->args[4].ul);
213       SIMIX_simcall_answer(simcall);
214       break;  
215
216 case SIMCALL_PROCESS_PARALLEL_EXECUTE:
217       simcall->result.dp = SIMIX_process_parallel_execute( simcall->args[0].cc, simcall->args[1].i,(sg_host_t*) simcall->args[2].dp,(double*) simcall->args[3].dp,(double*) simcall->args[4].dp, simcall->args[5].d, simcall->args[6].d);
218       SIMIX_simcall_answer(simcall);
219       break;  
220
221 case SIMCALL_PROCESS_EXECUTION_DESTROY:
222        SIMIX_process_execution_destroy((smx_synchro_t) simcall->args[0].dp);
223       SIMIX_simcall_answer(simcall);
224       break;  
225
226 case SIMCALL_PROCESS_EXECUTION_CANCEL:
227        SIMIX_process_execution_cancel((smx_synchro_t) simcall->args[0].dp);
228       SIMIX_simcall_answer(simcall);
229       break;  
230
231 case SIMCALL_PROCESS_EXECUTION_GET_REMAINS:
232       simcall->result.d = SIMIX_process_execution_get_remains((smx_synchro_t) simcall->args[0].dp);
233       SIMIX_simcall_answer(simcall);
234       break;  
235
236 case SIMCALL_PROCESS_EXECUTION_GET_STATE:
237       simcall->result.i = SIMIX_process_execution_get_state((smx_synchro_t) simcall->args[0].dp);
238       SIMIX_simcall_answer(simcall);
239       break;  
240
241 case SIMCALL_PROCESS_EXECUTION_SET_PRIORITY:
242        SIMIX_process_execution_set_priority((smx_synchro_t) simcall->args[0].dp, simcall->args[1].d);
243       SIMIX_simcall_answer(simcall);
244       break;  
245
246 case SIMCALL_PROCESS_EXECUTION_SET_BOUND:
247        SIMIX_process_execution_set_bound((smx_synchro_t) simcall->args[0].dp, simcall->args[1].d);
248       SIMIX_simcall_answer(simcall);
249       break;  
250
251 case SIMCALL_PROCESS_EXECUTION_SET_AFFINITY:
252        SIMIX_process_execution_set_affinity((smx_synchro_t) simcall->args[0].dp,(sg_host_t) simcall->args[1].dp, simcall->args[2].ul);
253       SIMIX_simcall_answer(simcall);
254       break;  
255
256 case SIMCALL_PROCESS_EXECUTION_WAIT:
257        simcall_HANDLER_process_execution_wait(simcall , (smx_synchro_t) simcall->args[0].dp);
258        break;  
259
260 case SIMCALL_PROCESS_ON_EXIT:
261        SIMIX_process_on_exit((smx_process_t) simcall->args[0].dp,(int_f_pvoid_pvoid_t) simcall->args[1].fp, simcall->args[2].dp);
262       SIMIX_simcall_answer(simcall);
263       break;  
264
265 case SIMCALL_PROCESS_AUTO_RESTART_SET:
266        SIMIX_process_auto_restart_set((smx_process_t) simcall->args[0].dp, simcall->args[1].i);
267       SIMIX_simcall_answer(simcall);
268       break;  
269
270 case SIMCALL_PROCESS_RESTART:
271       simcall->result.dp = simcall_HANDLER_process_restart(simcall , (smx_process_t) simcall->args[0].dp);
272       SIMIX_simcall_answer(simcall);
273       break;  
274
275 case SIMCALL_RDV_CREATE:
276       simcall->result.dp = SIMIX_rdv_create( simcall->args[0].cc);
277       SIMIX_simcall_answer(simcall);
278       break;  
279
280 case SIMCALL_RDV_DESTROY:
281        SIMIX_rdv_destroy((smx_rdv_t) simcall->args[0].dp);
282       SIMIX_simcall_answer(simcall);
283       break;  
284
285 case SIMCALL_RDV_COMM_COUNT_BY_HOST:
286       simcall->result.ui = SIMIX_rdv_comm_count_by_host((smx_rdv_t) simcall->args[0].dp,(sg_host_t) simcall->args[1].dp);
287       SIMIX_simcall_answer(simcall);
288       break;  
289
290 case SIMCALL_RDV_GET_HEAD:
291       simcall->result.dp = SIMIX_rdv_get_head((smx_rdv_t) simcall->args[0].dp);
292       SIMIX_simcall_answer(simcall);
293       break;  
294
295 case SIMCALL_RDV_SET_RECEIVER:
296        SIMIX_rdv_set_receiver((smx_rdv_t) simcall->args[0].dp,(smx_process_t) simcall->args[1].dp);
297       SIMIX_simcall_answer(simcall);
298       break;  
299
300 case SIMCALL_RDV_GET_RECEIVER:
301       simcall->result.dp = SIMIX_rdv_get_receiver((smx_rdv_t) simcall->args[0].dp);
302       SIMIX_simcall_answer(simcall);
303       break;  
304
305 case SIMCALL_COMM_IPROBE:
306       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);
307       SIMIX_simcall_answer(simcall);
308       break;  
309
310 case SIMCALL_COMM_SEND:
311        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);
312        break;  
313
314 case SIMCALL_COMM_ISEND:
315       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);
316       SIMIX_simcall_answer(simcall);
317       break;  
318
319 case SIMCALL_COMM_RECV:
320        simcall_HANDLER_comm_recv(simcall , (smx_process_t) simcall->args[0].dp, (smx_rdv_t) simcall->args[1].dp,  simcall->args[2].dp, (size_t*) simcall->args[3].dp, (simix_match_func_t) simcall->args[4].fp, (simix_copy_data_func_t) simcall->args[5].fp,  simcall->args[6].dp,  simcall->args[7].d,  simcall->args[8].d);
321        break;  
322
323 case SIMCALL_COMM_IRECV:
324       simcall->result.dp = simcall_HANDLER_comm_irecv(simcall , (smx_process_t) simcall->args[0].dp, (smx_rdv_t) simcall->args[1].dp,  simcall->args[2].dp, (size_t*) simcall->args[3].dp, (simix_match_func_t) simcall->args[4].fp, (simix_copy_data_func_t) simcall->args[5].fp,  simcall->args[6].dp,  simcall->args[7].d);
325       SIMIX_simcall_answer(simcall);
326       break;  
327
328 case SIMCALL_COMM_CANCEL:
329        SIMIX_comm_cancel((smx_synchro_t) simcall->args[0].dp);
330       SIMIX_simcall_answer(simcall);
331       break;  
332
333 case SIMCALL_COMM_WAITANY:
334        simcall_HANDLER_comm_waitany(simcall , (xbt_dynar_t) simcall->args[0].dp);
335        break;  
336
337 case SIMCALL_COMM_WAIT:
338        simcall_HANDLER_comm_wait(simcall , (smx_synchro_t) simcall->args[0].dp,  simcall->args[1].d);
339        break;  
340
341 case SIMCALL_COMM_TEST:
342        simcall_HANDLER_comm_test(simcall , (smx_synchro_t) simcall->args[0].dp);
343        break;  
344
345 case SIMCALL_COMM_TESTANY:
346        simcall_HANDLER_comm_testany(simcall , (xbt_dynar_t) simcall->args[0].dp);
347        break;  
348
349 case SIMCALL_COMM_GET_REMAINS:
350       simcall->result.d = SIMIX_comm_get_remains((smx_synchro_t) simcall->args[0].dp);
351       SIMIX_simcall_answer(simcall);
352       break;  
353
354 case SIMCALL_COMM_GET_STATE:
355       simcall->result.i = SIMIX_comm_get_state((smx_synchro_t) simcall->args[0].dp);
356       SIMIX_simcall_answer(simcall);
357       break;  
358
359 case SIMCALL_COMM_GET_SRC_DATA:
360       simcall->result.dp = SIMIX_comm_get_src_data((smx_synchro_t) simcall->args[0].dp);
361       SIMIX_simcall_answer(simcall);
362       break;  
363
364 case SIMCALL_COMM_GET_DST_DATA:
365       simcall->result.dp = SIMIX_comm_get_dst_data((smx_synchro_t) simcall->args[0].dp);
366       SIMIX_simcall_answer(simcall);
367       break;  
368
369 case SIMCALL_COMM_GET_SRC_PROC:
370       simcall->result.dp = SIMIX_comm_get_src_proc((smx_synchro_t) simcall->args[0].dp);
371       SIMIX_simcall_answer(simcall);
372       break;  
373
374 case SIMCALL_COMM_GET_DST_PROC:
375       simcall->result.dp = SIMIX_comm_get_dst_proc((smx_synchro_t) simcall->args[0].dp);
376       SIMIX_simcall_answer(simcall);
377       break;  
378
379 case SIMCALL_MUTEX_INIT:
380       simcall->result.dp = simcall_HANDLER_mutex_init(simcall );
381       SIMIX_simcall_answer(simcall);
382       break;  
383
384 case SIMCALL_MUTEX_DESTROY:
385        SIMIX_mutex_destroy((smx_mutex_t) simcall->args[0].dp);
386       SIMIX_simcall_answer(simcall);
387       break;  
388
389 case SIMCALL_MUTEX_LOCK:
390        simcall_HANDLER_mutex_lock(simcall , (smx_mutex_t) simcall->args[0].dp);
391        break;  
392
393 case SIMCALL_MUTEX_TRYLOCK:
394       simcall->result.i = simcall_HANDLER_mutex_trylock(simcall , (smx_mutex_t) simcall->args[0].dp);
395       SIMIX_simcall_answer(simcall);
396       break;  
397
398 case SIMCALL_MUTEX_UNLOCK:
399        simcall_HANDLER_mutex_unlock(simcall , (smx_mutex_t) simcall->args[0].dp);
400       SIMIX_simcall_answer(simcall);
401       break;  
402
403 case SIMCALL_COND_INIT:
404       simcall->result.dp = SIMIX_cond_init();
405       SIMIX_simcall_answer(simcall);
406       break;  
407
408 case SIMCALL_COND_DESTROY:
409        SIMIX_cond_destroy((smx_cond_t) simcall->args[0].dp);
410       SIMIX_simcall_answer(simcall);
411       break;  
412
413 case SIMCALL_COND_SIGNAL:
414        SIMIX_cond_signal((smx_cond_t) simcall->args[0].dp);
415       SIMIX_simcall_answer(simcall);
416       break;  
417
418 case SIMCALL_COND_WAIT:
419        simcall_HANDLER_cond_wait(simcall , (smx_cond_t) simcall->args[0].dp, (smx_mutex_t) simcall->args[1].dp);
420        break;  
421
422 case SIMCALL_COND_WAIT_TIMEOUT:
423        simcall_HANDLER_cond_wait_timeout(simcall , (smx_cond_t) simcall->args[0].dp, (smx_mutex_t) simcall->args[1].dp,  simcall->args[2].d);
424        break;  
425
426 case SIMCALL_COND_BROADCAST:
427        SIMIX_cond_broadcast((smx_cond_t) simcall->args[0].dp);
428       SIMIX_simcall_answer(simcall);
429       break;  
430
431 case SIMCALL_SEM_INIT:
432       simcall->result.dp = SIMIX_sem_init( simcall->args[0].ui);
433       SIMIX_simcall_answer(simcall);
434       break;  
435
436 case SIMCALL_SEM_DESTROY:
437        SIMIX_sem_destroy((smx_sem_t) simcall->args[0].dp);
438       SIMIX_simcall_answer(simcall);
439       break;  
440
441 case SIMCALL_SEM_RELEASE:
442        simcall_HANDLER_sem_release(simcall , (smx_sem_t) simcall->args[0].dp);
443       SIMIX_simcall_answer(simcall);
444       break;  
445
446 case SIMCALL_SEM_WOULD_BLOCK:
447       simcall->result.i = simcall_HANDLER_sem_would_block(simcall , (smx_sem_t) simcall->args[0].dp);
448       SIMIX_simcall_answer(simcall);
449       break;  
450
451 case SIMCALL_SEM_ACQUIRE:
452        simcall_HANDLER_sem_acquire(simcall , (smx_sem_t) simcall->args[0].dp);
453        break;  
454
455 case SIMCALL_SEM_ACQUIRE_TIMEOUT:
456        simcall_HANDLER_sem_acquire_timeout(simcall , (smx_sem_t) simcall->args[0].dp,  simcall->args[1].d);
457        break;  
458
459 case SIMCALL_SEM_GET_CAPACITY:
460       simcall->result.i = simcall_HANDLER_sem_get_capacity(simcall , (smx_sem_t) simcall->args[0].dp);
461       SIMIX_simcall_answer(simcall);
462       break;  
463
464 case SIMCALL_FILE_READ:
465        simcall_HANDLER_file_read(simcall , (smx_file_t) simcall->args[0].dp,  simcall->args[1].sgsz, (sg_host_t) simcall->args[2].dp);
466        break;  
467
468 case SIMCALL_FILE_WRITE:
469        simcall_HANDLER_file_write(simcall , (smx_file_t) simcall->args[0].dp,  simcall->args[1].sgsz, (sg_host_t) simcall->args[2].dp);
470        break;  
471
472 case SIMCALL_FILE_OPEN:
473        simcall_HANDLER_file_open(simcall ,  simcall->args[0].cc, (sg_host_t) simcall->args[1].dp);
474        break;  
475
476 case SIMCALL_FILE_CLOSE:
477        simcall_HANDLER_file_close(simcall , (smx_file_t) simcall->args[0].dp, (sg_host_t) simcall->args[1].dp);
478        break;  
479
480 case SIMCALL_FILE_UNLINK:
481       simcall->result.i = SIMIX_file_unlink((smx_file_t) simcall->args[0].dp,(sg_host_t) simcall->args[1].dp);
482       SIMIX_simcall_answer(simcall);
483       break;  
484
485 case SIMCALL_FILE_GET_SIZE:
486       simcall->result.sgsz = simcall_HANDLER_file_get_size(simcall , (smx_file_t) simcall->args[0].dp);
487       SIMIX_simcall_answer(simcall);
488       break;  
489
490 case SIMCALL_FILE_TELL:
491       simcall->result.sgsz = simcall_HANDLER_file_tell(simcall , (smx_file_t) simcall->args[0].dp);
492       SIMIX_simcall_answer(simcall);
493       break;  
494
495 case SIMCALL_FILE_SEEK:
496       simcall->result.i = simcall_HANDLER_file_seek(simcall , (smx_file_t) simcall->args[0].dp,  simcall->args[1].sgoff,  simcall->args[2].i);
497       SIMIX_simcall_answer(simcall);
498       break;  
499
500 case SIMCALL_FILE_GET_INFO:
501       simcall->result.dp = simcall_HANDLER_file_get_info(simcall , (smx_file_t) simcall->args[0].dp);
502       SIMIX_simcall_answer(simcall);
503       break;  
504
505 case SIMCALL_FILE_MOVE:
506       simcall->result.i = simcall_HANDLER_file_move(simcall , (smx_file_t) simcall->args[0].dp,  simcall->args[1].cc);
507       SIMIX_simcall_answer(simcall);
508       break;  
509
510 case SIMCALL_STORAGE_GET_FREE_SIZE:
511       simcall->result.sgsz = simcall_HANDLER_storage_get_free_size(simcall , (smx_storage_t) simcall->args[0].dp);
512       SIMIX_simcall_answer(simcall);
513       break;  
514
515 case SIMCALL_STORAGE_GET_USED_SIZE:
516       simcall->result.sgsz = simcall_HANDLER_storage_get_used_size(simcall , (smx_storage_t) simcall->args[0].dp);
517       SIMIX_simcall_answer(simcall);
518       break;  
519
520 case SIMCALL_STORAGE_GET_PROPERTIES:
521       simcall->result.dp = SIMIX_storage_get_properties((smx_storage_t) simcall->args[0].dp);
522       SIMIX_simcall_answer(simcall);
523       break;  
524
525 case SIMCALL_STORAGE_GET_CONTENT:
526       simcall->result.dp = SIMIX_storage_get_content((smx_storage_t) simcall->args[0].dp);
527       SIMIX_simcall_answer(simcall);
528       break;  
529
530 case SIMCALL_ASR_GET_PROPERTIES:
531       simcall->result.dp = simcall_HANDLER_asr_get_properties(simcall ,  simcall->args[0].cc);
532       SIMIX_simcall_answer(simcall);
533       break;  
534
535 case SIMCALL_MC_RANDOM:
536       simcall->result.i = simcall_HANDLER_mc_random(simcall ,  simcall->args[0].i,  simcall->args[1].i);
537       SIMIX_simcall_answer(simcall);
538       break;  
539
540 case SIMCALL_SET_CATEGORY:
541        SIMIX_set_category((smx_synchro_t) simcall->args[0].dp, simcall->args[1].cc);
542       SIMIX_simcall_answer(simcall);
543       break;  
544
545 case SIMCALL_RUN_KERNEL:
546        SIMIX_run_kernel( simcall->args[0].dp);
547       SIMIX_simcall_answer(simcall);
548       break;  
549
550 #ifdef HAVE_LATENCY_BOUND_TRACKING
551 case SIMCALL_COMM_IS_LATENCY_BOUNDED:
552       simcall->result.i = SIMIX_comm_is_latency_bounded((smx_synchro_t) simcall->args[0].dp);
553       SIMIX_simcall_answer(simcall);
554       break;  
555
556 #endif
557
558 #ifdef HAVE_MC
559 case SIMCALL_MC_SNAPSHOT:
560       simcall->result.dp = simcall_HANDLER_mc_snapshot(simcall );
561       SIMIX_simcall_answer(simcall);
562       break;  
563
564 case SIMCALL_MC_COMPARE_SNAPSHOTS:
565       simcall->result.i = simcall_HANDLER_mc_compare_snapshots(simcall , (mc_snapshot_t) simcall->args[0].dp, (mc_snapshot_t) simcall->args[1].dp);
566       SIMIX_simcall_answer(simcall);
567       break;  
568
569 #endif
570     case NUM_SIMCALLS:
571       break;
572     case SIMCALL_NONE:
573       THROWF(arg_error,0,"Asked to do the noop syscall on %s@%s",
574           SIMIX_process_get_name(simcall->issuer),
575           SIMIX_host_get_name(SIMIX_process_get_host(simcall->issuer))
576           );
577       break;
578
579   }
580 }