1 /*********************************************
2 * File Generated by src/simix/simcalls.py *
3 * from src/simix/simcalls.in *
4 * Do not modify this file, add new simcalls *
5 * in src/simix/simcalls.in *
6 *********************************************/
10 #include "smx_private.h"
12 #include "mc/mc_private.h"
15 XBT_LOG_EXTERNAL_DEFAULT_CATEGORY(simix_smurf);
18 * @brief unpack the simcall and activate the handler in kernel mode
20 void SIMIX_simcall_enter(smx_simcall_t simcall, int value)
22 XBT_DEBUG("Handling simcall %p: %s", simcall, SIMIX_simcall_name(simcall->call));
23 SIMCALL_SET_MC_VALUE(simcall, value);
24 if (simcall->issuer->context->iwannadie && simcall->call != SIMCALL_PROCESS_CLEANUP)
26 switch (simcall->call) {
27 case SIMCALL_HOST_GET_BY_NAME:
28 simcall->result.dp = SIMIX_pre_host_get_by_name(simcall , simcall->args[0].cc);
29 SIMIX_simcall_answer(simcall);
32 case SIMCALL_HOST_GET_NAME:
33 simcall->result.cc = SIMIX_pre_host_get_name(simcall , (smx_host_t) simcall->args[0].dp);
34 SIMIX_simcall_answer(simcall);
38 SIMIX_pre_host_on(simcall , (smx_host_t) simcall->args[0].dp);
39 SIMIX_simcall_answer(simcall);
42 case SIMCALL_HOST_OFF:
43 SIMIX_pre_host_off(simcall , (smx_host_t) simcall->args[0].dp);
44 SIMIX_simcall_answer(simcall);
47 case SIMCALL_HOST_GET_PROPERTIES:
48 simcall->result.dp = SIMIX_pre_host_get_properties(simcall , (smx_host_t) simcall->args[0].dp);
49 SIMIX_simcall_answer(simcall);
52 case SIMCALL_HOST_GET_CORE:
53 simcall->result.i = SIMIX_pre_host_get_core(simcall , (smx_host_t) simcall->args[0].dp);
54 SIMIX_simcall_answer(simcall);
57 case SIMCALL_HOST_GET_PROCESS_LIST:
58 simcall->result.dp = SIMIX_pre_host_get_process_list(simcall , (smx_host_t) simcall->args[0].dp);
59 SIMIX_simcall_answer(simcall);
62 case SIMCALL_HOST_GET_SPEED:
63 simcall->result.d = SIMIX_pre_host_get_speed(simcall , (smx_host_t) simcall->args[0].dp);
64 SIMIX_simcall_answer(simcall);
67 case SIMCALL_HOST_GET_AVAILABLE_SPEED:
68 simcall->result.d = SIMIX_pre_host_get_available_speed(simcall , (smx_host_t) simcall->args[0].dp);
69 SIMIX_simcall_answer(simcall);
72 case SIMCALL_HOST_GET_STATE:
73 simcall->result.i = SIMIX_pre_host_get_state(simcall , (smx_host_t) simcall->args[0].dp);
74 SIMIX_simcall_answer(simcall);
77 case SIMCALL_HOST_GET_CURRENT_POWER_PEAK:
78 simcall->result.d = SIMIX_pre_host_get_current_power_peak(simcall , (smx_host_t) simcall->args[0].dp);
79 SIMIX_simcall_answer(simcall);
82 case SIMCALL_HOST_GET_POWER_PEAK_AT:
83 simcall->result.d = SIMIX_pre_host_get_power_peak_at(simcall , (smx_host_t) simcall->args[0].dp, simcall->args[1].i);
84 SIMIX_simcall_answer(simcall);
87 case SIMCALL_HOST_GET_NB_PSTATES:
88 simcall->result.i = SIMIX_pre_host_get_nb_pstates(simcall , (smx_host_t) simcall->args[0].dp);
89 SIMIX_simcall_answer(simcall);
92 case SIMCALL_HOST_SET_POWER_PEAK_AT:
93 SIMIX_pre_host_set_power_peak_at(simcall , (smx_host_t) simcall->args[0].dp, simcall->args[1].i);
94 SIMIX_simcall_answer(simcall);
97 case SIMCALL_HOST_GET_CONSUMED_ENERGY:
98 simcall->result.d = SIMIX_pre_host_get_consumed_energy(simcall , (smx_host_t) simcall->args[0].dp);
99 SIMIX_simcall_answer(simcall);
102 case SIMCALL_HOST_EXECUTE:
103 simcall->result.dp = SIMIX_pre_host_execute(simcall , 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);
104 SIMIX_simcall_answer(simcall);
107 case SIMCALL_HOST_PARALLEL_EXECUTE:
108 simcall->result.dp = SIMIX_pre_host_parallel_execute(simcall , 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);
109 SIMIX_simcall_answer(simcall);
112 case SIMCALL_HOST_EXECUTION_DESTROY:
113 SIMIX_pre_host_execution_destroy(simcall , (smx_action_t) simcall->args[0].dp);
114 SIMIX_simcall_answer(simcall);
117 case SIMCALL_HOST_EXECUTION_CANCEL:
118 SIMIX_pre_host_execution_cancel(simcall , (smx_action_t) simcall->args[0].dp);
119 SIMIX_simcall_answer(simcall);
122 case SIMCALL_HOST_EXECUTION_GET_REMAINS:
123 simcall->result.d = SIMIX_pre_host_execution_get_remains(simcall , (smx_action_t) simcall->args[0].dp);
124 SIMIX_simcall_answer(simcall);
127 case SIMCALL_HOST_EXECUTION_GET_STATE:
128 simcall->result.i = SIMIX_pre_host_execution_get_state(simcall , (smx_action_t) simcall->args[0].dp);
129 SIMIX_simcall_answer(simcall);
132 case SIMCALL_HOST_EXECUTION_SET_PRIORITY:
133 SIMIX_pre_host_execution_set_priority(simcall , (smx_action_t) simcall->args[0].dp, simcall->args[1].d);
134 SIMIX_simcall_answer(simcall);
137 case SIMCALL_HOST_EXECUTION_SET_BOUND:
138 SIMIX_pre_host_execution_set_bound(simcall , (smx_action_t) simcall->args[0].dp, simcall->args[1].d);
139 SIMIX_simcall_answer(simcall);
142 case SIMCALL_HOST_EXECUTION_SET_AFFINITY:
143 SIMIX_pre_host_execution_set_affinity(simcall , (smx_action_t) simcall->args[0].dp, (smx_host_t) simcall->args[1].dp, simcall->args[2].ul);
144 SIMIX_simcall_answer(simcall);
147 case SIMCALL_HOST_EXECUTION_WAIT:
148 SIMIX_pre_host_execution_wait(simcall , (smx_action_t) simcall->args[0].dp);
151 case SIMCALL_HOST_GET_MOUNTED_STORAGE_LIST:
152 simcall->result.dp = SIMIX_pre_host_get_mounted_storage_list(simcall , (smx_host_t) simcall->args[0].dp);
153 SIMIX_simcall_answer(simcall);
156 case SIMCALL_HOST_GET_ATTACHED_STORAGE_LIST:
157 simcall->result.dp = SIMIX_pre_host_get_attached_storage_list(simcall , (smx_host_t) simcall->args[0].dp);
158 SIMIX_simcall_answer(simcall);
161 case SIMCALL_HOST_GET_PARAMS:
162 SIMIX_pre_host_get_params(simcall , (smx_host_t) simcall->args[0].dp, (ws_params_t) simcall->args[1].dp);
163 SIMIX_simcall_answer(simcall);
166 case SIMCALL_HOST_SET_PARAMS:
167 SIMIX_pre_host_set_params(simcall , (smx_host_t) simcall->args[0].dp, (ws_params_t) simcall->args[1].dp);
168 SIMIX_simcall_answer(simcall);
171 case SIMCALL_VM_CREATE:
172 simcall->result.dp = SIMIX_pre_vm_create(simcall , simcall->args[0].cc, (smx_host_t) simcall->args[1].dp);
173 SIMIX_simcall_answer(simcall);
176 case SIMCALL_VM_START:
177 SIMIX_pre_vm_start(simcall , (smx_host_t) simcall->args[0].dp);
178 SIMIX_simcall_answer(simcall);
181 case SIMCALL_VM_GET_STATE:
182 simcall->result.i = SIMIX_pre_vm_get_state(simcall , (smx_host_t) simcall->args[0].dp);
183 SIMIX_simcall_answer(simcall);
186 case SIMCALL_VM_MIGRATE:
187 SIMIX_pre_vm_migrate(simcall , (smx_host_t) simcall->args[0].dp, (smx_host_t) simcall->args[1].dp);
188 SIMIX_simcall_answer(simcall);
191 case SIMCALL_VM_GET_PM:
192 simcall->result.dp = SIMIX_pre_vm_get_pm(simcall , (smx_host_t) simcall->args[0].dp);
193 SIMIX_simcall_answer(simcall);
196 case SIMCALL_VM_SET_BOUND:
197 SIMIX_pre_vm_set_bound(simcall , (smx_host_t) simcall->args[0].dp, simcall->args[1].d);
198 SIMIX_simcall_answer(simcall);
201 case SIMCALL_VM_SET_AFFINITY:
202 SIMIX_pre_vm_set_affinity(simcall , (smx_host_t) simcall->args[0].dp, (smx_host_t) simcall->args[1].dp, simcall->args[2].ul);
203 SIMIX_simcall_answer(simcall);
206 case SIMCALL_VM_DESTROY:
207 SIMIX_pre_vm_destroy(simcall , (smx_host_t) simcall->args[0].dp);
208 SIMIX_simcall_answer(simcall);
211 case SIMCALL_VM_SUSPEND:
212 SIMIX_pre_vm_suspend(simcall , (smx_host_t) simcall->args[0].dp);
213 SIMIX_simcall_answer(simcall);
216 case SIMCALL_VM_RESUME:
217 SIMIX_pre_vm_resume(simcall , (smx_host_t) simcall->args[0].dp);
218 SIMIX_simcall_answer(simcall);
221 case SIMCALL_VM_SHUTDOWN:
222 SIMIX_pre_vm_shutdown(simcall , (smx_host_t) simcall->args[0].dp);
223 SIMIX_simcall_answer(simcall);
226 case SIMCALL_VM_SAVE:
227 SIMIX_pre_vm_save(simcall , (smx_host_t) simcall->args[0].dp);
228 SIMIX_simcall_answer(simcall);
231 case SIMCALL_VM_RESTORE:
232 SIMIX_pre_vm_restore(simcall , (smx_host_t) simcall->args[0].dp);
233 SIMIX_simcall_answer(simcall);
236 case SIMCALL_PROCESS_CREATE:
237 SIMIX_pre_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);
238 SIMIX_simcall_answer(simcall);
241 case SIMCALL_PROCESS_KILL:
242 SIMIX_pre_process_kill(simcall , (smx_process_t) simcall->args[0].dp);
243 SIMIX_simcall_answer(simcall);
246 case SIMCALL_PROCESS_KILLALL:
247 SIMIX_pre_process_killall(simcall , simcall->args[0].i);
248 SIMIX_simcall_answer(simcall);
251 case SIMCALL_PROCESS_CLEANUP:
252 SIMIX_pre_process_cleanup(simcall , (smx_process_t) simcall->args[0].dp);
253 SIMIX_simcall_answer(simcall);
256 case SIMCALL_PROCESS_CHANGE_HOST:
257 SIMIX_pre_process_change_host(simcall , (smx_process_t) simcall->args[0].dp, (smx_host_t) simcall->args[1].dp);
258 SIMIX_simcall_answer(simcall);
261 case SIMCALL_PROCESS_SUSPEND:
262 SIMIX_pre_process_suspend(simcall , (smx_process_t) simcall->args[0].dp);
265 case SIMCALL_PROCESS_RESUME:
266 SIMIX_pre_process_resume(simcall , (smx_process_t) simcall->args[0].dp);
267 SIMIX_simcall_answer(simcall);
270 case SIMCALL_PROCESS_COUNT:
271 simcall->result.i = SIMIX_pre_process_count(simcall );
272 SIMIX_simcall_answer(simcall);
275 case SIMCALL_PROCESS_GET_PID:
276 simcall->result.i = SIMIX_pre_process_get_PID(simcall , (smx_process_t) simcall->args[0].dp);
277 SIMIX_simcall_answer(simcall);
280 case SIMCALL_PROCESS_GET_PPID:
281 simcall->result.i = SIMIX_pre_process_get_PPID(simcall , (smx_process_t) simcall->args[0].dp);
282 SIMIX_simcall_answer(simcall);
285 case SIMCALL_PROCESS_GET_DATA:
286 simcall->result.dp = SIMIX_pre_process_get_data(simcall , (smx_process_t) simcall->args[0].dp);
287 SIMIX_simcall_answer(simcall);
290 case SIMCALL_PROCESS_SET_DATA:
291 SIMIX_pre_process_set_data(simcall , (smx_process_t) simcall->args[0].dp, simcall->args[1].dp);
292 SIMIX_simcall_answer(simcall);
295 case SIMCALL_PROCESS_GET_HOST:
296 simcall->result.dp = SIMIX_pre_process_get_host(simcall , (smx_process_t) simcall->args[0].dp);
297 SIMIX_simcall_answer(simcall);
300 case SIMCALL_PROCESS_GET_NAME:
301 simcall->result.cc = SIMIX_pre_process_get_name(simcall , (smx_process_t) simcall->args[0].dp);
302 SIMIX_simcall_answer(simcall);
305 case SIMCALL_PROCESS_IS_SUSPENDED:
306 simcall->result.i = SIMIX_pre_process_is_suspended(simcall , (smx_process_t) simcall->args[0].dp);
307 SIMIX_simcall_answer(simcall);
310 case SIMCALL_PROCESS_GET_PROPERTIES:
311 simcall->result.dp = SIMIX_pre_process_get_properties(simcall , (smx_process_t) simcall->args[0].dp);
312 SIMIX_simcall_answer(simcall);
315 case SIMCALL_PROCESS_JOIN:
316 SIMIX_pre_process_join(simcall , (smx_process_t) simcall->args[0].dp, simcall->args[1].d);
319 case SIMCALL_PROCESS_SLEEP:
320 SIMIX_pre_process_sleep(simcall , simcall->args[0].d);
323 case SIMCALL_PROCESS_ON_EXIT:
324 SIMIX_pre_process_on_exit(simcall , (smx_process_t) simcall->args[0].dp, (int_f_pvoid_pvoid_t) simcall->args[1].fp, simcall->args[2].dp);
325 SIMIX_simcall_answer(simcall);
328 case SIMCALL_PROCESS_AUTO_RESTART_SET:
329 SIMIX_pre_process_auto_restart_set(simcall , (smx_process_t) simcall->args[0].dp, simcall->args[1].i);
330 SIMIX_simcall_answer(simcall);
333 case SIMCALL_PROCESS_RESTART:
334 simcall->result.dp = SIMIX_pre_process_restart(simcall , (smx_process_t) simcall->args[0].dp);
335 SIMIX_simcall_answer(simcall);
338 case SIMCALL_RDV_CREATE:
339 simcall->result.dp = SIMIX_pre_rdv_create(simcall , simcall->args[0].cc);
340 SIMIX_simcall_answer(simcall);
343 case SIMCALL_RDV_DESTROY:
344 SIMIX_pre_rdv_destroy(simcall , (smx_rdv_t) simcall->args[0].dp);
345 SIMIX_simcall_answer(simcall);
348 case SIMCALL_RDV_COMM_COUNT_BY_HOST:
349 simcall->result.ui = SIMIX_pre_rdv_comm_count_by_host(simcall , (smx_rdv_t) simcall->args[0].dp, (smx_host_t) simcall->args[1].dp);
350 SIMIX_simcall_answer(simcall);
353 case SIMCALL_RDV_GET_HEAD:
354 simcall->result.dp = SIMIX_pre_rdv_get_head(simcall , (smx_rdv_t) simcall->args[0].dp);
355 SIMIX_simcall_answer(simcall);
358 case SIMCALL_RDV_SET_RECEIVER:
359 SIMIX_pre_rdv_set_receiver(simcall , (smx_rdv_t) simcall->args[0].dp, (smx_process_t) simcall->args[1].dp);
360 SIMIX_simcall_answer(simcall);
363 case SIMCALL_RDV_GET_RECEIVER:
364 simcall->result.dp = SIMIX_pre_rdv_get_receiver(simcall , (smx_rdv_t) simcall->args[0].dp);
365 SIMIX_simcall_answer(simcall);
368 case SIMCALL_COMM_IPROBE:
369 simcall->result.dp = SIMIX_pre_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);
370 SIMIX_simcall_answer(simcall);
373 case SIMCALL_COMM_SEND:
374 SIMIX_pre_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);
377 case SIMCALL_COMM_ISEND:
378 simcall->result.dp = SIMIX_pre_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);
379 SIMIX_simcall_answer(simcall);
382 case SIMCALL_COMM_RECV:
383 SIMIX_pre_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);
386 case SIMCALL_COMM_IRECV:
387 simcall->result.dp = SIMIX_pre_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);
388 SIMIX_simcall_answer(simcall);
391 case SIMCALL_COMM_CANCEL:
392 SIMIX_pre_comm_cancel(simcall , (smx_action_t) simcall->args[0].dp);
393 SIMIX_simcall_answer(simcall);
396 case SIMCALL_COMM_WAITANY:
397 SIMIX_pre_comm_waitany(simcall , (xbt_dynar_t) simcall->args[0].dp);
400 case SIMCALL_COMM_WAIT:
401 SIMIX_pre_comm_wait(simcall , (smx_action_t) simcall->args[0].dp, simcall->args[1].d);
404 case SIMCALL_COMM_TEST:
405 SIMIX_pre_comm_test(simcall , (smx_action_t) simcall->args[0].dp);
408 case SIMCALL_COMM_TESTANY:
409 SIMIX_pre_comm_testany(simcall , (xbt_dynar_t) simcall->args[0].dp);
412 case SIMCALL_COMM_GET_REMAINS:
413 simcall->result.d = SIMIX_pre_comm_get_remains(simcall , (smx_action_t) simcall->args[0].dp);
414 SIMIX_simcall_answer(simcall);
417 case SIMCALL_COMM_GET_STATE:
418 simcall->result.i = SIMIX_pre_comm_get_state(simcall , (smx_action_t) simcall->args[0].dp);
419 SIMIX_simcall_answer(simcall);
422 case SIMCALL_COMM_GET_SRC_DATA:
423 simcall->result.dp = SIMIX_pre_comm_get_src_data(simcall , (smx_action_t) simcall->args[0].dp);
424 SIMIX_simcall_answer(simcall);
427 case SIMCALL_COMM_GET_DST_DATA:
428 simcall->result.dp = SIMIX_pre_comm_get_dst_data(simcall , (smx_action_t) simcall->args[0].dp);
429 SIMIX_simcall_answer(simcall);
432 case SIMCALL_COMM_GET_SRC_PROC:
433 simcall->result.dp = SIMIX_pre_comm_get_src_proc(simcall , (smx_action_t) simcall->args[0].dp);
434 SIMIX_simcall_answer(simcall);
437 case SIMCALL_COMM_GET_DST_PROC:
438 simcall->result.dp = SIMIX_pre_comm_get_dst_proc(simcall , (smx_action_t) simcall->args[0].dp);
439 SIMIX_simcall_answer(simcall);
442 case SIMCALL_MUTEX_INIT:
443 simcall->result.dp = SIMIX_pre_mutex_init(simcall );
444 SIMIX_simcall_answer(simcall);
447 case SIMCALL_MUTEX_DESTROY:
448 SIMIX_pre_mutex_destroy(simcall , (smx_mutex_t) simcall->args[0].dp);
449 SIMIX_simcall_answer(simcall);
452 case SIMCALL_MUTEX_LOCK:
453 SIMIX_pre_mutex_lock(simcall , (smx_mutex_t) simcall->args[0].dp);
456 case SIMCALL_MUTEX_TRYLOCK:
457 simcall->result.i = SIMIX_pre_mutex_trylock(simcall , (smx_mutex_t) simcall->args[0].dp);
458 SIMIX_simcall_answer(simcall);
461 case SIMCALL_MUTEX_UNLOCK:
462 SIMIX_pre_mutex_unlock(simcall , (smx_mutex_t) simcall->args[0].dp);
463 SIMIX_simcall_answer(simcall);
466 case SIMCALL_COND_INIT:
467 simcall->result.dp = SIMIX_pre_cond_init(simcall );
468 SIMIX_simcall_answer(simcall);
471 case SIMCALL_COND_DESTROY:
472 SIMIX_pre_cond_destroy(simcall , (smx_cond_t) simcall->args[0].dp);
473 SIMIX_simcall_answer(simcall);
476 case SIMCALL_COND_SIGNAL:
477 SIMIX_pre_cond_signal(simcall , (smx_cond_t) simcall->args[0].dp);
478 SIMIX_simcall_answer(simcall);
481 case SIMCALL_COND_WAIT:
482 SIMIX_pre_cond_wait(simcall , (smx_cond_t) simcall->args[0].dp, (smx_mutex_t) simcall->args[1].dp);
485 case SIMCALL_COND_WAIT_TIMEOUT:
486 SIMIX_pre_cond_wait_timeout(simcall , (smx_cond_t) simcall->args[0].dp, (smx_mutex_t) simcall->args[1].dp, simcall->args[2].d);
489 case SIMCALL_COND_BROADCAST:
490 SIMIX_pre_cond_broadcast(simcall , (smx_cond_t) simcall->args[0].dp);
491 SIMIX_simcall_answer(simcall);
494 case SIMCALL_SEM_INIT:
495 simcall->result.dp = SIMIX_pre_sem_init(simcall , simcall->args[0].i);
496 SIMIX_simcall_answer(simcall);
499 case SIMCALL_SEM_DESTROY:
500 SIMIX_pre_sem_destroy(simcall , (smx_sem_t) simcall->args[0].dp);
501 SIMIX_simcall_answer(simcall);
504 case SIMCALL_SEM_RELEASE:
505 SIMIX_pre_sem_release(simcall , (smx_sem_t) simcall->args[0].dp);
506 SIMIX_simcall_answer(simcall);
509 case SIMCALL_SEM_WOULD_BLOCK:
510 simcall->result.i = SIMIX_pre_sem_would_block(simcall , (smx_sem_t) simcall->args[0].dp);
511 SIMIX_simcall_answer(simcall);
514 case SIMCALL_SEM_ACQUIRE:
515 SIMIX_pre_sem_acquire(simcall , (smx_sem_t) simcall->args[0].dp);
518 case SIMCALL_SEM_ACQUIRE_TIMEOUT:
519 SIMIX_pre_sem_acquire_timeout(simcall , (smx_sem_t) simcall->args[0].dp, simcall->args[1].d);
522 case SIMCALL_SEM_GET_CAPACITY:
523 simcall->result.i = SIMIX_pre_sem_get_capacity(simcall , (smx_sem_t) simcall->args[0].dp);
524 SIMIX_simcall_answer(simcall);
527 case SIMCALL_FILE_READ:
528 SIMIX_pre_file_read(simcall , (smx_file_t) simcall->args[0].dp, simcall->args[1].sgsz, (smx_host_t) simcall->args[2].dp);
531 case SIMCALL_FILE_WRITE:
532 SIMIX_pre_file_write(simcall , (smx_file_t) simcall->args[0].dp, simcall->args[1].sgsz, (smx_host_t) simcall->args[2].dp);
535 case SIMCALL_FILE_OPEN:
536 SIMIX_pre_file_open(simcall , simcall->args[0].cc, (smx_host_t) simcall->args[1].dp);
539 case SIMCALL_FILE_CLOSE:
540 SIMIX_pre_file_close(simcall , (smx_file_t) simcall->args[0].dp, (smx_host_t) simcall->args[1].dp);
543 case SIMCALL_FILE_UNLINK:
544 simcall->result.i = SIMIX_pre_file_unlink(simcall , (smx_file_t) simcall->args[0].dp, (smx_host_t) simcall->args[1].dp);
545 SIMIX_simcall_answer(simcall);
548 case SIMCALL_FILE_GET_SIZE:
549 simcall->result.sgsz = SIMIX_pre_file_get_size(simcall , (smx_file_t) simcall->args[0].dp);
550 SIMIX_simcall_answer(simcall);
553 case SIMCALL_FILE_TELL:
554 simcall->result.sgsz = SIMIX_pre_file_tell(simcall , (smx_file_t) simcall->args[0].dp);
555 SIMIX_simcall_answer(simcall);
558 case SIMCALL_FILE_SEEK:
559 simcall->result.i = SIMIX_pre_file_seek(simcall , (smx_file_t) simcall->args[0].dp, simcall->args[1].sgoff, simcall->args[2].i);
560 SIMIX_simcall_answer(simcall);
563 case SIMCALL_FILE_GET_INFO:
564 simcall->result.dp = SIMIX_pre_file_get_info(simcall , (smx_file_t) simcall->args[0].dp);
565 SIMIX_simcall_answer(simcall);
568 case SIMCALL_FILE_MOVE:
569 simcall->result.i = SIMIX_pre_file_move(simcall , (smx_file_t) simcall->args[0].dp, simcall->args[1].cc);
570 SIMIX_simcall_answer(simcall);
573 case SIMCALL_STORAGE_GET_FREE_SIZE:
574 simcall->result.sgsz = SIMIX_pre_storage_get_free_size(simcall , (smx_storage_t) simcall->args[0].dp);
575 SIMIX_simcall_answer(simcall);
578 case SIMCALL_STORAGE_GET_USED_SIZE:
579 simcall->result.sgsz = SIMIX_pre_storage_get_used_size(simcall , (smx_storage_t) simcall->args[0].dp);
580 SIMIX_simcall_answer(simcall);
583 case SIMCALL_STORAGE_GET_PROPERTIES:
584 simcall->result.dp = SIMIX_pre_storage_get_properties(simcall , (smx_storage_t) simcall->args[0].dp);
585 SIMIX_simcall_answer(simcall);
588 case SIMCALL_STORAGE_GET_CONTENT:
589 simcall->result.dp = SIMIX_pre_storage_get_content(simcall , (smx_storage_t) simcall->args[0].dp);
590 SIMIX_simcall_answer(simcall);
593 case SIMCALL_ASR_GET_PROPERTIES:
594 simcall->result.dp = SIMIX_pre_asr_get_properties(simcall , simcall->args[0].cc);
595 SIMIX_simcall_answer(simcall);
598 #ifdef HAVE_LATENCY_BOUND_TRACKING
599 case SIMCALL_COMM_IS_LATENCY_BOUNDED:
600 simcall->result.i = SIMIX_pre_comm_is_latency_bounded(simcall , (smx_action_t) simcall->args[0].dp);
601 SIMIX_simcall_answer(simcall);
607 case SIMCALL_SET_CATEGORY:
608 SIMIX_pre_set_category(simcall , (smx_action_t) simcall->args[0].dp, simcall->args[1].cc);
609 SIMIX_simcall_answer(simcall);
615 case SIMCALL_MC_SNAPSHOT:
616 simcall->result.dp = SIMIX_pre_mc_snapshot(simcall );
617 SIMIX_simcall_answer(simcall);
620 case SIMCALL_MC_COMPARE_SNAPSHOTS:
621 simcall->result.i = SIMIX_pre_mc_compare_snapshots(simcall , simcall->args[0].dp, simcall->args[1].dp);
622 SIMIX_simcall_answer(simcall);
625 case SIMCALL_MC_RANDOM:
626 simcall->result.i = SIMIX_pre_mc_random(simcall , simcall->args[0].i, simcall->args[1].i);
627 SIMIX_simcall_answer(simcall);
635 THROWF(arg_error,0,"Asked to do the noop syscall on %s@%s",
636 SIMIX_process_get_name(simcall->issuer),
637 SIMIX_host_get_name(SIMIX_process_get_host(simcall->issuer))
641 /* ****************************************************************************************** */
642 /* TUTORIAL: New API */
643 /* ****************************************************************************************** */
644 case SIMCALL_NEW_API_INIT:
645 SIMIX_pre_new_api_fct(simcall);