Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Simcalls generated by python script
authorPaul Bédaride <paul.bedaride@ptitpoulpe.fr>
Wed, 29 Jan 2014 22:05:00 +0000 (23:05 +0100)
committerPaul Bédaride <paul.bedaride@ptitpoulpe.fr>
Wed, 29 Jan 2014 22:06:26 +0000 (23:06 +0100)
13 files changed:
buildtools/Cmake/MaintainerMode.cmake
buildtools/Cmake/MakeLib.cmake
src/simix/simcalls.in [new file with mode: 0644]
src/simix/simcalls.py [new file with mode: 0755]
src/simix/simcalls_generated_args_getter_setter.h [new file with mode: 0644]
src/simix/simcalls_generated_body.c [new file with mode: 0644]
src/simix/simcalls_generated_case.c [new file with mode: 0644]
src/simix/simcalls_generated_enum.h [new file with mode: 0644]
src/simix/simcalls_generated_res_getter_setter.h [new file with mode: 0644]
src/simix/simcalls_generated_string.c [new file with mode: 0644]
src/simix/smx_smurf.c
src/simix/smx_smurf_private.h
src/simix/smx_user.c

index d5fdcad..cd89912 100644 (file)
@@ -4,6 +4,42 @@ set(FLEXML_MIN_MINOR 9)
 set(FLEXML_MIN_PATCH 6)
 
 # the rest should only be changed if you understand what you're doing
 set(FLEXML_MIN_PATCH 6)
 
 # the rest should only be changed if you understand what you're doing
+if(enable_maintainer_mode AND NOT WIN32)
+  find_program(PYTHON_EXE NAMES python)
+  if (PYTHON_EXE)
+    add_custom_command(
+      OUTPUT
+      ${CMAKE_HOME_DIRECTORY}/src/simix/simcalls_generated_enum.h
+      ${CMAKE_HOME_DIRECTORY}/src/simix/simcalls_generated_string.c
+      ${CMAKE_HOME_DIRECTORY}/src/simix/simcalls_generated_res_getter_setter.h
+      ${CMAKE_HOME_DIRECTORY}/src/simix/simcalls_generated_args_getter_setter.h
+      ${CMAKE_HOME_DIRECTORY}/src/simix/simcalls_generated_case.c
+      ${CMAKE_HOME_DIRECTORY}/src/simix/simcalls_generated_body.c
+      
+      DEPENDS
+      ${CMAKE_HOME_DIRECTORY}/src/simix/simcalls.py
+      ${CMAKE_HOME_DIRECTORY}/src/simix/simcalls.in
+
+      COMMENT "Generating simcalls source files"
+      COMMAND ${PYTHON_EXE} simcalls.py
+      WORKING_DIRECTORY ${CMAKE_HOME_DIRECTORY}/src/simix/
+      )
+
+    add_custom_target(simcalls_generated_src
+      DEPENDS
+      ${CMAKE_HOME_DIRECTORY}/src/simix/simcalls_generated_enum.h
+      ${CMAKE_HOME_DIRECTORY}/src/simix/simcalls_generated_string.c
+      ${CMAKE_HOME_DIRECTORY}/src/simix/simcalls_generated_res_getter_setter.h
+      ${CMAKE_HOME_DIRECTORY}/src/simix/simcalls_generated_args_getter_setter.h
+      ${CMAKE_HOME_DIRECTORY}/src/simix/simcalls_generated_case.c
+      ${CMAKE_HOME_DIRECTORY}/src/simix/simcalls_generated_body.c
+      )
+
+    SET_DIRECTORY_PROPERTIES(PROPERTIES ADDITIONAL_MAKE_CLEAN_FILES
+      "${CMAKE_HOME_DIRECTORY}/src/simix/simcalls_generated_enum.h;${CMAKE_HOME_DIRECTORY}/src/simix/simcalls_generated_string.c;${CMAKE_HOME_DIRECTORY}/src/simix/simcalls_generated_res_getter_setter.h;${CMAKE_HOME_DIRECTORY}/src/simix/simcalls_generated_args_getter_setter.h;${CMAKE_HOME_DIRECTORY}/src/simix/simcalls_generated_case.c;${CMAKE_HOME_DIRECTORY}/src/simix/simcalls_generated_body.c"
+      )
+  endif()
+endif()
 
 if(enable_maintainer_mode AND NOT WIN32)
   find_program(FLEX_EXE NAMES flex)
 
 if(enable_maintainer_mode AND NOT WIN32)
   find_program(FLEX_EXE NAMES flex)
index 8ee81ad..adcd92e 100644 (file)
@@ -140,6 +140,9 @@ endif()
 
 # Dependencies from maintainer mode
 ###################################
 
 # Dependencies from maintainer mode
 ###################################
+if(enable_maintainer_mode AND PYTHON_EXE)
+  add_dependencies(simgrid simcalls_generated_src)
+endif()
 if(enable_maintainer_mode AND BISON_EXE AND LEX_EXE)
   add_dependencies(simgrid automaton_generated_src)
 endif()
 if(enable_maintainer_mode AND BISON_EXE AND LEX_EXE)
   add_dependencies(simgrid automaton_generated_src)
 endif()
diff --git a/src/simix/simcalls.in b/src/simix/simcalls.in
new file mode 100644 (file)
index 0000000..874b0bb
--- /dev/null
@@ -0,0 +1,135 @@
+# name has_answer (restype,rescast) (arg0name,arg0type,arg0cast) (arg1name,arg1type,arg1cast)
+host_get_by_name True (void*, smx_host_t) (name, const char*)
+host_get_name True (const char*) (host, void*, smx_host_t)
+host_on True (void) (host, void*, smx_host_t)
+host_off True (void) (host, void*, smx_host_t)
+host_get_properties True (void*, xbt_dict_t) (host, void*, smx_host_t)
+host_get_core True (int) (host, void*, smx_host_t)
+host_get_process_list True (void*, xbt_swag_t) (host, void*, smx_host_t)
+host_get_speed True (double) (host, void*, smx_host_t)
+host_get_available_speed True (double) (host, void*, smx_host_t)
+host_get_state True (int) (host, void*, smx_host_t)
+host_get_data True (void*) (host, void*, smx_host_t)
+host_set_data True (void) (host, void*, smx_host_t) (data, void*)
+host_get_current_power_peak True (double) (host, void*, smx_host_t)
+host_get_power_peak_at True (double) (host, void*, smx_host_t) (pstate_index, int)
+host_get_nb_pstates True (int) (host, void*, smx_host_t)
+host_set_power_peak_at True (void) (host, void*, smx_host_t) (pstate_index, int)
+host_get_consumed_energy True (double) (host, void*, smx_host_t)
+host_execute True (void*, smx_action_t) (name, const char*) (host, void*, smx_host_t) (computation_amount, double) (priority, double) (bound, double) (affinity_mask, unsigned long)
+host_parallel_execute True (void*, smx_action_t) (name, const char*) (host_nb, int) (host_list, void*, smx_host_t*) (computation_amount, void*, double*) (communication_amount, void*, double*) (amount, double) (rate, double)
+host_execution_destroy True (void) (execution, void*, smx_action_t)
+host_execution_cancel True (void) (execution, void*, smx_action_t)
+host_execution_get_remains True (double) (execution, void*, smx_action_t)
+host_execution_get_state True (int) (execution, void*, smx_action_t)
+host_execution_set_priority True (void) (execution, void*, smx_action_t) (priority, double)
+host_execution_set_bound True (void) (execution, void*, smx_action_t) (bound, double)
+host_execution_set_affinity True (void) (execution, void*, smx_action_t) (ws, void*, smx_host_t) (mask, unsigned long)
+host_execution_wait False (int) (execution, void*, smx_action_t)
+host_get_storage_list True (void*, xbt_dict_t) (host, void*, smx_host_t)
+host_get_params True (void) (ind_vm, void*, smx_host_t) (params, void*, ws_params_t)
+host_set_params True (void) (ind_vm, void*, smx_host_t) (params, void*, ws_params_t)
+vm_create True (void*) (name, const char*) (ind_pm, void*, smx_host_t)
+vm_start True (void) (ind_vm, void*, smx_host_t)
+vm_set_state True (void) (ind_vm, void*, smx_host_t) (state, int)
+vm_get_state True (int) (ind_vm, void*, smx_host_t)
+vm_migrate True (void) (ind_vm, void*, smx_host_t) (ind_dst_pm, void*, smx_host_t)
+vm_get_pm True (void*) (ind_vm, void*, smx_host_t)
+vm_set_bound True (void) (ind_vm, void*, smx_host_t) (bound, double)
+vm_set_affinity True (void) (ind_vm, void*, smx_host_t) (ind_pm, void*, smx_host_t) (mask, unsigned long)
+vm_destroy True (void) (ind_vm, void*, smx_host_t)
+vm_suspend True (void) (ind_vm, void*, smx_host_t)
+vm_resume True (void) (ind_vm, void*, smx_host_t)
+vm_shutdown True (void) (ind_vm, void*, smx_host_t)
+vm_save True (void) (ind_vm, void*, smx_host_t)
+vm_restore True (void) (ind_vm, void*, smx_host_t)
+process_create True (void) (process, void*, smx_process_t*) (name, const char*) (code, FPtr, xbt_main_func_t) (data, void*) (hostname, const char*) (kill_time, double) (argc, int) (argv, void*, char**) (properties, void*, xbt_dict_t) (auto_restart, int)
+process_kill True (void) (process, void*, smx_process_t)
+process_killall True (void) (reset_pid, int)
+process_cleanup True (void) (process, void*, smx_process_t)
+process_change_host True (void) (process, void*, smx_process_t) (dest, void*, smx_host_t)
+process_suspend False (void) (process, void*, smx_process_t)
+process_resume True (void) (process, void*, smx_process_t)
+process_count True (int) 
+process_get_PID True (int) (process, void*, smx_process_t)
+process_get_PPID True (int) (process, void*, smx_process_t)
+process_get_data True (void*) (process, void*, smx_process_t)
+process_set_data True (void) (process, void*, smx_process_t) (data, void*)
+process_get_host True (void*, smx_host_t) (process, void*, smx_process_t)
+process_get_name True (const char*) (process, void*, smx_process_t)
+process_is_suspended True (int) (process, void*, smx_process_t)
+process_get_properties True (void*, xbt_dict_t) (process, void*, smx_process_t)
+process_sleep False (int) (duration, double)
+process_on_exit True (void) (process, void*, smx_process_t) (fun, FPtr, int_f_pvoid_t) (data, void*)
+process_auto_restart_set True (void) (process, void*, smx_process_t) (auto_restart, int)
+process_restart True (void*, smx_process_t) (process, void*, smx_process_t)
+rdv_create True (void*, smx_rdv_t) (name, const char*)
+rdv_destroy True (void) (rdv, void*, smx_rdv_t)
+rdv_get_by_name True (void*, smx_host_t) (name, const char*)
+rdv_comm_count_by_host True (unsigned int) (rdv, void*, smx_rdv_t) (host, void*, smx_host_t)
+rdv_get_head True (void*, smx_action_t) (rdv, void*, smx_rdv_t)
+rdv_set_receiver True (void) (rdv, void*, smx_rdv_t) (receiver, void*, smx_process_t)
+rdv_get_receiver True (void*, smx_process_t) (rdv, void*, smx_rdv_t)
+comm_iprobe True (void*, smx_action_t) (rdv, void*, smx_rdv_t) (src, int) (tag, int) (match_fun, FPtr, simix_match_func_t) (data, void*)
+comm_send False (void) (rdv, void*, smx_rdv_t) (task_size, double) (rate, double) (src_buff, void*) (src_buff_size, size_t) (match_fun, FPtr, simix_match_func_t) (data, void*) (timeout, double)
+comm_isend True (void*, smx_action_t) (rdv, void*, smx_rdv_t) (task_size, double) (rate, double) (src_buff, void*) (src_buff_size, size_t) (match_fun, FPtr, simix_match_func_t) (clean_fun, FPtr, simix_clean_func_t) (data, void*) (detached, int)
+comm_recv False (void) (rdv, void*, smx_rdv_t) (dst_buff, void*) (dst_buff_size, void*, size_t*) (match_fun, FPtr, simix_match_func_t) (data, void*) (timeout, double)
+comm_irecv True (void*, smx_action_t) (rdv, void*, smx_rdv_t) (dst_buff, void*) (dst_buff_size, void*, size_t*) (match_fun, FPtr, simix_match_func_t) (data, void*)
+comm_recv_bounded False (void) (rdv, void*, smx_rdv_t) (dst_buff, void*) (dst_buff_size, void*, size_t*) (match_fun, FPtr, simix_match_func_t) (data, void*) (timeout, double) (rate, double)
+comm_irecv_bounded True (void*, smx_action_t) (rdv, void*, smx_rdv_t) (dst_buff, void*) (dst_buff_size, void*, size_t*) (match_fun, FPtr, simix_match_func_t) (data, void*) (rate, double)
+comm_destroy True (void) (comm, void*, smx_action_t)
+comm_cancel True (void) (comm, void*, smx_action_t)
+comm_waitany False (int) (comms, void*, xbt_dynar_t)
+comm_wait False (void) (comm, void*, smx_action_t) (timeout, double)
+comm_test False (int) (comm, void*, smx_action_t)
+comm_testany False (int) (comms, void*, xbt_dynar_t)
+comm_get_remains True (double) (comm, void*, smx_action_t)
+comm_get_state True (int) (comm, void*, smx_action_t)
+comm_get_src_data True (void*) (comm, void*, smx_action_t)
+comm_get_dst_data True (void*) (comm, void*, smx_action_t)
+comm_get_src_proc True (void*, smx_process_t) (comm, void*, smx_action_t)
+comm_get_dst_proc True (void*, smx_process_t) (comm, void*, smx_action_t)
+mutex_init True (void*, smx_mutex_t) 
+mutex_destroy True (void) (mutex, void*, smx_mutex_t)
+mutex_lock False (void) (mutex, void*, smx_mutex_t)
+mutex_trylock True (int) (mutex, void*, smx_mutex_t)
+mutex_unlock True (void) (mutex, void*, smx_mutex_t)
+cond_init True (void*, smx_cond_t) 
+cond_destroy True (void) (cond, void*, smx_cond_t)
+cond_signal True (void) (cond, void*, smx_cond_t)
+cond_wait False (void) (cond, void*, smx_cond_t) (mutex, void*, smx_mutex_t)
+cond_wait_timeout False (void) (cond, void*, smx_cond_t) (mutex, void*, smx_mutex_t) (timeout, double)
+cond_broadcast True (void) (cond, void*, smx_cond_t)
+sem_init True (void*, smx_sem_t) (capacity, int)
+sem_destroy True (void) (sem, void*, smx_sem_t)
+sem_release True (void) (sem, void*, smx_sem_t)
+sem_would_block True (int) (sem, void*, smx_sem_t)
+sem_acquire False (void) (sem, void*, smx_sem_t)
+sem_acquire_timeout False (void) (sem, void*, smx_sem_t) (timeout, double)
+sem_get_capacity True (int) (sem, void*, smx_sem_t)
+file_get_data True (void*) (fd, void*, smx_file_t)
+file_set_data True (void) (fd, void*, smx_file_t) (data, void*)
+file_read False (sg_size_t) (fd, void*, smx_file_t) (size, sg_size_t)
+file_write False (sg_size_t) (fd, void*, smx_file_t) (size, sg_size_t)
+file_open False (void*, smx_file_t) (mount, const char*) (path, const char*)
+file_close False (int) (fd, void*, smx_file_t)
+file_unlink True (int) (fd, void*, smx_file_t)
+file_ls False (void*, xbt_dict_t) (mount, const char*) (path, const char*)
+file_get_size True (sg_size_t) (fd, void*, smx_file_t)
+file_tell True (sg_size_t) (fd, void*, smx_file_t)
+file_seek True (int) (fd, void*, smx_file_t) (offset, sg_size_t) (origin, int)
+file_get_info True (void*, xbt_dynar_t) (fd, void*, smx_file_t)
+storage_file_rename True (void) (storage, void*, smx_storage_t) (src, const char*) (dest, const char*)
+storage_get_free_size True (sg_size_t) (name, const char*)
+storage_get_used_size True (sg_size_t) (name, const char*)
+storage_get_properties True (void*, xbt_dict_t) (storage, void*, smx_storage_t)
+storage_get_content True (void*, xbt_dict_t) (storage, void*, smx_storage_t)
+asr_get_properties True (void*, xbt_dict_t) (name, const char*)
+## HAVE_LATENCY_BOUND_TRACKING
+comm_is_latency_bounded True (int) (comm, void*, smx_action_t)
+## HAVE_TRACING
+set_category True (void) (action, void*, smx_action_t) (category, const char*)
+## HAVE_MC
+mc_snapshot True (void*) 
+mc_compare_snapshots True (int) (s1, void*) (s2, void*)
+mc_random True (int) (min, int) (max, int)
diff --git a/src/simix/simcalls.py b/src/simix/simcalls.py
new file mode 100755 (executable)
index 0000000..e0f9a2e
--- /dev/null
@@ -0,0 +1,161 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+import re
+
+types = [('TCHAR', 'char', 'c')
+        ,('TSTRING', 'const char*', 'cc')
+        ,('TINT', 'int', 'i')
+        ,('TLONG', 'long', 'l')
+        ,('TUCHAR', 'unsigned char', 'uc')
+        ,('TUSHORT', 'unsigned short', 'us')
+        ,('TUINT', 'unsigned int', 'ui')
+        ,('TULONG', 'unsigned long', 'ul')
+        ,('TFLOAT', 'float', 'f')
+        ,('TDOUBLE', 'double', 'd')
+        ,('TDPTR', 'void*', 'dp')
+        ,('TFPTR', 'FPtr', 'fp')
+        ,('TCPTR', 'const void*', 'cp')
+        ,('TSIZE', 'size_t', 'sz')
+        ,('TSGSIZE', 'sg_size_t', 'sgsz')
+        ,('TVOID', 'void', '')
+        ,('TDSPEC', 'void*', 'dp')
+        ,('TFSPEC', 'FPtr', 'fp')]
+
+class Arg(object):
+  simcall_types = {k:v for _,k,v in types}
+  def __init__(self, name, type, casted=None):
+    self.name = name 
+    self.type = type
+    self.casted = casted
+    assert type in self.simcall_types, '%s not in (%s)'%(type, ', '.join(self.simcall_types.keys()))
+
+  def field(self):
+    return self.simcall_types[self.type]
+
+  def ret(self):
+    return '%s'%self.casted if self.casted else self.type
+
+  def cast(self):
+    return '(%s)'%self.casted if self.casted else '' 
+
+class Simcall(object):
+  def __init__(self, name, res, args, has_answer=True):
+    self.name = name
+    self.res = res
+    self.args = args
+    self.has_answer = has_answer
+
+  def enum(self):
+    return 'SIMCALL_%s,'%(self.name.upper())
+
+  def string(self):
+    return '[SIMCALL_%s] = "SIMCALL_%s",'%(self.name.upper(), self.name.upper())       
+  
+  def result_getter_setter(self):
+    return '%s\n%s'%(self.result_getter(), self.result_setter())
+  
+  def result_getter(self):
+    return '' if self.res.type == 'void' else '''static inline %s simcall_%s__get__result(smx_simcall_t simcall){
+  return %s simcall->result.%s;
+}'''%(self.res.ret(), self.name, self.res.cast(), self.res.field())
+
+  def result_setter(self):
+    return '' if self.res.type == 'void' else '''static inline void simcall_%s__set__result(smx_simcall_t simcall, %s result){
+    simcall->result.%s = result;
+}'''%(self.name, self.res.type, self.res.field())
+
+  def args_getter_setter(self):
+    res = []
+    for i in range(len(self.args)):
+      res.append(self.arg_getter(i))
+      res.append(self.arg_setter(i))
+    return '\n'.join(res)
+
+  def arg_getter(self, i):
+    arg = self.args[i]
+    return '''static inline %s simcall_%s__get__%s(smx_simcall_t simcall){
+  return %s simcall->args[%i].%s;
+}'''%(arg.ret(), self.name, arg.name, arg.cast(), i, arg.field())
+
+  def arg_setter(self, i):
+    arg = self.args[i]
+    return '''static inline void simcall_%s__set__%s(smx_simcall_t simcall, %s arg){
+    simcall->args[%i].%s = arg;
+}'''%(self.name, arg.name, arg.type, i, arg.field())
+
+  def case(self):
+    return '''case SIMCALL_%s:
+      %sSIMIX_pre_%s(simcall %s);
+      %s
+      break;  
+'''%(self.name.upper(), 
+     'simcall->result.%s = '%self.res.field() if self.res.type != 'void' and self.has_answer else ' ',
+     self.name,
+     ''.join(', %s simcall->args[%d].%s'%(arg.cast(), i, arg.field()) 
+             for i, arg in enumerate(self.args)),
+     'SIMIX_simcall_answer(simcall);' if self.has_answer else ' ')
+
+  def body(self):
+    return '''  inline static %s simcall_BODY_%s(%s) {
+    smx_process_t self = SIMIX_process_self();
+    self->simcall.call = SIMCALL_%s;
+    memset(&self->simcall.result, 0, sizeof(self->simcall.result));
+    memset(self->simcall.args, 0, sizeof(self->simcall.args));
+%s
+    if (self != simix_global->maestro_process) {
+      XBT_DEBUG("Yield process '%%s' on simcall %%s (%%d)", self->name,
+                SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
+      SIMIX_process_yield(self);
+    } else {
+      SIMIX_simcall_pre(&self->simcall, 0);
+    }    
+    %s
+  }'''%(self.res.ret()
+       ,self.name
+       ,', '.join('%s %s'%(arg.ret(), arg.name)
+                  for arg in self.args)
+       ,self.name.upper()
+       ,'\n'.join('    self->simcall.args[%d].%s = (%s) %s;'%(i, arg.field(), arg.type, arg.name)
+                  for i, arg in enumerate(self.args))
+       ,'' if self.res.type == 'void' else 'return self->simcall.result.%s;'%self.res.field())
+
+def parse(fn):
+  res = []
+  resdi = None
+  resd = {}
+  for line in open(fn).read().split('\n'):
+    if line.startswith('##'):
+      resdi = []
+      resd[re.search(r'## *(.*)', line).group(1)] = resdi
+    if line.startswith('#') or not line:
+      continue
+    match = re.match(r'(\S*?) *(\S*?) *\((.*?)(?:, *(.*?))?\) *(.*)', line)
+    assert match, line
+    name, ans, rest, resc, args = match.groups()
+    sargs = []
+    for n,t,c in re.findall(r'\((.*?), *(.*?)(?:, *(.*?))?\)', args):
+      sargs.append(Arg(n,t,c))
+    sim = Simcall(name, Arg('result', rest, resc), sargs, ans == 'True')
+    if resdi is None:
+      res.append(sim)
+    else:
+      resdi.append(sim)
+  return res, resd
+
+def write(fn, func, scs, scd):
+  f = open(fn, 'w')
+  f.write('\n'.join(func(sc) for sc in scs))
+  for k, v in scd.items():
+    f.write('\n#ifdef %s\n%s\n#endif\n'%(k, '\n'.join(func(sc) for sc in v)))
+  f.close()
+
+if __name__=='__main__':
+  simcalls, simcalls_dict = parse('simcalls.in')
+
+  write('simcalls_generated_enum.h', Simcall.enum, simcalls, simcalls_dict)
+  write('simcalls_generated_string.c', Simcall.string, simcalls, simcalls_dict)
+  write('simcalls_generated_res_getter_setter.h', Simcall.result_getter_setter, simcalls, simcalls_dict)
+  write('simcalls_generated_args_getter_setter.h', Simcall.args_getter_setter, simcalls, simcalls_dict)
+  write('simcalls_generated_case.c', Simcall.case, simcalls, simcalls_dict)
+  write('simcalls_generated_body.c', Simcall.body, simcalls, simcalls_dict)
+
diff --git a/src/simix/simcalls_generated_args_getter_setter.h b/src/simix/simcalls_generated_args_getter_setter.h
new file mode 100644 (file)
index 0000000..155b57d
--- /dev/null
@@ -0,0 +1,1362 @@
+static inline const char* simcall_host_get_by_name__get__name(smx_simcall_t simcall){
+  return  simcall->args[0].cc;
+}
+static inline void simcall_host_get_by_name__set__name(smx_simcall_t simcall, const char* arg){
+    simcall->args[0].cc = arg;
+}
+static inline smx_host_t simcall_host_get_name__get__host(smx_simcall_t simcall){
+  return (smx_host_t) simcall->args[0].dp;
+}
+static inline void simcall_host_get_name__set__host(smx_simcall_t simcall, void* arg){
+    simcall->args[0].dp = arg;
+}
+static inline smx_host_t simcall_host_on__get__host(smx_simcall_t simcall){
+  return (smx_host_t) simcall->args[0].dp;
+}
+static inline void simcall_host_on__set__host(smx_simcall_t simcall, void* arg){
+    simcall->args[0].dp = arg;
+}
+static inline smx_host_t simcall_host_off__get__host(smx_simcall_t simcall){
+  return (smx_host_t) simcall->args[0].dp;
+}
+static inline void simcall_host_off__set__host(smx_simcall_t simcall, void* arg){
+    simcall->args[0].dp = arg;
+}
+static inline smx_host_t simcall_host_get_properties__get__host(smx_simcall_t simcall){
+  return (smx_host_t) simcall->args[0].dp;
+}
+static inline void simcall_host_get_properties__set__host(smx_simcall_t simcall, void* arg){
+    simcall->args[0].dp = arg;
+}
+static inline smx_host_t simcall_host_get_core__get__host(smx_simcall_t simcall){
+  return (smx_host_t) simcall->args[0].dp;
+}
+static inline void simcall_host_get_core__set__host(smx_simcall_t simcall, void* arg){
+    simcall->args[0].dp = arg;
+}
+static inline smx_host_t simcall_host_get_process_list__get__host(smx_simcall_t simcall){
+  return (smx_host_t) simcall->args[0].dp;
+}
+static inline void simcall_host_get_process_list__set__host(smx_simcall_t simcall, void* arg){
+    simcall->args[0].dp = arg;
+}
+static inline smx_host_t simcall_host_get_speed__get__host(smx_simcall_t simcall){
+  return (smx_host_t) simcall->args[0].dp;
+}
+static inline void simcall_host_get_speed__set__host(smx_simcall_t simcall, void* arg){
+    simcall->args[0].dp = arg;
+}
+static inline smx_host_t simcall_host_get_available_speed__get__host(smx_simcall_t simcall){
+  return (smx_host_t) simcall->args[0].dp;
+}
+static inline void simcall_host_get_available_speed__set__host(smx_simcall_t simcall, void* arg){
+    simcall->args[0].dp = arg;
+}
+static inline smx_host_t simcall_host_get_state__get__host(smx_simcall_t simcall){
+  return (smx_host_t) simcall->args[0].dp;
+}
+static inline void simcall_host_get_state__set__host(smx_simcall_t simcall, void* arg){
+    simcall->args[0].dp = arg;
+}
+static inline smx_host_t simcall_host_get_data__get__host(smx_simcall_t simcall){
+  return (smx_host_t) simcall->args[0].dp;
+}
+static inline void simcall_host_get_data__set__host(smx_simcall_t simcall, void* arg){
+    simcall->args[0].dp = arg;
+}
+static inline smx_host_t simcall_host_set_data__get__host(smx_simcall_t simcall){
+  return (smx_host_t) simcall->args[0].dp;
+}
+static inline void simcall_host_set_data__set__host(smx_simcall_t simcall, void* arg){
+    simcall->args[0].dp = arg;
+}
+static inline void* simcall_host_set_data__get__data(smx_simcall_t simcall){
+  return  simcall->args[1].dp;
+}
+static inline void simcall_host_set_data__set__data(smx_simcall_t simcall, void* arg){
+    simcall->args[1].dp = arg;
+}
+static inline smx_host_t simcall_host_get_current_power_peak__get__host(smx_simcall_t simcall){
+  return (smx_host_t) simcall->args[0].dp;
+}
+static inline void simcall_host_get_current_power_peak__set__host(smx_simcall_t simcall, void* arg){
+    simcall->args[0].dp = arg;
+}
+static inline smx_host_t simcall_host_get_power_peak_at__get__host(smx_simcall_t simcall){
+  return (smx_host_t) simcall->args[0].dp;
+}
+static inline void simcall_host_get_power_peak_at__set__host(smx_simcall_t simcall, void* arg){
+    simcall->args[0].dp = arg;
+}
+static inline int simcall_host_get_power_peak_at__get__pstate_index(smx_simcall_t simcall){
+  return  simcall->args[1].i;
+}
+static inline void simcall_host_get_power_peak_at__set__pstate_index(smx_simcall_t simcall, int arg){
+    simcall->args[1].i = arg;
+}
+static inline smx_host_t simcall_host_get_nb_pstates__get__host(smx_simcall_t simcall){
+  return (smx_host_t) simcall->args[0].dp;
+}
+static inline void simcall_host_get_nb_pstates__set__host(smx_simcall_t simcall, void* arg){
+    simcall->args[0].dp = arg;
+}
+static inline smx_host_t simcall_host_set_power_peak_at__get__host(smx_simcall_t simcall){
+  return (smx_host_t) simcall->args[0].dp;
+}
+static inline void simcall_host_set_power_peak_at__set__host(smx_simcall_t simcall, void* arg){
+    simcall->args[0].dp = arg;
+}
+static inline int simcall_host_set_power_peak_at__get__pstate_index(smx_simcall_t simcall){
+  return  simcall->args[1].i;
+}
+static inline void simcall_host_set_power_peak_at__set__pstate_index(smx_simcall_t simcall, int arg){
+    simcall->args[1].i = arg;
+}
+static inline smx_host_t simcall_host_get_consumed_energy__get__host(smx_simcall_t simcall){
+  return (smx_host_t) simcall->args[0].dp;
+}
+static inline void simcall_host_get_consumed_energy__set__host(smx_simcall_t simcall, void* arg){
+    simcall->args[0].dp = arg;
+}
+static inline const char* simcall_host_execute__get__name(smx_simcall_t simcall){
+  return  simcall->args[0].cc;
+}
+static inline void simcall_host_execute__set__name(smx_simcall_t simcall, const char* arg){
+    simcall->args[0].cc = arg;
+}
+static inline smx_host_t simcall_host_execute__get__host(smx_simcall_t simcall){
+  return (smx_host_t) simcall->args[1].dp;
+}
+static inline void simcall_host_execute__set__host(smx_simcall_t simcall, void* arg){
+    simcall->args[1].dp = arg;
+}
+static inline double simcall_host_execute__get__computation_amount(smx_simcall_t simcall){
+  return  simcall->args[2].d;
+}
+static inline void simcall_host_execute__set__computation_amount(smx_simcall_t simcall, double arg){
+    simcall->args[2].d = arg;
+}
+static inline double simcall_host_execute__get__priority(smx_simcall_t simcall){
+  return  simcall->args[3].d;
+}
+static inline void simcall_host_execute__set__priority(smx_simcall_t simcall, double arg){
+    simcall->args[3].d = arg;
+}
+static inline double simcall_host_execute__get__bound(smx_simcall_t simcall){
+  return  simcall->args[4].d;
+}
+static inline void simcall_host_execute__set__bound(smx_simcall_t simcall, double arg){
+    simcall->args[4].d = arg;
+}
+static inline unsigned long simcall_host_execute__get__affinity_mask(smx_simcall_t simcall){
+  return  simcall->args[5].ul;
+}
+static inline void simcall_host_execute__set__affinity_mask(smx_simcall_t simcall, unsigned long arg){
+    simcall->args[5].ul = arg;
+}
+static inline const char* simcall_host_parallel_execute__get__name(smx_simcall_t simcall){
+  return  simcall->args[0].cc;
+}
+static inline void simcall_host_parallel_execute__set__name(smx_simcall_t simcall, const char* arg){
+    simcall->args[0].cc = arg;
+}
+static inline int simcall_host_parallel_execute__get__host_nb(smx_simcall_t simcall){
+  return  simcall->args[1].i;
+}
+static inline void simcall_host_parallel_execute__set__host_nb(smx_simcall_t simcall, int arg){
+    simcall->args[1].i = arg;
+}
+static inline smx_host_t* simcall_host_parallel_execute__get__host_list(smx_simcall_t simcall){
+  return (smx_host_t*) simcall->args[2].dp;
+}
+static inline void simcall_host_parallel_execute__set__host_list(smx_simcall_t simcall, void* arg){
+    simcall->args[2].dp = arg;
+}
+static inline double* simcall_host_parallel_execute__get__computation_amount(smx_simcall_t simcall){
+  return (double*) simcall->args[3].dp;
+}
+static inline void simcall_host_parallel_execute__set__computation_amount(smx_simcall_t simcall, void* arg){
+    simcall->args[3].dp = arg;
+}
+static inline double* simcall_host_parallel_execute__get__communication_amount(smx_simcall_t simcall){
+  return (double*) simcall->args[4].dp;
+}
+static inline void simcall_host_parallel_execute__set__communication_amount(smx_simcall_t simcall, void* arg){
+    simcall->args[4].dp = arg;
+}
+static inline double simcall_host_parallel_execute__get__amount(smx_simcall_t simcall){
+  return  simcall->args[5].d;
+}
+static inline void simcall_host_parallel_execute__set__amount(smx_simcall_t simcall, double arg){
+    simcall->args[5].d = arg;
+}
+static inline double simcall_host_parallel_execute__get__rate(smx_simcall_t simcall){
+  return  simcall->args[6].d;
+}
+static inline void simcall_host_parallel_execute__set__rate(smx_simcall_t simcall, double arg){
+    simcall->args[6].d = arg;
+}
+static inline smx_action_t simcall_host_execution_destroy__get__execution(smx_simcall_t simcall){
+  return (smx_action_t) simcall->args[0].dp;
+}
+static inline void simcall_host_execution_destroy__set__execution(smx_simcall_t simcall, void* arg){
+    simcall->args[0].dp = arg;
+}
+static inline smx_action_t simcall_host_execution_cancel__get__execution(smx_simcall_t simcall){
+  return (smx_action_t) simcall->args[0].dp;
+}
+static inline void simcall_host_execution_cancel__set__execution(smx_simcall_t simcall, void* arg){
+    simcall->args[0].dp = arg;
+}
+static inline smx_action_t simcall_host_execution_get_remains__get__execution(smx_simcall_t simcall){
+  return (smx_action_t) simcall->args[0].dp;
+}
+static inline void simcall_host_execution_get_remains__set__execution(smx_simcall_t simcall, void* arg){
+    simcall->args[0].dp = arg;
+}
+static inline smx_action_t simcall_host_execution_get_state__get__execution(smx_simcall_t simcall){
+  return (smx_action_t) simcall->args[0].dp;
+}
+static inline void simcall_host_execution_get_state__set__execution(smx_simcall_t simcall, void* arg){
+    simcall->args[0].dp = arg;
+}
+static inline smx_action_t simcall_host_execution_set_priority__get__execution(smx_simcall_t simcall){
+  return (smx_action_t) simcall->args[0].dp;
+}
+static inline void simcall_host_execution_set_priority__set__execution(smx_simcall_t simcall, void* arg){
+    simcall->args[0].dp = arg;
+}
+static inline double simcall_host_execution_set_priority__get__priority(smx_simcall_t simcall){
+  return  simcall->args[1].d;
+}
+static inline void simcall_host_execution_set_priority__set__priority(smx_simcall_t simcall, double arg){
+    simcall->args[1].d = arg;
+}
+static inline smx_action_t simcall_host_execution_set_bound__get__execution(smx_simcall_t simcall){
+  return (smx_action_t) simcall->args[0].dp;
+}
+static inline void simcall_host_execution_set_bound__set__execution(smx_simcall_t simcall, void* arg){
+    simcall->args[0].dp = arg;
+}
+static inline double simcall_host_execution_set_bound__get__bound(smx_simcall_t simcall){
+  return  simcall->args[1].d;
+}
+static inline void simcall_host_execution_set_bound__set__bound(smx_simcall_t simcall, double arg){
+    simcall->args[1].d = arg;
+}
+static inline smx_action_t simcall_host_execution_set_affinity__get__execution(smx_simcall_t simcall){
+  return (smx_action_t) simcall->args[0].dp;
+}
+static inline void simcall_host_execution_set_affinity__set__execution(smx_simcall_t simcall, void* arg){
+    simcall->args[0].dp = arg;
+}
+static inline smx_host_t simcall_host_execution_set_affinity__get__ws(smx_simcall_t simcall){
+  return (smx_host_t) simcall->args[1].dp;
+}
+static inline void simcall_host_execution_set_affinity__set__ws(smx_simcall_t simcall, void* arg){
+    simcall->args[1].dp = arg;
+}
+static inline unsigned long simcall_host_execution_set_affinity__get__mask(smx_simcall_t simcall){
+  return  simcall->args[2].ul;
+}
+static inline void simcall_host_execution_set_affinity__set__mask(smx_simcall_t simcall, unsigned long arg){
+    simcall->args[2].ul = arg;
+}
+static inline smx_action_t simcall_host_execution_wait__get__execution(smx_simcall_t simcall){
+  return (smx_action_t) simcall->args[0].dp;
+}
+static inline void simcall_host_execution_wait__set__execution(smx_simcall_t simcall, void* arg){
+    simcall->args[0].dp = arg;
+}
+static inline smx_host_t simcall_host_get_storage_list__get__host(smx_simcall_t simcall){
+  return (smx_host_t) simcall->args[0].dp;
+}
+static inline void simcall_host_get_storage_list__set__host(smx_simcall_t simcall, void* arg){
+    simcall->args[0].dp = arg;
+}
+static inline smx_host_t simcall_host_get_params__get__ind_vm(smx_simcall_t simcall){
+  return (smx_host_t) simcall->args[0].dp;
+}
+static inline void simcall_host_get_params__set__ind_vm(smx_simcall_t simcall, void* arg){
+    simcall->args[0].dp = arg;
+}
+static inline ws_params_t simcall_host_get_params__get__params(smx_simcall_t simcall){
+  return (ws_params_t) simcall->args[1].dp;
+}
+static inline void simcall_host_get_params__set__params(smx_simcall_t simcall, void* arg){
+    simcall->args[1].dp = arg;
+}
+static inline smx_host_t simcall_host_set_params__get__ind_vm(smx_simcall_t simcall){
+  return (smx_host_t) simcall->args[0].dp;
+}
+static inline void simcall_host_set_params__set__ind_vm(smx_simcall_t simcall, void* arg){
+    simcall->args[0].dp = arg;
+}
+static inline ws_params_t simcall_host_set_params__get__params(smx_simcall_t simcall){
+  return (ws_params_t) simcall->args[1].dp;
+}
+static inline void simcall_host_set_params__set__params(smx_simcall_t simcall, void* arg){
+    simcall->args[1].dp = arg;
+}
+static inline const char* simcall_vm_create__get__name(smx_simcall_t simcall){
+  return  simcall->args[0].cc;
+}
+static inline void simcall_vm_create__set__name(smx_simcall_t simcall, const char* arg){
+    simcall->args[0].cc = arg;
+}
+static inline smx_host_t simcall_vm_create__get__ind_pm(smx_simcall_t simcall){
+  return (smx_host_t) simcall->args[1].dp;
+}
+static inline void simcall_vm_create__set__ind_pm(smx_simcall_t simcall, void* arg){
+    simcall->args[1].dp = arg;
+}
+static inline smx_host_t simcall_vm_start__get__ind_vm(smx_simcall_t simcall){
+  return (smx_host_t) simcall->args[0].dp;
+}
+static inline void simcall_vm_start__set__ind_vm(smx_simcall_t simcall, void* arg){
+    simcall->args[0].dp = arg;
+}
+static inline smx_host_t simcall_vm_set_state__get__ind_vm(smx_simcall_t simcall){
+  return (smx_host_t) simcall->args[0].dp;
+}
+static inline void simcall_vm_set_state__set__ind_vm(smx_simcall_t simcall, void* arg){
+    simcall->args[0].dp = arg;
+}
+static inline int simcall_vm_set_state__get__state(smx_simcall_t simcall){
+  return  simcall->args[1].i;
+}
+static inline void simcall_vm_set_state__set__state(smx_simcall_t simcall, int arg){
+    simcall->args[1].i = arg;
+}
+static inline smx_host_t simcall_vm_get_state__get__ind_vm(smx_simcall_t simcall){
+  return (smx_host_t) simcall->args[0].dp;
+}
+static inline void simcall_vm_get_state__set__ind_vm(smx_simcall_t simcall, void* arg){
+    simcall->args[0].dp = arg;
+}
+static inline smx_host_t simcall_vm_migrate__get__ind_vm(smx_simcall_t simcall){
+  return (smx_host_t) simcall->args[0].dp;
+}
+static inline void simcall_vm_migrate__set__ind_vm(smx_simcall_t simcall, void* arg){
+    simcall->args[0].dp = arg;
+}
+static inline smx_host_t simcall_vm_migrate__get__ind_dst_pm(smx_simcall_t simcall){
+  return (smx_host_t) simcall->args[1].dp;
+}
+static inline void simcall_vm_migrate__set__ind_dst_pm(smx_simcall_t simcall, void* arg){
+    simcall->args[1].dp = arg;
+}
+static inline smx_host_t simcall_vm_get_pm__get__ind_vm(smx_simcall_t simcall){
+  return (smx_host_t) simcall->args[0].dp;
+}
+static inline void simcall_vm_get_pm__set__ind_vm(smx_simcall_t simcall, void* arg){
+    simcall->args[0].dp = arg;
+}
+static inline smx_host_t simcall_vm_set_bound__get__ind_vm(smx_simcall_t simcall){
+  return (smx_host_t) simcall->args[0].dp;
+}
+static inline void simcall_vm_set_bound__set__ind_vm(smx_simcall_t simcall, void* arg){
+    simcall->args[0].dp = arg;
+}
+static inline double simcall_vm_set_bound__get__bound(smx_simcall_t simcall){
+  return  simcall->args[1].d;
+}
+static inline void simcall_vm_set_bound__set__bound(smx_simcall_t simcall, double arg){
+    simcall->args[1].d = arg;
+}
+static inline smx_host_t simcall_vm_set_affinity__get__ind_vm(smx_simcall_t simcall){
+  return (smx_host_t) simcall->args[0].dp;
+}
+static inline void simcall_vm_set_affinity__set__ind_vm(smx_simcall_t simcall, void* arg){
+    simcall->args[0].dp = arg;
+}
+static inline smx_host_t simcall_vm_set_affinity__get__ind_pm(smx_simcall_t simcall){
+  return (smx_host_t) simcall->args[1].dp;
+}
+static inline void simcall_vm_set_affinity__set__ind_pm(smx_simcall_t simcall, void* arg){
+    simcall->args[1].dp = arg;
+}
+static inline unsigned long simcall_vm_set_affinity__get__mask(smx_simcall_t simcall){
+  return  simcall->args[2].ul;
+}
+static inline void simcall_vm_set_affinity__set__mask(smx_simcall_t simcall, unsigned long arg){
+    simcall->args[2].ul = arg;
+}
+static inline smx_host_t simcall_vm_destroy__get__ind_vm(smx_simcall_t simcall){
+  return (smx_host_t) simcall->args[0].dp;
+}
+static inline void simcall_vm_destroy__set__ind_vm(smx_simcall_t simcall, void* arg){
+    simcall->args[0].dp = arg;
+}
+static inline smx_host_t simcall_vm_suspend__get__ind_vm(smx_simcall_t simcall){
+  return (smx_host_t) simcall->args[0].dp;
+}
+static inline void simcall_vm_suspend__set__ind_vm(smx_simcall_t simcall, void* arg){
+    simcall->args[0].dp = arg;
+}
+static inline smx_host_t simcall_vm_resume__get__ind_vm(smx_simcall_t simcall){
+  return (smx_host_t) simcall->args[0].dp;
+}
+static inline void simcall_vm_resume__set__ind_vm(smx_simcall_t simcall, void* arg){
+    simcall->args[0].dp = arg;
+}
+static inline smx_host_t simcall_vm_shutdown__get__ind_vm(smx_simcall_t simcall){
+  return (smx_host_t) simcall->args[0].dp;
+}
+static inline void simcall_vm_shutdown__set__ind_vm(smx_simcall_t simcall, void* arg){
+    simcall->args[0].dp = arg;
+}
+static inline smx_host_t simcall_vm_save__get__ind_vm(smx_simcall_t simcall){
+  return (smx_host_t) simcall->args[0].dp;
+}
+static inline void simcall_vm_save__set__ind_vm(smx_simcall_t simcall, void* arg){
+    simcall->args[0].dp = arg;
+}
+static inline smx_host_t simcall_vm_restore__get__ind_vm(smx_simcall_t simcall){
+  return (smx_host_t) simcall->args[0].dp;
+}
+static inline void simcall_vm_restore__set__ind_vm(smx_simcall_t simcall, void* arg){
+    simcall->args[0].dp = arg;
+}
+static inline smx_process_t* simcall_process_create__get__process(smx_simcall_t simcall){
+  return (smx_process_t*) simcall->args[0].dp;
+}
+static inline void simcall_process_create__set__process(smx_simcall_t simcall, void* arg){
+    simcall->args[0].dp = arg;
+}
+static inline const char* simcall_process_create__get__name(smx_simcall_t simcall){
+  return  simcall->args[1].cc;
+}
+static inline void simcall_process_create__set__name(smx_simcall_t simcall, const char* arg){
+    simcall->args[1].cc = arg;
+}
+static inline xbt_main_func_t simcall_process_create__get__code(smx_simcall_t simcall){
+  return (xbt_main_func_t) simcall->args[2].fp;
+}
+static inline void simcall_process_create__set__code(smx_simcall_t simcall, FPtr arg){
+    simcall->args[2].fp = arg;
+}
+static inline void* simcall_process_create__get__data(smx_simcall_t simcall){
+  return  simcall->args[3].dp;
+}
+static inline void simcall_process_create__set__data(smx_simcall_t simcall, void* arg){
+    simcall->args[3].dp = arg;
+}
+static inline const char* simcall_process_create__get__hostname(smx_simcall_t simcall){
+  return  simcall->args[4].cc;
+}
+static inline void simcall_process_create__set__hostname(smx_simcall_t simcall, const char* arg){
+    simcall->args[4].cc = arg;
+}
+static inline double simcall_process_create__get__kill_time(smx_simcall_t simcall){
+  return  simcall->args[5].d;
+}
+static inline void simcall_process_create__set__kill_time(smx_simcall_t simcall, double arg){
+    simcall->args[5].d = arg;
+}
+static inline int simcall_process_create__get__argc(smx_simcall_t simcall){
+  return  simcall->args[6].i;
+}
+static inline void simcall_process_create__set__argc(smx_simcall_t simcall, int arg){
+    simcall->args[6].i = arg;
+}
+static inline char** simcall_process_create__get__argv(smx_simcall_t simcall){
+  return (char**) simcall->args[7].dp;
+}
+static inline void simcall_process_create__set__argv(smx_simcall_t simcall, void* arg){
+    simcall->args[7].dp = arg;
+}
+static inline xbt_dict_t simcall_process_create__get__properties(smx_simcall_t simcall){
+  return (xbt_dict_t) simcall->args[8].dp;
+}
+static inline void simcall_process_create__set__properties(smx_simcall_t simcall, void* arg){
+    simcall->args[8].dp = arg;
+}
+static inline int simcall_process_create__get__auto_restart(smx_simcall_t simcall){
+  return  simcall->args[9].i;
+}
+static inline void simcall_process_create__set__auto_restart(smx_simcall_t simcall, int arg){
+    simcall->args[9].i = arg;
+}
+static inline smx_process_t simcall_process_kill__get__process(smx_simcall_t simcall){
+  return (smx_process_t) simcall->args[0].dp;
+}
+static inline void simcall_process_kill__set__process(smx_simcall_t simcall, void* arg){
+    simcall->args[0].dp = arg;
+}
+static inline int simcall_process_killall__get__reset_pid(smx_simcall_t simcall){
+  return  simcall->args[0].i;
+}
+static inline void simcall_process_killall__set__reset_pid(smx_simcall_t simcall, int arg){
+    simcall->args[0].i = arg;
+}
+static inline smx_process_t simcall_process_cleanup__get__process(smx_simcall_t simcall){
+  return (smx_process_t) simcall->args[0].dp;
+}
+static inline void simcall_process_cleanup__set__process(smx_simcall_t simcall, void* arg){
+    simcall->args[0].dp = arg;
+}
+static inline smx_process_t simcall_process_change_host__get__process(smx_simcall_t simcall){
+  return (smx_process_t) simcall->args[0].dp;
+}
+static inline void simcall_process_change_host__set__process(smx_simcall_t simcall, void* arg){
+    simcall->args[0].dp = arg;
+}
+static inline smx_host_t simcall_process_change_host__get__dest(smx_simcall_t simcall){
+  return (smx_host_t) simcall->args[1].dp;
+}
+static inline void simcall_process_change_host__set__dest(smx_simcall_t simcall, void* arg){
+    simcall->args[1].dp = arg;
+}
+static inline smx_process_t simcall_process_suspend__get__process(smx_simcall_t simcall){
+  return (smx_process_t) simcall->args[0].dp;
+}
+static inline void simcall_process_suspend__set__process(smx_simcall_t simcall, void* arg){
+    simcall->args[0].dp = arg;
+}
+static inline smx_process_t simcall_process_resume__get__process(smx_simcall_t simcall){
+  return (smx_process_t) simcall->args[0].dp;
+}
+static inline void simcall_process_resume__set__process(smx_simcall_t simcall, void* arg){
+    simcall->args[0].dp = arg;
+}
+
+static inline smx_process_t simcall_process_get_PID__get__process(smx_simcall_t simcall){
+  return (smx_process_t) simcall->args[0].dp;
+}
+static inline void simcall_process_get_PID__set__process(smx_simcall_t simcall, void* arg){
+    simcall->args[0].dp = arg;
+}
+static inline smx_process_t simcall_process_get_PPID__get__process(smx_simcall_t simcall){
+  return (smx_process_t) simcall->args[0].dp;
+}
+static inline void simcall_process_get_PPID__set__process(smx_simcall_t simcall, void* arg){
+    simcall->args[0].dp = arg;
+}
+static inline smx_process_t simcall_process_get_data__get__process(smx_simcall_t simcall){
+  return (smx_process_t) simcall->args[0].dp;
+}
+static inline void simcall_process_get_data__set__process(smx_simcall_t simcall, void* arg){
+    simcall->args[0].dp = arg;
+}
+static inline smx_process_t simcall_process_set_data__get__process(smx_simcall_t simcall){
+  return (smx_process_t) simcall->args[0].dp;
+}
+static inline void simcall_process_set_data__set__process(smx_simcall_t simcall, void* arg){
+    simcall->args[0].dp = arg;
+}
+static inline void* simcall_process_set_data__get__data(smx_simcall_t simcall){
+  return  simcall->args[1].dp;
+}
+static inline void simcall_process_set_data__set__data(smx_simcall_t simcall, void* arg){
+    simcall->args[1].dp = arg;
+}
+static inline smx_process_t simcall_process_get_host__get__process(smx_simcall_t simcall){
+  return (smx_process_t) simcall->args[0].dp;
+}
+static inline void simcall_process_get_host__set__process(smx_simcall_t simcall, void* arg){
+    simcall->args[0].dp = arg;
+}
+static inline smx_process_t simcall_process_get_name__get__process(smx_simcall_t simcall){
+  return (smx_process_t) simcall->args[0].dp;
+}
+static inline void simcall_process_get_name__set__process(smx_simcall_t simcall, void* arg){
+    simcall->args[0].dp = arg;
+}
+static inline smx_process_t simcall_process_is_suspended__get__process(smx_simcall_t simcall){
+  return (smx_process_t) simcall->args[0].dp;
+}
+static inline void simcall_process_is_suspended__set__process(smx_simcall_t simcall, void* arg){
+    simcall->args[0].dp = arg;
+}
+static inline smx_process_t simcall_process_get_properties__get__process(smx_simcall_t simcall){
+  return (smx_process_t) simcall->args[0].dp;
+}
+static inline void simcall_process_get_properties__set__process(smx_simcall_t simcall, void* arg){
+    simcall->args[0].dp = arg;
+}
+static inline double simcall_process_sleep__get__duration(smx_simcall_t simcall){
+  return  simcall->args[0].d;
+}
+static inline void simcall_process_sleep__set__duration(smx_simcall_t simcall, double arg){
+    simcall->args[0].d = arg;
+}
+static inline smx_process_t simcall_process_on_exit__get__process(smx_simcall_t simcall){
+  return (smx_process_t) simcall->args[0].dp;
+}
+static inline void simcall_process_on_exit__set__process(smx_simcall_t simcall, void* arg){
+    simcall->args[0].dp = arg;
+}
+static inline int_f_pvoid_t simcall_process_on_exit__get__fun(smx_simcall_t simcall){
+  return (int_f_pvoid_t) simcall->args[1].fp;
+}
+static inline void simcall_process_on_exit__set__fun(smx_simcall_t simcall, FPtr arg){
+    simcall->args[1].fp = arg;
+}
+static inline void* simcall_process_on_exit__get__data(smx_simcall_t simcall){
+  return  simcall->args[2].dp;
+}
+static inline void simcall_process_on_exit__set__data(smx_simcall_t simcall, void* arg){
+    simcall->args[2].dp = arg;
+}
+static inline smx_process_t simcall_process_auto_restart_set__get__process(smx_simcall_t simcall){
+  return (smx_process_t) simcall->args[0].dp;
+}
+static inline void simcall_process_auto_restart_set__set__process(smx_simcall_t simcall, void* arg){
+    simcall->args[0].dp = arg;
+}
+static inline int simcall_process_auto_restart_set__get__auto_restart(smx_simcall_t simcall){
+  return  simcall->args[1].i;
+}
+static inline void simcall_process_auto_restart_set__set__auto_restart(smx_simcall_t simcall, int arg){
+    simcall->args[1].i = arg;
+}
+static inline smx_process_t simcall_process_restart__get__process(smx_simcall_t simcall){
+  return (smx_process_t) simcall->args[0].dp;
+}
+static inline void simcall_process_restart__set__process(smx_simcall_t simcall, void* arg){
+    simcall->args[0].dp = arg;
+}
+static inline const char* simcall_rdv_create__get__name(smx_simcall_t simcall){
+  return  simcall->args[0].cc;
+}
+static inline void simcall_rdv_create__set__name(smx_simcall_t simcall, const char* arg){
+    simcall->args[0].cc = arg;
+}
+static inline smx_rdv_t simcall_rdv_destroy__get__rdv(smx_simcall_t simcall){
+  return (smx_rdv_t) simcall->args[0].dp;
+}
+static inline void simcall_rdv_destroy__set__rdv(smx_simcall_t simcall, void* arg){
+    simcall->args[0].dp = arg;
+}
+static inline const char* simcall_rdv_get_by_name__get__name(smx_simcall_t simcall){
+  return  simcall->args[0].cc;
+}
+static inline void simcall_rdv_get_by_name__set__name(smx_simcall_t simcall, const char* arg){
+    simcall->args[0].cc = arg;
+}
+static inline smx_rdv_t simcall_rdv_comm_count_by_host__get__rdv(smx_simcall_t simcall){
+  return (smx_rdv_t) simcall->args[0].dp;
+}
+static inline void simcall_rdv_comm_count_by_host__set__rdv(smx_simcall_t simcall, void* arg){
+    simcall->args[0].dp = arg;
+}
+static inline smx_host_t simcall_rdv_comm_count_by_host__get__host(smx_simcall_t simcall){
+  return (smx_host_t) simcall->args[1].dp;
+}
+static inline void simcall_rdv_comm_count_by_host__set__host(smx_simcall_t simcall, void* arg){
+    simcall->args[1].dp = arg;
+}
+static inline smx_rdv_t simcall_rdv_get_head__get__rdv(smx_simcall_t simcall){
+  return (smx_rdv_t) simcall->args[0].dp;
+}
+static inline void simcall_rdv_get_head__set__rdv(smx_simcall_t simcall, void* arg){
+    simcall->args[0].dp = arg;
+}
+static inline smx_rdv_t simcall_rdv_set_receiver__get__rdv(smx_simcall_t simcall){
+  return (smx_rdv_t) simcall->args[0].dp;
+}
+static inline void simcall_rdv_set_receiver__set__rdv(smx_simcall_t simcall, void* arg){
+    simcall->args[0].dp = arg;
+}
+static inline smx_process_t simcall_rdv_set_receiver__get__receiver(smx_simcall_t simcall){
+  return (smx_process_t) simcall->args[1].dp;
+}
+static inline void simcall_rdv_set_receiver__set__receiver(smx_simcall_t simcall, void* arg){
+    simcall->args[1].dp = arg;
+}
+static inline smx_rdv_t simcall_rdv_get_receiver__get__rdv(smx_simcall_t simcall){
+  return (smx_rdv_t) simcall->args[0].dp;
+}
+static inline void simcall_rdv_get_receiver__set__rdv(smx_simcall_t simcall, void* arg){
+    simcall->args[0].dp = arg;
+}
+static inline smx_rdv_t simcall_comm_iprobe__get__rdv(smx_simcall_t simcall){
+  return (smx_rdv_t) simcall->args[0].dp;
+}
+static inline void simcall_comm_iprobe__set__rdv(smx_simcall_t simcall, void* arg){
+    simcall->args[0].dp = arg;
+}
+static inline int simcall_comm_iprobe__get__src(smx_simcall_t simcall){
+  return  simcall->args[1].i;
+}
+static inline void simcall_comm_iprobe__set__src(smx_simcall_t simcall, int arg){
+    simcall->args[1].i = arg;
+}
+static inline int simcall_comm_iprobe__get__tag(smx_simcall_t simcall){
+  return  simcall->args[2].i;
+}
+static inline void simcall_comm_iprobe__set__tag(smx_simcall_t simcall, int arg){
+    simcall->args[2].i = arg;
+}
+static inline simix_match_func_t simcall_comm_iprobe__get__match_fun(smx_simcall_t simcall){
+  return (simix_match_func_t) simcall->args[3].fp;
+}
+static inline void simcall_comm_iprobe__set__match_fun(smx_simcall_t simcall, FPtr arg){
+    simcall->args[3].fp = arg;
+}
+static inline void* simcall_comm_iprobe__get__data(smx_simcall_t simcall){
+  return  simcall->args[4].dp;
+}
+static inline void simcall_comm_iprobe__set__data(smx_simcall_t simcall, void* arg){
+    simcall->args[4].dp = arg;
+}
+static inline smx_rdv_t simcall_comm_send__get__rdv(smx_simcall_t simcall){
+  return (smx_rdv_t) simcall->args[0].dp;
+}
+static inline void simcall_comm_send__set__rdv(smx_simcall_t simcall, void* arg){
+    simcall->args[0].dp = arg;
+}
+static inline double simcall_comm_send__get__task_size(smx_simcall_t simcall){
+  return  simcall->args[1].d;
+}
+static inline void simcall_comm_send__set__task_size(smx_simcall_t simcall, double arg){
+    simcall->args[1].d = arg;
+}
+static inline double simcall_comm_send__get__rate(smx_simcall_t simcall){
+  return  simcall->args[2].d;
+}
+static inline void simcall_comm_send__set__rate(smx_simcall_t simcall, double arg){
+    simcall->args[2].d = arg;
+}
+static inline void* simcall_comm_send__get__src_buff(smx_simcall_t simcall){
+  return  simcall->args[3].dp;
+}
+static inline void simcall_comm_send__set__src_buff(smx_simcall_t simcall, void* arg){
+    simcall->args[3].dp = arg;
+}
+static inline size_t simcall_comm_send__get__src_buff_size(smx_simcall_t simcall){
+  return  simcall->args[4].sz;
+}
+static inline void simcall_comm_send__set__src_buff_size(smx_simcall_t simcall, size_t arg){
+    simcall->args[4].sz = arg;
+}
+static inline simix_match_func_t simcall_comm_send__get__match_fun(smx_simcall_t simcall){
+  return (simix_match_func_t) simcall->args[5].fp;
+}
+static inline void simcall_comm_send__set__match_fun(smx_simcall_t simcall, FPtr arg){
+    simcall->args[5].fp = arg;
+}
+static inline void* simcall_comm_send__get__data(smx_simcall_t simcall){
+  return  simcall->args[6].dp;
+}
+static inline void simcall_comm_send__set__data(smx_simcall_t simcall, void* arg){
+    simcall->args[6].dp = arg;
+}
+static inline double simcall_comm_send__get__timeout(smx_simcall_t simcall){
+  return  simcall->args[7].d;
+}
+static inline void simcall_comm_send__set__timeout(smx_simcall_t simcall, double arg){
+    simcall->args[7].d = arg;
+}
+static inline smx_rdv_t simcall_comm_isend__get__rdv(smx_simcall_t simcall){
+  return (smx_rdv_t) simcall->args[0].dp;
+}
+static inline void simcall_comm_isend__set__rdv(smx_simcall_t simcall, void* arg){
+    simcall->args[0].dp = arg;
+}
+static inline double simcall_comm_isend__get__task_size(smx_simcall_t simcall){
+  return  simcall->args[1].d;
+}
+static inline void simcall_comm_isend__set__task_size(smx_simcall_t simcall, double arg){
+    simcall->args[1].d = arg;
+}
+static inline double simcall_comm_isend__get__rate(smx_simcall_t simcall){
+  return  simcall->args[2].d;
+}
+static inline void simcall_comm_isend__set__rate(smx_simcall_t simcall, double arg){
+    simcall->args[2].d = arg;
+}
+static inline void* simcall_comm_isend__get__src_buff(smx_simcall_t simcall){
+  return  simcall->args[3].dp;
+}
+static inline void simcall_comm_isend__set__src_buff(smx_simcall_t simcall, void* arg){
+    simcall->args[3].dp = arg;
+}
+static inline size_t simcall_comm_isend__get__src_buff_size(smx_simcall_t simcall){
+  return  simcall->args[4].sz;
+}
+static inline void simcall_comm_isend__set__src_buff_size(smx_simcall_t simcall, size_t arg){
+    simcall->args[4].sz = arg;
+}
+static inline simix_match_func_t simcall_comm_isend__get__match_fun(smx_simcall_t simcall){
+  return (simix_match_func_t) simcall->args[5].fp;
+}
+static inline void simcall_comm_isend__set__match_fun(smx_simcall_t simcall, FPtr arg){
+    simcall->args[5].fp = arg;
+}
+static inline simix_clean_func_t simcall_comm_isend__get__clean_fun(smx_simcall_t simcall){
+  return (simix_clean_func_t) simcall->args[6].fp;
+}
+static inline void simcall_comm_isend__set__clean_fun(smx_simcall_t simcall, FPtr arg){
+    simcall->args[6].fp = arg;
+}
+static inline void* simcall_comm_isend__get__data(smx_simcall_t simcall){
+  return  simcall->args[7].dp;
+}
+static inline void simcall_comm_isend__set__data(smx_simcall_t simcall, void* arg){
+    simcall->args[7].dp = arg;
+}
+static inline int simcall_comm_isend__get__detached(smx_simcall_t simcall){
+  return  simcall->args[8].i;
+}
+static inline void simcall_comm_isend__set__detached(smx_simcall_t simcall, int arg){
+    simcall->args[8].i = arg;
+}
+static inline smx_rdv_t simcall_comm_recv__get__rdv(smx_simcall_t simcall){
+  return (smx_rdv_t) simcall->args[0].dp;
+}
+static inline void simcall_comm_recv__set__rdv(smx_simcall_t simcall, void* arg){
+    simcall->args[0].dp = arg;
+}
+static inline void* simcall_comm_recv__get__dst_buff(smx_simcall_t simcall){
+  return  simcall->args[1].dp;
+}
+static inline void simcall_comm_recv__set__dst_buff(smx_simcall_t simcall, void* arg){
+    simcall->args[1].dp = arg;
+}
+static inline size_t* simcall_comm_recv__get__dst_buff_size(smx_simcall_t simcall){
+  return (size_t*) simcall->args[2].dp;
+}
+static inline void simcall_comm_recv__set__dst_buff_size(smx_simcall_t simcall, void* arg){
+    simcall->args[2].dp = arg;
+}
+static inline simix_match_func_t simcall_comm_recv__get__match_fun(smx_simcall_t simcall){
+  return (simix_match_func_t) simcall->args[3].fp;
+}
+static inline void simcall_comm_recv__set__match_fun(smx_simcall_t simcall, FPtr arg){
+    simcall->args[3].fp = arg;
+}
+static inline void* simcall_comm_recv__get__data(smx_simcall_t simcall){
+  return  simcall->args[4].dp;
+}
+static inline void simcall_comm_recv__set__data(smx_simcall_t simcall, void* arg){
+    simcall->args[4].dp = arg;
+}
+static inline double simcall_comm_recv__get__timeout(smx_simcall_t simcall){
+  return  simcall->args[5].d;
+}
+static inline void simcall_comm_recv__set__timeout(smx_simcall_t simcall, double arg){
+    simcall->args[5].d = arg;
+}
+static inline smx_rdv_t simcall_comm_irecv__get__rdv(smx_simcall_t simcall){
+  return (smx_rdv_t) simcall->args[0].dp;
+}
+static inline void simcall_comm_irecv__set__rdv(smx_simcall_t simcall, void* arg){
+    simcall->args[0].dp = arg;
+}
+static inline void* simcall_comm_irecv__get__dst_buff(smx_simcall_t simcall){
+  return  simcall->args[1].dp;
+}
+static inline void simcall_comm_irecv__set__dst_buff(smx_simcall_t simcall, void* arg){
+    simcall->args[1].dp = arg;
+}
+static inline size_t* simcall_comm_irecv__get__dst_buff_size(smx_simcall_t simcall){
+  return (size_t*) simcall->args[2].dp;
+}
+static inline void simcall_comm_irecv__set__dst_buff_size(smx_simcall_t simcall, void* arg){
+    simcall->args[2].dp = arg;
+}
+static inline simix_match_func_t simcall_comm_irecv__get__match_fun(smx_simcall_t simcall){
+  return (simix_match_func_t) simcall->args[3].fp;
+}
+static inline void simcall_comm_irecv__set__match_fun(smx_simcall_t simcall, FPtr arg){
+    simcall->args[3].fp = arg;
+}
+static inline void* simcall_comm_irecv__get__data(smx_simcall_t simcall){
+  return  simcall->args[4].dp;
+}
+static inline void simcall_comm_irecv__set__data(smx_simcall_t simcall, void* arg){
+    simcall->args[4].dp = arg;
+}
+static inline smx_rdv_t simcall_comm_recv_bounded__get__rdv(smx_simcall_t simcall){
+  return (smx_rdv_t) simcall->args[0].dp;
+}
+static inline void simcall_comm_recv_bounded__set__rdv(smx_simcall_t simcall, void* arg){
+    simcall->args[0].dp = arg;
+}
+static inline void* simcall_comm_recv_bounded__get__dst_buff(smx_simcall_t simcall){
+  return  simcall->args[1].dp;
+}
+static inline void simcall_comm_recv_bounded__set__dst_buff(smx_simcall_t simcall, void* arg){
+    simcall->args[1].dp = arg;
+}
+static inline size_t* simcall_comm_recv_bounded__get__dst_buff_size(smx_simcall_t simcall){
+  return (size_t*) simcall->args[2].dp;
+}
+static inline void simcall_comm_recv_bounded__set__dst_buff_size(smx_simcall_t simcall, void* arg){
+    simcall->args[2].dp = arg;
+}
+static inline simix_match_func_t simcall_comm_recv_bounded__get__match_fun(smx_simcall_t simcall){
+  return (simix_match_func_t) simcall->args[3].fp;
+}
+static inline void simcall_comm_recv_bounded__set__match_fun(smx_simcall_t simcall, FPtr arg){
+    simcall->args[3].fp = arg;
+}
+static inline void* simcall_comm_recv_bounded__get__data(smx_simcall_t simcall){
+  return  simcall->args[4].dp;
+}
+static inline void simcall_comm_recv_bounded__set__data(smx_simcall_t simcall, void* arg){
+    simcall->args[4].dp = arg;
+}
+static inline double simcall_comm_recv_bounded__get__timeout(smx_simcall_t simcall){
+  return  simcall->args[5].d;
+}
+static inline void simcall_comm_recv_bounded__set__timeout(smx_simcall_t simcall, double arg){
+    simcall->args[5].d = arg;
+}
+static inline double simcall_comm_recv_bounded__get__rate(smx_simcall_t simcall){
+  return  simcall->args[6].d;
+}
+static inline void simcall_comm_recv_bounded__set__rate(smx_simcall_t simcall, double arg){
+    simcall->args[6].d = arg;
+}
+static inline smx_rdv_t simcall_comm_irecv_bounded__get__rdv(smx_simcall_t simcall){
+  return (smx_rdv_t) simcall->args[0].dp;
+}
+static inline void simcall_comm_irecv_bounded__set__rdv(smx_simcall_t simcall, void* arg){
+    simcall->args[0].dp = arg;
+}
+static inline void* simcall_comm_irecv_bounded__get__dst_buff(smx_simcall_t simcall){
+  return  simcall->args[1].dp;
+}
+static inline void simcall_comm_irecv_bounded__set__dst_buff(smx_simcall_t simcall, void* arg){
+    simcall->args[1].dp = arg;
+}
+static inline size_t* simcall_comm_irecv_bounded__get__dst_buff_size(smx_simcall_t simcall){
+  return (size_t*) simcall->args[2].dp;
+}
+static inline void simcall_comm_irecv_bounded__set__dst_buff_size(smx_simcall_t simcall, void* arg){
+    simcall->args[2].dp = arg;
+}
+static inline simix_match_func_t simcall_comm_irecv_bounded__get__match_fun(smx_simcall_t simcall){
+  return (simix_match_func_t) simcall->args[3].fp;
+}
+static inline void simcall_comm_irecv_bounded__set__match_fun(smx_simcall_t simcall, FPtr arg){
+    simcall->args[3].fp = arg;
+}
+static inline void* simcall_comm_irecv_bounded__get__data(smx_simcall_t simcall){
+  return  simcall->args[4].dp;
+}
+static inline void simcall_comm_irecv_bounded__set__data(smx_simcall_t simcall, void* arg){
+    simcall->args[4].dp = arg;
+}
+static inline double simcall_comm_irecv_bounded__get__rate(smx_simcall_t simcall){
+  return  simcall->args[5].d;
+}
+static inline void simcall_comm_irecv_bounded__set__rate(smx_simcall_t simcall, double arg){
+    simcall->args[5].d = arg;
+}
+static inline smx_action_t simcall_comm_destroy__get__comm(smx_simcall_t simcall){
+  return (smx_action_t) simcall->args[0].dp;
+}
+static inline void simcall_comm_destroy__set__comm(smx_simcall_t simcall, void* arg){
+    simcall->args[0].dp = arg;
+}
+static inline smx_action_t simcall_comm_cancel__get__comm(smx_simcall_t simcall){
+  return (smx_action_t) simcall->args[0].dp;
+}
+static inline void simcall_comm_cancel__set__comm(smx_simcall_t simcall, void* arg){
+    simcall->args[0].dp = arg;
+}
+static inline xbt_dynar_t simcall_comm_waitany__get__comms(smx_simcall_t simcall){
+  return (xbt_dynar_t) simcall->args[0].dp;
+}
+static inline void simcall_comm_waitany__set__comms(smx_simcall_t simcall, void* arg){
+    simcall->args[0].dp = arg;
+}
+static inline smx_action_t simcall_comm_wait__get__comm(smx_simcall_t simcall){
+  return (smx_action_t) simcall->args[0].dp;
+}
+static inline void simcall_comm_wait__set__comm(smx_simcall_t simcall, void* arg){
+    simcall->args[0].dp = arg;
+}
+static inline double simcall_comm_wait__get__timeout(smx_simcall_t simcall){
+  return  simcall->args[1].d;
+}
+static inline void simcall_comm_wait__set__timeout(smx_simcall_t simcall, double arg){
+    simcall->args[1].d = arg;
+}
+static inline smx_action_t simcall_comm_test__get__comm(smx_simcall_t simcall){
+  return (smx_action_t) simcall->args[0].dp;
+}
+static inline void simcall_comm_test__set__comm(smx_simcall_t simcall, void* arg){
+    simcall->args[0].dp = arg;
+}
+static inline xbt_dynar_t simcall_comm_testany__get__comms(smx_simcall_t simcall){
+  return (xbt_dynar_t) simcall->args[0].dp;
+}
+static inline void simcall_comm_testany__set__comms(smx_simcall_t simcall, void* arg){
+    simcall->args[0].dp = arg;
+}
+static inline smx_action_t simcall_comm_get_remains__get__comm(smx_simcall_t simcall){
+  return (smx_action_t) simcall->args[0].dp;
+}
+static inline void simcall_comm_get_remains__set__comm(smx_simcall_t simcall, void* arg){
+    simcall->args[0].dp = arg;
+}
+static inline smx_action_t simcall_comm_get_state__get__comm(smx_simcall_t simcall){
+  return (smx_action_t) simcall->args[0].dp;
+}
+static inline void simcall_comm_get_state__set__comm(smx_simcall_t simcall, void* arg){
+    simcall->args[0].dp = arg;
+}
+static inline smx_action_t simcall_comm_get_src_data__get__comm(smx_simcall_t simcall){
+  return (smx_action_t) simcall->args[0].dp;
+}
+static inline void simcall_comm_get_src_data__set__comm(smx_simcall_t simcall, void* arg){
+    simcall->args[0].dp = arg;
+}
+static inline smx_action_t simcall_comm_get_dst_data__get__comm(smx_simcall_t simcall){
+  return (smx_action_t) simcall->args[0].dp;
+}
+static inline void simcall_comm_get_dst_data__set__comm(smx_simcall_t simcall, void* arg){
+    simcall->args[0].dp = arg;
+}
+static inline smx_action_t simcall_comm_get_src_proc__get__comm(smx_simcall_t simcall){
+  return (smx_action_t) simcall->args[0].dp;
+}
+static inline void simcall_comm_get_src_proc__set__comm(smx_simcall_t simcall, void* arg){
+    simcall->args[0].dp = arg;
+}
+static inline smx_action_t simcall_comm_get_dst_proc__get__comm(smx_simcall_t simcall){
+  return (smx_action_t) simcall->args[0].dp;
+}
+static inline void simcall_comm_get_dst_proc__set__comm(smx_simcall_t simcall, void* arg){
+    simcall->args[0].dp = arg;
+}
+
+static inline smx_mutex_t simcall_mutex_destroy__get__mutex(smx_simcall_t simcall){
+  return (smx_mutex_t) simcall->args[0].dp;
+}
+static inline void simcall_mutex_destroy__set__mutex(smx_simcall_t simcall, void* arg){
+    simcall->args[0].dp = arg;
+}
+static inline smx_mutex_t simcall_mutex_lock__get__mutex(smx_simcall_t simcall){
+  return (smx_mutex_t) simcall->args[0].dp;
+}
+static inline void simcall_mutex_lock__set__mutex(smx_simcall_t simcall, void* arg){
+    simcall->args[0].dp = arg;
+}
+static inline smx_mutex_t simcall_mutex_trylock__get__mutex(smx_simcall_t simcall){
+  return (smx_mutex_t) simcall->args[0].dp;
+}
+static inline void simcall_mutex_trylock__set__mutex(smx_simcall_t simcall, void* arg){
+    simcall->args[0].dp = arg;
+}
+static inline smx_mutex_t simcall_mutex_unlock__get__mutex(smx_simcall_t simcall){
+  return (smx_mutex_t) simcall->args[0].dp;
+}
+static inline void simcall_mutex_unlock__set__mutex(smx_simcall_t simcall, void* arg){
+    simcall->args[0].dp = arg;
+}
+
+static inline smx_cond_t simcall_cond_destroy__get__cond(smx_simcall_t simcall){
+  return (smx_cond_t) simcall->args[0].dp;
+}
+static inline void simcall_cond_destroy__set__cond(smx_simcall_t simcall, void* arg){
+    simcall->args[0].dp = arg;
+}
+static inline smx_cond_t simcall_cond_signal__get__cond(smx_simcall_t simcall){
+  return (smx_cond_t) simcall->args[0].dp;
+}
+static inline void simcall_cond_signal__set__cond(smx_simcall_t simcall, void* arg){
+    simcall->args[0].dp = arg;
+}
+static inline smx_cond_t simcall_cond_wait__get__cond(smx_simcall_t simcall){
+  return (smx_cond_t) simcall->args[0].dp;
+}
+static inline void simcall_cond_wait__set__cond(smx_simcall_t simcall, void* arg){
+    simcall->args[0].dp = arg;
+}
+static inline smx_mutex_t simcall_cond_wait__get__mutex(smx_simcall_t simcall){
+  return (smx_mutex_t) simcall->args[1].dp;
+}
+static inline void simcall_cond_wait__set__mutex(smx_simcall_t simcall, void* arg){
+    simcall->args[1].dp = arg;
+}
+static inline smx_cond_t simcall_cond_wait_timeout__get__cond(smx_simcall_t simcall){
+  return (smx_cond_t) simcall->args[0].dp;
+}
+static inline void simcall_cond_wait_timeout__set__cond(smx_simcall_t simcall, void* arg){
+    simcall->args[0].dp = arg;
+}
+static inline smx_mutex_t simcall_cond_wait_timeout__get__mutex(smx_simcall_t simcall){
+  return (smx_mutex_t) simcall->args[1].dp;
+}
+static inline void simcall_cond_wait_timeout__set__mutex(smx_simcall_t simcall, void* arg){
+    simcall->args[1].dp = arg;
+}
+static inline double simcall_cond_wait_timeout__get__timeout(smx_simcall_t simcall){
+  return  simcall->args[2].d;
+}
+static inline void simcall_cond_wait_timeout__set__timeout(smx_simcall_t simcall, double arg){
+    simcall->args[2].d = arg;
+}
+static inline smx_cond_t simcall_cond_broadcast__get__cond(smx_simcall_t simcall){
+  return (smx_cond_t) simcall->args[0].dp;
+}
+static inline void simcall_cond_broadcast__set__cond(smx_simcall_t simcall, void* arg){
+    simcall->args[0].dp = arg;
+}
+static inline int simcall_sem_init__get__capacity(smx_simcall_t simcall){
+  return  simcall->args[0].i;
+}
+static inline void simcall_sem_init__set__capacity(smx_simcall_t simcall, int arg){
+    simcall->args[0].i = arg;
+}
+static inline smx_sem_t simcall_sem_destroy__get__sem(smx_simcall_t simcall){
+  return (smx_sem_t) simcall->args[0].dp;
+}
+static inline void simcall_sem_destroy__set__sem(smx_simcall_t simcall, void* arg){
+    simcall->args[0].dp = arg;
+}
+static inline smx_sem_t simcall_sem_release__get__sem(smx_simcall_t simcall){
+  return (smx_sem_t) simcall->args[0].dp;
+}
+static inline void simcall_sem_release__set__sem(smx_simcall_t simcall, void* arg){
+    simcall->args[0].dp = arg;
+}
+static inline smx_sem_t simcall_sem_would_block__get__sem(smx_simcall_t simcall){
+  return (smx_sem_t) simcall->args[0].dp;
+}
+static inline void simcall_sem_would_block__set__sem(smx_simcall_t simcall, void* arg){
+    simcall->args[0].dp = arg;
+}
+static inline smx_sem_t simcall_sem_acquire__get__sem(smx_simcall_t simcall){
+  return (smx_sem_t) simcall->args[0].dp;
+}
+static inline void simcall_sem_acquire__set__sem(smx_simcall_t simcall, void* arg){
+    simcall->args[0].dp = arg;
+}
+static inline smx_sem_t simcall_sem_acquire_timeout__get__sem(smx_simcall_t simcall){
+  return (smx_sem_t) simcall->args[0].dp;
+}
+static inline void simcall_sem_acquire_timeout__set__sem(smx_simcall_t simcall, void* arg){
+    simcall->args[0].dp = arg;
+}
+static inline double simcall_sem_acquire_timeout__get__timeout(smx_simcall_t simcall){
+  return  simcall->args[1].d;
+}
+static inline void simcall_sem_acquire_timeout__set__timeout(smx_simcall_t simcall, double arg){
+    simcall->args[1].d = arg;
+}
+static inline smx_sem_t simcall_sem_get_capacity__get__sem(smx_simcall_t simcall){
+  return (smx_sem_t) simcall->args[0].dp;
+}
+static inline void simcall_sem_get_capacity__set__sem(smx_simcall_t simcall, void* arg){
+    simcall->args[0].dp = arg;
+}
+static inline smx_file_t simcall_file_get_data__get__fd(smx_simcall_t simcall){
+  return (smx_file_t) simcall->args[0].dp;
+}
+static inline void simcall_file_get_data__set__fd(smx_simcall_t simcall, void* arg){
+    simcall->args[0].dp = arg;
+}
+static inline smx_file_t simcall_file_set_data__get__fd(smx_simcall_t simcall){
+  return (smx_file_t) simcall->args[0].dp;
+}
+static inline void simcall_file_set_data__set__fd(smx_simcall_t simcall, void* arg){
+    simcall->args[0].dp = arg;
+}
+static inline void* simcall_file_set_data__get__data(smx_simcall_t simcall){
+  return  simcall->args[1].dp;
+}
+static inline void simcall_file_set_data__set__data(smx_simcall_t simcall, void* arg){
+    simcall->args[1].dp = arg;
+}
+static inline smx_file_t simcall_file_read__get__fd(smx_simcall_t simcall){
+  return (smx_file_t) simcall->args[0].dp;
+}
+static inline void simcall_file_read__set__fd(smx_simcall_t simcall, void* arg){
+    simcall->args[0].dp = arg;
+}
+static inline sg_size_t simcall_file_read__get__size(smx_simcall_t simcall){
+  return  simcall->args[1].sgsz;
+}
+static inline void simcall_file_read__set__size(smx_simcall_t simcall, sg_size_t arg){
+    simcall->args[1].sgsz = arg;
+}
+static inline smx_file_t simcall_file_write__get__fd(smx_simcall_t simcall){
+  return (smx_file_t) simcall->args[0].dp;
+}
+static inline void simcall_file_write__set__fd(smx_simcall_t simcall, void* arg){
+    simcall->args[0].dp = arg;
+}
+static inline sg_size_t simcall_file_write__get__size(smx_simcall_t simcall){
+  return  simcall->args[1].sgsz;
+}
+static inline void simcall_file_write__set__size(smx_simcall_t simcall, sg_size_t arg){
+    simcall->args[1].sgsz = arg;
+}
+static inline const char* simcall_file_open__get__mount(smx_simcall_t simcall){
+  return  simcall->args[0].cc;
+}
+static inline void simcall_file_open__set__mount(smx_simcall_t simcall, const char* arg){
+    simcall->args[0].cc = arg;
+}
+static inline const char* simcall_file_open__get__path(smx_simcall_t simcall){
+  return  simcall->args[1].cc;
+}
+static inline void simcall_file_open__set__path(smx_simcall_t simcall, const char* arg){
+    simcall->args[1].cc = arg;
+}
+static inline smx_file_t simcall_file_close__get__fd(smx_simcall_t simcall){
+  return (smx_file_t) simcall->args[0].dp;
+}
+static inline void simcall_file_close__set__fd(smx_simcall_t simcall, void* arg){
+    simcall->args[0].dp = arg;
+}
+static inline smx_file_t simcall_file_unlink__get__fd(smx_simcall_t simcall){
+  return (smx_file_t) simcall->args[0].dp;
+}
+static inline void simcall_file_unlink__set__fd(smx_simcall_t simcall, void* arg){
+    simcall->args[0].dp = arg;
+}
+static inline const char* simcall_file_ls__get__mount(smx_simcall_t simcall){
+  return  simcall->args[0].cc;
+}
+static inline void simcall_file_ls__set__mount(smx_simcall_t simcall, const char* arg){
+    simcall->args[0].cc = arg;
+}
+static inline const char* simcall_file_ls__get__path(smx_simcall_t simcall){
+  return  simcall->args[1].cc;
+}
+static inline void simcall_file_ls__set__path(smx_simcall_t simcall, const char* arg){
+    simcall->args[1].cc = arg;
+}
+static inline smx_file_t simcall_file_get_size__get__fd(smx_simcall_t simcall){
+  return (smx_file_t) simcall->args[0].dp;
+}
+static inline void simcall_file_get_size__set__fd(smx_simcall_t simcall, void* arg){
+    simcall->args[0].dp = arg;
+}
+static inline smx_file_t simcall_file_tell__get__fd(smx_simcall_t simcall){
+  return (smx_file_t) simcall->args[0].dp;
+}
+static inline void simcall_file_tell__set__fd(smx_simcall_t simcall, void* arg){
+    simcall->args[0].dp = arg;
+}
+static inline smx_file_t simcall_file_seek__get__fd(smx_simcall_t simcall){
+  return (smx_file_t) simcall->args[0].dp;
+}
+static inline void simcall_file_seek__set__fd(smx_simcall_t simcall, void* arg){
+    simcall->args[0].dp = arg;
+}
+static inline sg_size_t simcall_file_seek__get__offset(smx_simcall_t simcall){
+  return  simcall->args[1].sgsz;
+}
+static inline void simcall_file_seek__set__offset(smx_simcall_t simcall, sg_size_t arg){
+    simcall->args[1].sgsz = arg;
+}
+static inline int simcall_file_seek__get__origin(smx_simcall_t simcall){
+  return  simcall->args[2].i;
+}
+static inline void simcall_file_seek__set__origin(smx_simcall_t simcall, int arg){
+    simcall->args[2].i = arg;
+}
+static inline smx_file_t simcall_file_get_info__get__fd(smx_simcall_t simcall){
+  return (smx_file_t) simcall->args[0].dp;
+}
+static inline void simcall_file_get_info__set__fd(smx_simcall_t simcall, void* arg){
+    simcall->args[0].dp = arg;
+}
+static inline smx_storage_t simcall_storage_file_rename__get__storage(smx_simcall_t simcall){
+  return (smx_storage_t) simcall->args[0].dp;
+}
+static inline void simcall_storage_file_rename__set__storage(smx_simcall_t simcall, void* arg){
+    simcall->args[0].dp = arg;
+}
+static inline const char* simcall_storage_file_rename__get__src(smx_simcall_t simcall){
+  return  simcall->args[1].cc;
+}
+static inline void simcall_storage_file_rename__set__src(smx_simcall_t simcall, const char* arg){
+    simcall->args[1].cc = arg;
+}
+static inline const char* simcall_storage_file_rename__get__dest(smx_simcall_t simcall){
+  return  simcall->args[2].cc;
+}
+static inline void simcall_storage_file_rename__set__dest(smx_simcall_t simcall, const char* arg){
+    simcall->args[2].cc = arg;
+}
+static inline const char* simcall_storage_get_free_size__get__name(smx_simcall_t simcall){
+  return  simcall->args[0].cc;
+}
+static inline void simcall_storage_get_free_size__set__name(smx_simcall_t simcall, const char* arg){
+    simcall->args[0].cc = arg;
+}
+static inline const char* simcall_storage_get_used_size__get__name(smx_simcall_t simcall){
+  return  simcall->args[0].cc;
+}
+static inline void simcall_storage_get_used_size__set__name(smx_simcall_t simcall, const char* arg){
+    simcall->args[0].cc = arg;
+}
+static inline smx_storage_t simcall_storage_get_properties__get__storage(smx_simcall_t simcall){
+  return (smx_storage_t) simcall->args[0].dp;
+}
+static inline void simcall_storage_get_properties__set__storage(smx_simcall_t simcall, void* arg){
+    simcall->args[0].dp = arg;
+}
+static inline smx_storage_t simcall_storage_get_content__get__storage(smx_simcall_t simcall){
+  return (smx_storage_t) simcall->args[0].dp;
+}
+static inline void simcall_storage_get_content__set__storage(smx_simcall_t simcall, void* arg){
+    simcall->args[0].dp = arg;
+}
+static inline const char* simcall_asr_get_properties__get__name(smx_simcall_t simcall){
+  return  simcall->args[0].cc;
+}
+static inline void simcall_asr_get_properties__set__name(smx_simcall_t simcall, const char* arg){
+    simcall->args[0].cc = arg;
+}
+#ifdef HAVE_LATENCY_BOUND_TRACKING
+static inline smx_action_t simcall_comm_is_latency_bounded__get__comm(smx_simcall_t simcall){
+  return (smx_action_t) simcall->args[0].dp;
+}
+static inline void simcall_comm_is_latency_bounded__set__comm(smx_simcall_t simcall, void* arg){
+    simcall->args[0].dp = arg;
+}
+#endif
+
+#ifdef HAVE_TRACING
+static inline smx_action_t simcall_set_category__get__action(smx_simcall_t simcall){
+  return (smx_action_t) simcall->args[0].dp;
+}
+static inline void simcall_set_category__set__action(smx_simcall_t simcall, void* arg){
+    simcall->args[0].dp = arg;
+}
+static inline const char* simcall_set_category__get__category(smx_simcall_t simcall){
+  return  simcall->args[1].cc;
+}
+static inline void simcall_set_category__set__category(smx_simcall_t simcall, const char* arg){
+    simcall->args[1].cc = arg;
+}
+#endif
+
+#ifdef HAVE_MC
+
+static inline void* simcall_mc_compare_snapshots__get__s1(smx_simcall_t simcall){
+  return  simcall->args[0].dp;
+}
+static inline void simcall_mc_compare_snapshots__set__s1(smx_simcall_t simcall, void* arg){
+    simcall->args[0].dp = arg;
+}
+static inline void* simcall_mc_compare_snapshots__get__s2(smx_simcall_t simcall){
+  return  simcall->args[1].dp;
+}
+static inline void simcall_mc_compare_snapshots__set__s2(smx_simcall_t simcall, void* arg){
+    simcall->args[1].dp = arg;
+}
+static inline int simcall_mc_random__get__min(smx_simcall_t simcall){
+  return  simcall->args[0].i;
+}
+static inline void simcall_mc_random__set__min(smx_simcall_t simcall, int arg){
+    simcall->args[0].i = arg;
+}
+static inline int simcall_mc_random__get__max(smx_simcall_t simcall){
+  return  simcall->args[1].i;
+}
+static inline void simcall_mc_random__set__max(smx_simcall_t simcall, int arg){
+    simcall->args[1].i = arg;
+}
+#endif
diff --git a/src/simix/simcalls_generated_body.c b/src/simix/simcalls_generated_body.c
new file mode 100644 (file)
index 0000000..b75571b
--- /dev/null
@@ -0,0 +1,2071 @@
+  inline static smx_host_t simcall_BODY_host_get_by_name(const char* name) {
+    smx_process_t self = SIMIX_process_self();
+    self->simcall.call = SIMCALL_HOST_GET_BY_NAME;
+    memset(&self->simcall.result, 0, sizeof(self->simcall.result));
+    memset(self->simcall.args, 0, sizeof(self->simcall.args));
+    self->simcall.args[0].cc = (const char*) name;
+    if (self != simix_global->maestro_process) {
+      XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
+                SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
+      SIMIX_process_yield(self);
+    } else {
+      SIMIX_simcall_pre(&self->simcall, 0);
+    }    
+    return self->simcall.result.dp;
+  }
+  inline static const char* simcall_BODY_host_get_name(smx_host_t host) {
+    smx_process_t self = SIMIX_process_self();
+    self->simcall.call = SIMCALL_HOST_GET_NAME;
+    memset(&self->simcall.result, 0, sizeof(self->simcall.result));
+    memset(self->simcall.args, 0, sizeof(self->simcall.args));
+    self->simcall.args[0].dp = (void*) host;
+    if (self != simix_global->maestro_process) {
+      XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
+                SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
+      SIMIX_process_yield(self);
+    } else {
+      SIMIX_simcall_pre(&self->simcall, 0);
+    }    
+    return self->simcall.result.cc;
+  }
+  inline static void simcall_BODY_host_on(smx_host_t host) {
+    smx_process_t self = SIMIX_process_self();
+    self->simcall.call = SIMCALL_HOST_ON;
+    memset(&self->simcall.result, 0, sizeof(self->simcall.result));
+    memset(self->simcall.args, 0, sizeof(self->simcall.args));
+    self->simcall.args[0].dp = (void*) host;
+    if (self != simix_global->maestro_process) {
+      XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
+                SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
+      SIMIX_process_yield(self);
+    } else {
+      SIMIX_simcall_pre(&self->simcall, 0);
+    }    
+    
+  }
+  inline static void simcall_BODY_host_off(smx_host_t host) {
+    smx_process_t self = SIMIX_process_self();
+    self->simcall.call = SIMCALL_HOST_OFF;
+    memset(&self->simcall.result, 0, sizeof(self->simcall.result));
+    memset(self->simcall.args, 0, sizeof(self->simcall.args));
+    self->simcall.args[0].dp = (void*) host;
+    if (self != simix_global->maestro_process) {
+      XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
+                SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
+      SIMIX_process_yield(self);
+    } else {
+      SIMIX_simcall_pre(&self->simcall, 0);
+    }    
+    
+  }
+  inline static xbt_dict_t simcall_BODY_host_get_properties(smx_host_t host) {
+    smx_process_t self = SIMIX_process_self();
+    self->simcall.call = SIMCALL_HOST_GET_PROPERTIES;
+    memset(&self->simcall.result, 0, sizeof(self->simcall.result));
+    memset(self->simcall.args, 0, sizeof(self->simcall.args));
+    self->simcall.args[0].dp = (void*) host;
+    if (self != simix_global->maestro_process) {
+      XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
+                SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
+      SIMIX_process_yield(self);
+    } else {
+      SIMIX_simcall_pre(&self->simcall, 0);
+    }    
+    return self->simcall.result.dp;
+  }
+  inline static int simcall_BODY_host_get_core(smx_host_t host) {
+    smx_process_t self = SIMIX_process_self();
+    self->simcall.call = SIMCALL_HOST_GET_CORE;
+    memset(&self->simcall.result, 0, sizeof(self->simcall.result));
+    memset(self->simcall.args, 0, sizeof(self->simcall.args));
+    self->simcall.args[0].dp = (void*) host;
+    if (self != simix_global->maestro_process) {
+      XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
+                SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
+      SIMIX_process_yield(self);
+    } else {
+      SIMIX_simcall_pre(&self->simcall, 0);
+    }    
+    return self->simcall.result.i;
+  }
+  inline static xbt_swag_t simcall_BODY_host_get_process_list(smx_host_t host) {
+    smx_process_t self = SIMIX_process_self();
+    self->simcall.call = SIMCALL_HOST_GET_PROCESS_LIST;
+    memset(&self->simcall.result, 0, sizeof(self->simcall.result));
+    memset(self->simcall.args, 0, sizeof(self->simcall.args));
+    self->simcall.args[0].dp = (void*) host;
+    if (self != simix_global->maestro_process) {
+      XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
+                SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
+      SIMIX_process_yield(self);
+    } else {
+      SIMIX_simcall_pre(&self->simcall, 0);
+    }    
+    return self->simcall.result.dp;
+  }
+  inline static double simcall_BODY_host_get_speed(smx_host_t host) {
+    smx_process_t self = SIMIX_process_self();
+    self->simcall.call = SIMCALL_HOST_GET_SPEED;
+    memset(&self->simcall.result, 0, sizeof(self->simcall.result));
+    memset(self->simcall.args, 0, sizeof(self->simcall.args));
+    self->simcall.args[0].dp = (void*) host;
+    if (self != simix_global->maestro_process) {
+      XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
+                SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
+      SIMIX_process_yield(self);
+    } else {
+      SIMIX_simcall_pre(&self->simcall, 0);
+    }    
+    return self->simcall.result.d;
+  }
+  inline static double simcall_BODY_host_get_available_speed(smx_host_t host) {
+    smx_process_t self = SIMIX_process_self();
+    self->simcall.call = SIMCALL_HOST_GET_AVAILABLE_SPEED;
+    memset(&self->simcall.result, 0, sizeof(self->simcall.result));
+    memset(self->simcall.args, 0, sizeof(self->simcall.args));
+    self->simcall.args[0].dp = (void*) host;
+    if (self != simix_global->maestro_process) {
+      XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
+                SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
+      SIMIX_process_yield(self);
+    } else {
+      SIMIX_simcall_pre(&self->simcall, 0);
+    }    
+    return self->simcall.result.d;
+  }
+  inline static int simcall_BODY_host_get_state(smx_host_t host) {
+    smx_process_t self = SIMIX_process_self();
+    self->simcall.call = SIMCALL_HOST_GET_STATE;
+    memset(&self->simcall.result, 0, sizeof(self->simcall.result));
+    memset(self->simcall.args, 0, sizeof(self->simcall.args));
+    self->simcall.args[0].dp = (void*) host;
+    if (self != simix_global->maestro_process) {
+      XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
+                SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
+      SIMIX_process_yield(self);
+    } else {
+      SIMIX_simcall_pre(&self->simcall, 0);
+    }    
+    return self->simcall.result.i;
+  }
+  inline static void* simcall_BODY_host_get_data(smx_host_t host) {
+    smx_process_t self = SIMIX_process_self();
+    self->simcall.call = SIMCALL_HOST_GET_DATA;
+    memset(&self->simcall.result, 0, sizeof(self->simcall.result));
+    memset(self->simcall.args, 0, sizeof(self->simcall.args));
+    self->simcall.args[0].dp = (void*) host;
+    if (self != simix_global->maestro_process) {
+      XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
+                SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
+      SIMIX_process_yield(self);
+    } else {
+      SIMIX_simcall_pre(&self->simcall, 0);
+    }    
+    return self->simcall.result.dp;
+  }
+  inline static void simcall_BODY_host_set_data(smx_host_t host, void* data) {
+    smx_process_t self = SIMIX_process_self();
+    self->simcall.call = SIMCALL_HOST_SET_DATA;
+    memset(&self->simcall.result, 0, sizeof(self->simcall.result));
+    memset(self->simcall.args, 0, sizeof(self->simcall.args));
+    self->simcall.args[0].dp = (void*) host;
+    self->simcall.args[1].dp = (void*) data;
+    if (self != simix_global->maestro_process) {
+      XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
+                SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
+      SIMIX_process_yield(self);
+    } else {
+      SIMIX_simcall_pre(&self->simcall, 0);
+    }    
+    
+  }
+  inline static double simcall_BODY_host_get_current_power_peak(smx_host_t host) {
+    smx_process_t self = SIMIX_process_self();
+    self->simcall.call = SIMCALL_HOST_GET_CURRENT_POWER_PEAK;
+    memset(&self->simcall.result, 0, sizeof(self->simcall.result));
+    memset(self->simcall.args, 0, sizeof(self->simcall.args));
+    self->simcall.args[0].dp = (void*) host;
+    if (self != simix_global->maestro_process) {
+      XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
+                SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
+      SIMIX_process_yield(self);
+    } else {
+      SIMIX_simcall_pre(&self->simcall, 0);
+    }    
+    return self->simcall.result.d;
+  }
+  inline static double simcall_BODY_host_get_power_peak_at(smx_host_t host, int pstate_index) {
+    smx_process_t self = SIMIX_process_self();
+    self->simcall.call = SIMCALL_HOST_GET_POWER_PEAK_AT;
+    memset(&self->simcall.result, 0, sizeof(self->simcall.result));
+    memset(self->simcall.args, 0, sizeof(self->simcall.args));
+    self->simcall.args[0].dp = (void*) host;
+    self->simcall.args[1].i = (int) pstate_index;
+    if (self != simix_global->maestro_process) {
+      XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
+                SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
+      SIMIX_process_yield(self);
+    } else {
+      SIMIX_simcall_pre(&self->simcall, 0);
+    }    
+    return self->simcall.result.d;
+  }
+  inline static int simcall_BODY_host_get_nb_pstates(smx_host_t host) {
+    smx_process_t self = SIMIX_process_self();
+    self->simcall.call = SIMCALL_HOST_GET_NB_PSTATES;
+    memset(&self->simcall.result, 0, sizeof(self->simcall.result));
+    memset(self->simcall.args, 0, sizeof(self->simcall.args));
+    self->simcall.args[0].dp = (void*) host;
+    if (self != simix_global->maestro_process) {
+      XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
+                SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
+      SIMIX_process_yield(self);
+    } else {
+      SIMIX_simcall_pre(&self->simcall, 0);
+    }    
+    return self->simcall.result.i;
+  }
+  inline static void simcall_BODY_host_set_power_peak_at(smx_host_t host, int pstate_index) {
+    smx_process_t self = SIMIX_process_self();
+    self->simcall.call = SIMCALL_HOST_SET_POWER_PEAK_AT;
+    memset(&self->simcall.result, 0, sizeof(self->simcall.result));
+    memset(self->simcall.args, 0, sizeof(self->simcall.args));
+    self->simcall.args[0].dp = (void*) host;
+    self->simcall.args[1].i = (int) pstate_index;
+    if (self != simix_global->maestro_process) {
+      XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
+                SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
+      SIMIX_process_yield(self);
+    } else {
+      SIMIX_simcall_pre(&self->simcall, 0);
+    }    
+    
+  }
+  inline static double simcall_BODY_host_get_consumed_energy(smx_host_t host) {
+    smx_process_t self = SIMIX_process_self();
+    self->simcall.call = SIMCALL_HOST_GET_CONSUMED_ENERGY;
+    memset(&self->simcall.result, 0, sizeof(self->simcall.result));
+    memset(self->simcall.args, 0, sizeof(self->simcall.args));
+    self->simcall.args[0].dp = (void*) host;
+    if (self != simix_global->maestro_process) {
+      XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
+                SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
+      SIMIX_process_yield(self);
+    } else {
+      SIMIX_simcall_pre(&self->simcall, 0);
+    }    
+    return self->simcall.result.d;
+  }
+  inline static smx_action_t simcall_BODY_host_execute(const char* name, smx_host_t host, double computation_amount, double priority, double bound, unsigned long affinity_mask) {
+    smx_process_t self = SIMIX_process_self();
+    self->simcall.call = SIMCALL_HOST_EXECUTE;
+    memset(&self->simcall.result, 0, sizeof(self->simcall.result));
+    memset(self->simcall.args, 0, sizeof(self->simcall.args));
+    self->simcall.args[0].cc = (const char*) name;
+    self->simcall.args[1].dp = (void*) host;
+    self->simcall.args[2].d = (double) computation_amount;
+    self->simcall.args[3].d = (double) priority;
+    self->simcall.args[4].d = (double) bound;
+    self->simcall.args[5].ul = (unsigned long) affinity_mask;
+    if (self != simix_global->maestro_process) {
+      XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
+                SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
+      SIMIX_process_yield(self);
+    } else {
+      SIMIX_simcall_pre(&self->simcall, 0);
+    }    
+    return self->simcall.result.dp;
+  }
+  inline static smx_action_t simcall_BODY_host_parallel_execute(const char* name, int host_nb, smx_host_t* host_list, double* computation_amount, double* communication_amount, double amount, double rate) {
+    smx_process_t self = SIMIX_process_self();
+    self->simcall.call = SIMCALL_HOST_PARALLEL_EXECUTE;
+    memset(&self->simcall.result, 0, sizeof(self->simcall.result));
+    memset(self->simcall.args, 0, sizeof(self->simcall.args));
+    self->simcall.args[0].cc = (const char*) name;
+    self->simcall.args[1].i = (int) host_nb;
+    self->simcall.args[2].dp = (void*) host_list;
+    self->simcall.args[3].dp = (void*) computation_amount;
+    self->simcall.args[4].dp = (void*) communication_amount;
+    self->simcall.args[5].d = (double) amount;
+    self->simcall.args[6].d = (double) rate;
+    if (self != simix_global->maestro_process) {
+      XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
+                SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
+      SIMIX_process_yield(self);
+    } else {
+      SIMIX_simcall_pre(&self->simcall, 0);
+    }    
+    return self->simcall.result.dp;
+  }
+  inline static void simcall_BODY_host_execution_destroy(smx_action_t execution) {
+    smx_process_t self = SIMIX_process_self();
+    self->simcall.call = SIMCALL_HOST_EXECUTION_DESTROY;
+    memset(&self->simcall.result, 0, sizeof(self->simcall.result));
+    memset(self->simcall.args, 0, sizeof(self->simcall.args));
+    self->simcall.args[0].dp = (void*) execution;
+    if (self != simix_global->maestro_process) {
+      XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
+                SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
+      SIMIX_process_yield(self);
+    } else {
+      SIMIX_simcall_pre(&self->simcall, 0);
+    }    
+    
+  }
+  inline static void simcall_BODY_host_execution_cancel(smx_action_t execution) {
+    smx_process_t self = SIMIX_process_self();
+    self->simcall.call = SIMCALL_HOST_EXECUTION_CANCEL;
+    memset(&self->simcall.result, 0, sizeof(self->simcall.result));
+    memset(self->simcall.args, 0, sizeof(self->simcall.args));
+    self->simcall.args[0].dp = (void*) execution;
+    if (self != simix_global->maestro_process) {
+      XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
+                SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
+      SIMIX_process_yield(self);
+    } else {
+      SIMIX_simcall_pre(&self->simcall, 0);
+    }    
+    
+  }
+  inline static double simcall_BODY_host_execution_get_remains(smx_action_t execution) {
+    smx_process_t self = SIMIX_process_self();
+    self->simcall.call = SIMCALL_HOST_EXECUTION_GET_REMAINS;
+    memset(&self->simcall.result, 0, sizeof(self->simcall.result));
+    memset(self->simcall.args, 0, sizeof(self->simcall.args));
+    self->simcall.args[0].dp = (void*) execution;
+    if (self != simix_global->maestro_process) {
+      XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
+                SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
+      SIMIX_process_yield(self);
+    } else {
+      SIMIX_simcall_pre(&self->simcall, 0);
+    }    
+    return self->simcall.result.d;
+  }
+  inline static int simcall_BODY_host_execution_get_state(smx_action_t execution) {
+    smx_process_t self = SIMIX_process_self();
+    self->simcall.call = SIMCALL_HOST_EXECUTION_GET_STATE;
+    memset(&self->simcall.result, 0, sizeof(self->simcall.result));
+    memset(self->simcall.args, 0, sizeof(self->simcall.args));
+    self->simcall.args[0].dp = (void*) execution;
+    if (self != simix_global->maestro_process) {
+      XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
+                SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
+      SIMIX_process_yield(self);
+    } else {
+      SIMIX_simcall_pre(&self->simcall, 0);
+    }    
+    return self->simcall.result.i;
+  }
+  inline static void simcall_BODY_host_execution_set_priority(smx_action_t execution, double priority) {
+    smx_process_t self = SIMIX_process_self();
+    self->simcall.call = SIMCALL_HOST_EXECUTION_SET_PRIORITY;
+    memset(&self->simcall.result, 0, sizeof(self->simcall.result));
+    memset(self->simcall.args, 0, sizeof(self->simcall.args));
+    self->simcall.args[0].dp = (void*) execution;
+    self->simcall.args[1].d = (double) priority;
+    if (self != simix_global->maestro_process) {
+      XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
+                SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
+      SIMIX_process_yield(self);
+    } else {
+      SIMIX_simcall_pre(&self->simcall, 0);
+    }    
+    
+  }
+  inline static void simcall_BODY_host_execution_set_bound(smx_action_t execution, double bound) {
+    smx_process_t self = SIMIX_process_self();
+    self->simcall.call = SIMCALL_HOST_EXECUTION_SET_BOUND;
+    memset(&self->simcall.result, 0, sizeof(self->simcall.result));
+    memset(self->simcall.args, 0, sizeof(self->simcall.args));
+    self->simcall.args[0].dp = (void*) execution;
+    self->simcall.args[1].d = (double) bound;
+    if (self != simix_global->maestro_process) {
+      XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
+                SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
+      SIMIX_process_yield(self);
+    } else {
+      SIMIX_simcall_pre(&self->simcall, 0);
+    }    
+    
+  }
+  inline static void simcall_BODY_host_execution_set_affinity(smx_action_t execution, smx_host_t ws, unsigned long mask) {
+    smx_process_t self = SIMIX_process_self();
+    self->simcall.call = SIMCALL_HOST_EXECUTION_SET_AFFINITY;
+    memset(&self->simcall.result, 0, sizeof(self->simcall.result));
+    memset(self->simcall.args, 0, sizeof(self->simcall.args));
+    self->simcall.args[0].dp = (void*) execution;
+    self->simcall.args[1].dp = (void*) ws;
+    self->simcall.args[2].ul = (unsigned long) mask;
+    if (self != simix_global->maestro_process) {
+      XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
+                SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
+      SIMIX_process_yield(self);
+    } else {
+      SIMIX_simcall_pre(&self->simcall, 0);
+    }    
+    
+  }
+  inline static int simcall_BODY_host_execution_wait(smx_action_t execution) {
+    smx_process_t self = SIMIX_process_self();
+    self->simcall.call = SIMCALL_HOST_EXECUTION_WAIT;
+    memset(&self->simcall.result, 0, sizeof(self->simcall.result));
+    memset(self->simcall.args, 0, sizeof(self->simcall.args));
+    self->simcall.args[0].dp = (void*) execution;
+    if (self != simix_global->maestro_process) {
+      XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
+                SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
+      SIMIX_process_yield(self);
+    } else {
+      SIMIX_simcall_pre(&self->simcall, 0);
+    }    
+    return self->simcall.result.i;
+  }
+  inline static xbt_dict_t simcall_BODY_host_get_storage_list(smx_host_t host) {
+    smx_process_t self = SIMIX_process_self();
+    self->simcall.call = SIMCALL_HOST_GET_STORAGE_LIST;
+    memset(&self->simcall.result, 0, sizeof(self->simcall.result));
+    memset(self->simcall.args, 0, sizeof(self->simcall.args));
+    self->simcall.args[0].dp = (void*) host;
+    if (self != simix_global->maestro_process) {
+      XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
+                SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
+      SIMIX_process_yield(self);
+    } else {
+      SIMIX_simcall_pre(&self->simcall, 0);
+    }    
+    return self->simcall.result.dp;
+  }
+  inline static void simcall_BODY_host_get_params(smx_host_t ind_vm, ws_params_t params) {
+    smx_process_t self = SIMIX_process_self();
+    self->simcall.call = SIMCALL_HOST_GET_PARAMS;
+    memset(&self->simcall.result, 0, sizeof(self->simcall.result));
+    memset(self->simcall.args, 0, sizeof(self->simcall.args));
+    self->simcall.args[0].dp = (void*) ind_vm;
+    self->simcall.args[1].dp = (void*) params;
+    if (self != simix_global->maestro_process) {
+      XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
+                SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
+      SIMIX_process_yield(self);
+    } else {
+      SIMIX_simcall_pre(&self->simcall, 0);
+    }    
+    
+  }
+  inline static void simcall_BODY_host_set_params(smx_host_t ind_vm, ws_params_t params) {
+    smx_process_t self = SIMIX_process_self();
+    self->simcall.call = SIMCALL_HOST_SET_PARAMS;
+    memset(&self->simcall.result, 0, sizeof(self->simcall.result));
+    memset(self->simcall.args, 0, sizeof(self->simcall.args));
+    self->simcall.args[0].dp = (void*) ind_vm;
+    self->simcall.args[1].dp = (void*) params;
+    if (self != simix_global->maestro_process) {
+      XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
+                SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
+      SIMIX_process_yield(self);
+    } else {
+      SIMIX_simcall_pre(&self->simcall, 0);
+    }    
+    
+  }
+  inline static void* simcall_BODY_vm_create(const char* name, smx_host_t ind_pm) {
+    smx_process_t self = SIMIX_process_self();
+    self->simcall.call = SIMCALL_VM_CREATE;
+    memset(&self->simcall.result, 0, sizeof(self->simcall.result));
+    memset(self->simcall.args, 0, sizeof(self->simcall.args));
+    self->simcall.args[0].cc = (const char*) name;
+    self->simcall.args[1].dp = (void*) ind_pm;
+    if (self != simix_global->maestro_process) {
+      XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
+                SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
+      SIMIX_process_yield(self);
+    } else {
+      SIMIX_simcall_pre(&self->simcall, 0);
+    }    
+    return self->simcall.result.dp;
+  }
+  inline static void simcall_BODY_vm_start(smx_host_t ind_vm) {
+    smx_process_t self = SIMIX_process_self();
+    self->simcall.call = SIMCALL_VM_START;
+    memset(&self->simcall.result, 0, sizeof(self->simcall.result));
+    memset(self->simcall.args, 0, sizeof(self->simcall.args));
+    self->simcall.args[0].dp = (void*) ind_vm;
+    if (self != simix_global->maestro_process) {
+      XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
+                SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
+      SIMIX_process_yield(self);
+    } else {
+      SIMIX_simcall_pre(&self->simcall, 0);
+    }    
+    
+  }
+  inline static void simcall_BODY_vm_set_state(smx_host_t ind_vm, int state) {
+    smx_process_t self = SIMIX_process_self();
+    self->simcall.call = SIMCALL_VM_SET_STATE;
+    memset(&self->simcall.result, 0, sizeof(self->simcall.result));
+    memset(self->simcall.args, 0, sizeof(self->simcall.args));
+    self->simcall.args[0].dp = (void*) ind_vm;
+    self->simcall.args[1].i = (int) state;
+    if (self != simix_global->maestro_process) {
+      XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
+                SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
+      SIMIX_process_yield(self);
+    } else {
+      SIMIX_simcall_pre(&self->simcall, 0);
+    }    
+    
+  }
+  inline static int simcall_BODY_vm_get_state(smx_host_t ind_vm) {
+    smx_process_t self = SIMIX_process_self();
+    self->simcall.call = SIMCALL_VM_GET_STATE;
+    memset(&self->simcall.result, 0, sizeof(self->simcall.result));
+    memset(self->simcall.args, 0, sizeof(self->simcall.args));
+    self->simcall.args[0].dp = (void*) ind_vm;
+    if (self != simix_global->maestro_process) {
+      XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
+                SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
+      SIMIX_process_yield(self);
+    } else {
+      SIMIX_simcall_pre(&self->simcall, 0);
+    }    
+    return self->simcall.result.i;
+  }
+  inline static void simcall_BODY_vm_migrate(smx_host_t ind_vm, smx_host_t ind_dst_pm) {
+    smx_process_t self = SIMIX_process_self();
+    self->simcall.call = SIMCALL_VM_MIGRATE;
+    memset(&self->simcall.result, 0, sizeof(self->simcall.result));
+    memset(self->simcall.args, 0, sizeof(self->simcall.args));
+    self->simcall.args[0].dp = (void*) ind_vm;
+    self->simcall.args[1].dp = (void*) ind_dst_pm;
+    if (self != simix_global->maestro_process) {
+      XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
+                SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
+      SIMIX_process_yield(self);
+    } else {
+      SIMIX_simcall_pre(&self->simcall, 0);
+    }    
+    
+  }
+  inline static void* simcall_BODY_vm_get_pm(smx_host_t ind_vm) {
+    smx_process_t self = SIMIX_process_self();
+    self->simcall.call = SIMCALL_VM_GET_PM;
+    memset(&self->simcall.result, 0, sizeof(self->simcall.result));
+    memset(self->simcall.args, 0, sizeof(self->simcall.args));
+    self->simcall.args[0].dp = (void*) ind_vm;
+    if (self != simix_global->maestro_process) {
+      XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
+                SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
+      SIMIX_process_yield(self);
+    } else {
+      SIMIX_simcall_pre(&self->simcall, 0);
+    }    
+    return self->simcall.result.dp;
+  }
+  inline static void simcall_BODY_vm_set_bound(smx_host_t ind_vm, double bound) {
+    smx_process_t self = SIMIX_process_self();
+    self->simcall.call = SIMCALL_VM_SET_BOUND;
+    memset(&self->simcall.result, 0, sizeof(self->simcall.result));
+    memset(self->simcall.args, 0, sizeof(self->simcall.args));
+    self->simcall.args[0].dp = (void*) ind_vm;
+    self->simcall.args[1].d = (double) bound;
+    if (self != simix_global->maestro_process) {
+      XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
+                SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
+      SIMIX_process_yield(self);
+    } else {
+      SIMIX_simcall_pre(&self->simcall, 0);
+    }    
+    
+  }
+  inline static void simcall_BODY_vm_set_affinity(smx_host_t ind_vm, smx_host_t ind_pm, unsigned long mask) {
+    smx_process_t self = SIMIX_process_self();
+    self->simcall.call = SIMCALL_VM_SET_AFFINITY;
+    memset(&self->simcall.result, 0, sizeof(self->simcall.result));
+    memset(self->simcall.args, 0, sizeof(self->simcall.args));
+    self->simcall.args[0].dp = (void*) ind_vm;
+    self->simcall.args[1].dp = (void*) ind_pm;
+    self->simcall.args[2].ul = (unsigned long) mask;
+    if (self != simix_global->maestro_process) {
+      XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
+                SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
+      SIMIX_process_yield(self);
+    } else {
+      SIMIX_simcall_pre(&self->simcall, 0);
+    }    
+    
+  }
+  inline static void simcall_BODY_vm_destroy(smx_host_t ind_vm) {
+    smx_process_t self = SIMIX_process_self();
+    self->simcall.call = SIMCALL_VM_DESTROY;
+    memset(&self->simcall.result, 0, sizeof(self->simcall.result));
+    memset(self->simcall.args, 0, sizeof(self->simcall.args));
+    self->simcall.args[0].dp = (void*) ind_vm;
+    if (self != simix_global->maestro_process) {
+      XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
+                SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
+      SIMIX_process_yield(self);
+    } else {
+      SIMIX_simcall_pre(&self->simcall, 0);
+    }    
+    
+  }
+  inline static void simcall_BODY_vm_suspend(smx_host_t ind_vm) {
+    smx_process_t self = SIMIX_process_self();
+    self->simcall.call = SIMCALL_VM_SUSPEND;
+    memset(&self->simcall.result, 0, sizeof(self->simcall.result));
+    memset(self->simcall.args, 0, sizeof(self->simcall.args));
+    self->simcall.args[0].dp = (void*) ind_vm;
+    if (self != simix_global->maestro_process) {
+      XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
+                SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
+      SIMIX_process_yield(self);
+    } else {
+      SIMIX_simcall_pre(&self->simcall, 0);
+    }    
+    
+  }
+  inline static void simcall_BODY_vm_resume(smx_host_t ind_vm) {
+    smx_process_t self = SIMIX_process_self();
+    self->simcall.call = SIMCALL_VM_RESUME;
+    memset(&self->simcall.result, 0, sizeof(self->simcall.result));
+    memset(self->simcall.args, 0, sizeof(self->simcall.args));
+    self->simcall.args[0].dp = (void*) ind_vm;
+    if (self != simix_global->maestro_process) {
+      XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
+                SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
+      SIMIX_process_yield(self);
+    } else {
+      SIMIX_simcall_pre(&self->simcall, 0);
+    }    
+    
+  }
+  inline static void simcall_BODY_vm_shutdown(smx_host_t ind_vm) {
+    smx_process_t self = SIMIX_process_self();
+    self->simcall.call = SIMCALL_VM_SHUTDOWN;
+    memset(&self->simcall.result, 0, sizeof(self->simcall.result));
+    memset(self->simcall.args, 0, sizeof(self->simcall.args));
+    self->simcall.args[0].dp = (void*) ind_vm;
+    if (self != simix_global->maestro_process) {
+      XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
+                SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
+      SIMIX_process_yield(self);
+    } else {
+      SIMIX_simcall_pre(&self->simcall, 0);
+    }    
+    
+  }
+  inline static void simcall_BODY_vm_save(smx_host_t ind_vm) {
+    smx_process_t self = SIMIX_process_self();
+    self->simcall.call = SIMCALL_VM_SAVE;
+    memset(&self->simcall.result, 0, sizeof(self->simcall.result));
+    memset(self->simcall.args, 0, sizeof(self->simcall.args));
+    self->simcall.args[0].dp = (void*) ind_vm;
+    if (self != simix_global->maestro_process) {
+      XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
+                SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
+      SIMIX_process_yield(self);
+    } else {
+      SIMIX_simcall_pre(&self->simcall, 0);
+    }    
+    
+  }
+  inline static void simcall_BODY_vm_restore(smx_host_t ind_vm) {
+    smx_process_t self = SIMIX_process_self();
+    self->simcall.call = SIMCALL_VM_RESTORE;
+    memset(&self->simcall.result, 0, sizeof(self->simcall.result));
+    memset(self->simcall.args, 0, sizeof(self->simcall.args));
+    self->simcall.args[0].dp = (void*) ind_vm;
+    if (self != simix_global->maestro_process) {
+      XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
+                SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
+      SIMIX_process_yield(self);
+    } else {
+      SIMIX_simcall_pre(&self->simcall, 0);
+    }    
+    
+  }
+  inline static void simcall_BODY_process_create(smx_process_t* process, 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) {
+    smx_process_t self = SIMIX_process_self();
+    self->simcall.call = SIMCALL_PROCESS_CREATE;
+    memset(&self->simcall.result, 0, sizeof(self->simcall.result));
+    memset(self->simcall.args, 0, sizeof(self->simcall.args));
+    self->simcall.args[0].dp = (void*) process;
+    self->simcall.args[1].cc = (const char*) name;
+    self->simcall.args[2].fp = (FPtr) code;
+    self->simcall.args[3].dp = (void*) data;
+    self->simcall.args[4].cc = (const char*) hostname;
+    self->simcall.args[5].d = (double) kill_time;
+    self->simcall.args[6].i = (int) argc;
+    self->simcall.args[7].dp = (void*) argv;
+    self->simcall.args[8].dp = (void*) properties;
+    self->simcall.args[9].i = (int) auto_restart;
+    if (self != simix_global->maestro_process) {
+      XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
+                SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
+      SIMIX_process_yield(self);
+    } else {
+      SIMIX_simcall_pre(&self->simcall, 0);
+    }    
+    
+  }
+  inline static void simcall_BODY_process_kill(smx_process_t process) {
+    smx_process_t self = SIMIX_process_self();
+    self->simcall.call = SIMCALL_PROCESS_KILL;
+    memset(&self->simcall.result, 0, sizeof(self->simcall.result));
+    memset(self->simcall.args, 0, sizeof(self->simcall.args));
+    self->simcall.args[0].dp = (void*) process;
+    if (self != simix_global->maestro_process) {
+      XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
+                SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
+      SIMIX_process_yield(self);
+    } else {
+      SIMIX_simcall_pre(&self->simcall, 0);
+    }    
+    
+  }
+  inline static void simcall_BODY_process_killall(int reset_pid) {
+    smx_process_t self = SIMIX_process_self();
+    self->simcall.call = SIMCALL_PROCESS_KILLALL;
+    memset(&self->simcall.result, 0, sizeof(self->simcall.result));
+    memset(self->simcall.args, 0, sizeof(self->simcall.args));
+    self->simcall.args[0].i = (int) reset_pid;
+    if (self != simix_global->maestro_process) {
+      XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
+                SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
+      SIMIX_process_yield(self);
+    } else {
+      SIMIX_simcall_pre(&self->simcall, 0);
+    }    
+    
+  }
+  inline static void simcall_BODY_process_cleanup(smx_process_t process) {
+    smx_process_t self = SIMIX_process_self();
+    self->simcall.call = SIMCALL_PROCESS_CLEANUP;
+    memset(&self->simcall.result, 0, sizeof(self->simcall.result));
+    memset(self->simcall.args, 0, sizeof(self->simcall.args));
+    self->simcall.args[0].dp = (void*) process;
+    if (self != simix_global->maestro_process) {
+      XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
+                SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
+      SIMIX_process_yield(self);
+    } else {
+      SIMIX_simcall_pre(&self->simcall, 0);
+    }    
+    
+  }
+  inline static void simcall_BODY_process_change_host(smx_process_t process, smx_host_t dest) {
+    smx_process_t self = SIMIX_process_self();
+    self->simcall.call = SIMCALL_PROCESS_CHANGE_HOST;
+    memset(&self->simcall.result, 0, sizeof(self->simcall.result));
+    memset(self->simcall.args, 0, sizeof(self->simcall.args));
+    self->simcall.args[0].dp = (void*) process;
+    self->simcall.args[1].dp = (void*) dest;
+    if (self != simix_global->maestro_process) {
+      XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
+                SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
+      SIMIX_process_yield(self);
+    } else {
+      SIMIX_simcall_pre(&self->simcall, 0);
+    }    
+    
+  }
+  inline static void simcall_BODY_process_suspend(smx_process_t process) {
+    smx_process_t self = SIMIX_process_self();
+    self->simcall.call = SIMCALL_PROCESS_SUSPEND;
+    memset(&self->simcall.result, 0, sizeof(self->simcall.result));
+    memset(self->simcall.args, 0, sizeof(self->simcall.args));
+    self->simcall.args[0].dp = (void*) process;
+    if (self != simix_global->maestro_process) {
+      XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
+                SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
+      SIMIX_process_yield(self);
+    } else {
+      SIMIX_simcall_pre(&self->simcall, 0);
+    }    
+    
+  }
+  inline static void simcall_BODY_process_resume(smx_process_t process) {
+    smx_process_t self = SIMIX_process_self();
+    self->simcall.call = SIMCALL_PROCESS_RESUME;
+    memset(&self->simcall.result, 0, sizeof(self->simcall.result));
+    memset(self->simcall.args, 0, sizeof(self->simcall.args));
+    self->simcall.args[0].dp = (void*) process;
+    if (self != simix_global->maestro_process) {
+      XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
+                SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
+      SIMIX_process_yield(self);
+    } else {
+      SIMIX_simcall_pre(&self->simcall, 0);
+    }    
+    
+  }
+  inline static int simcall_BODY_process_count() {
+    smx_process_t self = SIMIX_process_self();
+    self->simcall.call = SIMCALL_PROCESS_COUNT;
+    memset(&self->simcall.result, 0, sizeof(self->simcall.result));
+    memset(self->simcall.args, 0, sizeof(self->simcall.args));
+
+    if (self != simix_global->maestro_process) {
+      XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
+                SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
+      SIMIX_process_yield(self);
+    } else {
+      SIMIX_simcall_pre(&self->simcall, 0);
+    }    
+    return self->simcall.result.i;
+  }
+  inline static int simcall_BODY_process_get_PID(smx_process_t process) {
+    smx_process_t self = SIMIX_process_self();
+    self->simcall.call = SIMCALL_PROCESS_GET_PID;
+    memset(&self->simcall.result, 0, sizeof(self->simcall.result));
+    memset(self->simcall.args, 0, sizeof(self->simcall.args));
+    self->simcall.args[0].dp = (void*) process;
+    if (self != simix_global->maestro_process) {
+      XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
+                SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
+      SIMIX_process_yield(self);
+    } else {
+      SIMIX_simcall_pre(&self->simcall, 0);
+    }    
+    return self->simcall.result.i;
+  }
+  inline static int simcall_BODY_process_get_PPID(smx_process_t process) {
+    smx_process_t self = SIMIX_process_self();
+    self->simcall.call = SIMCALL_PROCESS_GET_PPID;
+    memset(&self->simcall.result, 0, sizeof(self->simcall.result));
+    memset(self->simcall.args, 0, sizeof(self->simcall.args));
+    self->simcall.args[0].dp = (void*) process;
+    if (self != simix_global->maestro_process) {
+      XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
+                SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
+      SIMIX_process_yield(self);
+    } else {
+      SIMIX_simcall_pre(&self->simcall, 0);
+    }    
+    return self->simcall.result.i;
+  }
+  inline static void* simcall_BODY_process_get_data(smx_process_t process) {
+    smx_process_t self = SIMIX_process_self();
+    self->simcall.call = SIMCALL_PROCESS_GET_DATA;
+    memset(&self->simcall.result, 0, sizeof(self->simcall.result));
+    memset(self->simcall.args, 0, sizeof(self->simcall.args));
+    self->simcall.args[0].dp = (void*) process;
+    if (self != simix_global->maestro_process) {
+      XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
+                SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
+      SIMIX_process_yield(self);
+    } else {
+      SIMIX_simcall_pre(&self->simcall, 0);
+    }    
+    return self->simcall.result.dp;
+  }
+  inline static void simcall_BODY_process_set_data(smx_process_t process, void* data) {
+    smx_process_t self = SIMIX_process_self();
+    self->simcall.call = SIMCALL_PROCESS_SET_DATA;
+    memset(&self->simcall.result, 0, sizeof(self->simcall.result));
+    memset(self->simcall.args, 0, sizeof(self->simcall.args));
+    self->simcall.args[0].dp = (void*) process;
+    self->simcall.args[1].dp = (void*) data;
+    if (self != simix_global->maestro_process) {
+      XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
+                SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
+      SIMIX_process_yield(self);
+    } else {
+      SIMIX_simcall_pre(&self->simcall, 0);
+    }    
+    
+  }
+  inline static smx_host_t simcall_BODY_process_get_host(smx_process_t process) {
+    smx_process_t self = SIMIX_process_self();
+    self->simcall.call = SIMCALL_PROCESS_GET_HOST;
+    memset(&self->simcall.result, 0, sizeof(self->simcall.result));
+    memset(self->simcall.args, 0, sizeof(self->simcall.args));
+    self->simcall.args[0].dp = (void*) process;
+    if (self != simix_global->maestro_process) {
+      XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
+                SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
+      SIMIX_process_yield(self);
+    } else {
+      SIMIX_simcall_pre(&self->simcall, 0);
+    }    
+    return self->simcall.result.dp;
+  }
+  inline static const char* simcall_BODY_process_get_name(smx_process_t process) {
+    smx_process_t self = SIMIX_process_self();
+    self->simcall.call = SIMCALL_PROCESS_GET_NAME;
+    memset(&self->simcall.result, 0, sizeof(self->simcall.result));
+    memset(self->simcall.args, 0, sizeof(self->simcall.args));
+    self->simcall.args[0].dp = (void*) process;
+    if (self != simix_global->maestro_process) {
+      XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
+                SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
+      SIMIX_process_yield(self);
+    } else {
+      SIMIX_simcall_pre(&self->simcall, 0);
+    }    
+    return self->simcall.result.cc;
+  }
+  inline static int simcall_BODY_process_is_suspended(smx_process_t process) {
+    smx_process_t self = SIMIX_process_self();
+    self->simcall.call = SIMCALL_PROCESS_IS_SUSPENDED;
+    memset(&self->simcall.result, 0, sizeof(self->simcall.result));
+    memset(self->simcall.args, 0, sizeof(self->simcall.args));
+    self->simcall.args[0].dp = (void*) process;
+    if (self != simix_global->maestro_process) {
+      XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
+                SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
+      SIMIX_process_yield(self);
+    } else {
+      SIMIX_simcall_pre(&self->simcall, 0);
+    }    
+    return self->simcall.result.i;
+  }
+  inline static xbt_dict_t simcall_BODY_process_get_properties(smx_process_t process) {
+    smx_process_t self = SIMIX_process_self();
+    self->simcall.call = SIMCALL_PROCESS_GET_PROPERTIES;
+    memset(&self->simcall.result, 0, sizeof(self->simcall.result));
+    memset(self->simcall.args, 0, sizeof(self->simcall.args));
+    self->simcall.args[0].dp = (void*) process;
+    if (self != simix_global->maestro_process) {
+      XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
+                SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
+      SIMIX_process_yield(self);
+    } else {
+      SIMIX_simcall_pre(&self->simcall, 0);
+    }    
+    return self->simcall.result.dp;
+  }
+  inline static int simcall_BODY_process_sleep(double duration) {
+    smx_process_t self = SIMIX_process_self();
+    self->simcall.call = SIMCALL_PROCESS_SLEEP;
+    memset(&self->simcall.result, 0, sizeof(self->simcall.result));
+    memset(self->simcall.args, 0, sizeof(self->simcall.args));
+    self->simcall.args[0].d = (double) duration;
+    if (self != simix_global->maestro_process) {
+      XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
+                SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
+      SIMIX_process_yield(self);
+    } else {
+      SIMIX_simcall_pre(&self->simcall, 0);
+    }    
+    return self->simcall.result.i;
+  }
+  inline static void simcall_BODY_process_on_exit(smx_process_t process, int_f_pvoid_t fun, void* data) {
+    smx_process_t self = SIMIX_process_self();
+    self->simcall.call = SIMCALL_PROCESS_ON_EXIT;
+    memset(&self->simcall.result, 0, sizeof(self->simcall.result));
+    memset(self->simcall.args, 0, sizeof(self->simcall.args));
+    self->simcall.args[0].dp = (void*) process;
+    self->simcall.args[1].fp = (FPtr) fun;
+    self->simcall.args[2].dp = (void*) data;
+    if (self != simix_global->maestro_process) {
+      XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
+                SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
+      SIMIX_process_yield(self);
+    } else {
+      SIMIX_simcall_pre(&self->simcall, 0);
+    }    
+    
+  }
+  inline static void simcall_BODY_process_auto_restart_set(smx_process_t process, int auto_restart) {
+    smx_process_t self = SIMIX_process_self();
+    self->simcall.call = SIMCALL_PROCESS_AUTO_RESTART_SET;
+    memset(&self->simcall.result, 0, sizeof(self->simcall.result));
+    memset(self->simcall.args, 0, sizeof(self->simcall.args));
+    self->simcall.args[0].dp = (void*) process;
+    self->simcall.args[1].i = (int) auto_restart;
+    if (self != simix_global->maestro_process) {
+      XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
+                SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
+      SIMIX_process_yield(self);
+    } else {
+      SIMIX_simcall_pre(&self->simcall, 0);
+    }    
+    
+  }
+  inline static smx_process_t simcall_BODY_process_restart(smx_process_t process) {
+    smx_process_t self = SIMIX_process_self();
+    self->simcall.call = SIMCALL_PROCESS_RESTART;
+    memset(&self->simcall.result, 0, sizeof(self->simcall.result));
+    memset(self->simcall.args, 0, sizeof(self->simcall.args));
+    self->simcall.args[0].dp = (void*) process;
+    if (self != simix_global->maestro_process) {
+      XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
+                SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
+      SIMIX_process_yield(self);
+    } else {
+      SIMIX_simcall_pre(&self->simcall, 0);
+    }    
+    return self->simcall.result.dp;
+  }
+  inline static smx_rdv_t simcall_BODY_rdv_create(const char* name) {
+    smx_process_t self = SIMIX_process_self();
+    self->simcall.call = SIMCALL_RDV_CREATE;
+    memset(&self->simcall.result, 0, sizeof(self->simcall.result));
+    memset(self->simcall.args, 0, sizeof(self->simcall.args));
+    self->simcall.args[0].cc = (const char*) name;
+    if (self != simix_global->maestro_process) {
+      XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
+                SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
+      SIMIX_process_yield(self);
+    } else {
+      SIMIX_simcall_pre(&self->simcall, 0);
+    }    
+    return self->simcall.result.dp;
+  }
+  inline static void simcall_BODY_rdv_destroy(smx_rdv_t rdv) {
+    smx_process_t self = SIMIX_process_self();
+    self->simcall.call = SIMCALL_RDV_DESTROY;
+    memset(&self->simcall.result, 0, sizeof(self->simcall.result));
+    memset(self->simcall.args, 0, sizeof(self->simcall.args));
+    self->simcall.args[0].dp = (void*) rdv;
+    if (self != simix_global->maestro_process) {
+      XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
+                SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
+      SIMIX_process_yield(self);
+    } else {
+      SIMIX_simcall_pre(&self->simcall, 0);
+    }    
+    
+  }
+  inline static smx_host_t simcall_BODY_rdv_get_by_name(const char* name) {
+    smx_process_t self = SIMIX_process_self();
+    self->simcall.call = SIMCALL_RDV_GET_BY_NAME;
+    memset(&self->simcall.result, 0, sizeof(self->simcall.result));
+    memset(self->simcall.args, 0, sizeof(self->simcall.args));
+    self->simcall.args[0].cc = (const char*) name;
+    if (self != simix_global->maestro_process) {
+      XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
+                SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
+      SIMIX_process_yield(self);
+    } else {
+      SIMIX_simcall_pre(&self->simcall, 0);
+    }    
+    return self->simcall.result.dp;
+  }
+  inline static unsigned int simcall_BODY_rdv_comm_count_by_host(smx_rdv_t rdv, smx_host_t host) {
+    smx_process_t self = SIMIX_process_self();
+    self->simcall.call = SIMCALL_RDV_COMM_COUNT_BY_HOST;
+    memset(&self->simcall.result, 0, sizeof(self->simcall.result));
+    memset(self->simcall.args, 0, sizeof(self->simcall.args));
+    self->simcall.args[0].dp = (void*) rdv;
+    self->simcall.args[1].dp = (void*) host;
+    if (self != simix_global->maestro_process) {
+      XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
+                SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
+      SIMIX_process_yield(self);
+    } else {
+      SIMIX_simcall_pre(&self->simcall, 0);
+    }    
+    return self->simcall.result.ui;
+  }
+  inline static smx_action_t simcall_BODY_rdv_get_head(smx_rdv_t rdv) {
+    smx_process_t self = SIMIX_process_self();
+    self->simcall.call = SIMCALL_RDV_GET_HEAD;
+    memset(&self->simcall.result, 0, sizeof(self->simcall.result));
+    memset(self->simcall.args, 0, sizeof(self->simcall.args));
+    self->simcall.args[0].dp = (void*) rdv;
+    if (self != simix_global->maestro_process) {
+      XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
+                SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
+      SIMIX_process_yield(self);
+    } else {
+      SIMIX_simcall_pre(&self->simcall, 0);
+    }    
+    return self->simcall.result.dp;
+  }
+  inline static void simcall_BODY_rdv_set_receiver(smx_rdv_t rdv, smx_process_t receiver) {
+    smx_process_t self = SIMIX_process_self();
+    self->simcall.call = SIMCALL_RDV_SET_RECEIVER;
+    memset(&self->simcall.result, 0, sizeof(self->simcall.result));
+    memset(self->simcall.args, 0, sizeof(self->simcall.args));
+    self->simcall.args[0].dp = (void*) rdv;
+    self->simcall.args[1].dp = (void*) receiver;
+    if (self != simix_global->maestro_process) {
+      XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
+                SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
+      SIMIX_process_yield(self);
+    } else {
+      SIMIX_simcall_pre(&self->simcall, 0);
+    }    
+    
+  }
+  inline static smx_process_t simcall_BODY_rdv_get_receiver(smx_rdv_t rdv) {
+    smx_process_t self = SIMIX_process_self();
+    self->simcall.call = SIMCALL_RDV_GET_RECEIVER;
+    memset(&self->simcall.result, 0, sizeof(self->simcall.result));
+    memset(self->simcall.args, 0, sizeof(self->simcall.args));
+    self->simcall.args[0].dp = (void*) rdv;
+    if (self != simix_global->maestro_process) {
+      XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
+                SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
+      SIMIX_process_yield(self);
+    } else {
+      SIMIX_simcall_pre(&self->simcall, 0);
+    }    
+    return self->simcall.result.dp;
+  }
+  inline static smx_action_t simcall_BODY_comm_iprobe(smx_rdv_t rdv, int src, int tag, simix_match_func_t match_fun, void* data) {
+    smx_process_t self = SIMIX_process_self();
+    self->simcall.call = SIMCALL_COMM_IPROBE;
+    memset(&self->simcall.result, 0, sizeof(self->simcall.result));
+    memset(self->simcall.args, 0, sizeof(self->simcall.args));
+    self->simcall.args[0].dp = (void*) rdv;
+    self->simcall.args[1].i = (int) src;
+    self->simcall.args[2].i = (int) tag;
+    self->simcall.args[3].fp = (FPtr) match_fun;
+    self->simcall.args[4].dp = (void*) data;
+    if (self != simix_global->maestro_process) {
+      XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
+                SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
+      SIMIX_process_yield(self);
+    } else {
+      SIMIX_simcall_pre(&self->simcall, 0);
+    }    
+    return self->simcall.result.dp;
+  }
+  inline static void simcall_BODY_comm_send(smx_rdv_t rdv, double task_size, double rate, void* src_buff, size_t src_buff_size, simix_match_func_t match_fun, void* data, double timeout) {
+    smx_process_t self = SIMIX_process_self();
+    self->simcall.call = SIMCALL_COMM_SEND;
+    memset(&self->simcall.result, 0, sizeof(self->simcall.result));
+    memset(self->simcall.args, 0, sizeof(self->simcall.args));
+    self->simcall.args[0].dp = (void*) rdv;
+    self->simcall.args[1].d = (double) task_size;
+    self->simcall.args[2].d = (double) rate;
+    self->simcall.args[3].dp = (void*) src_buff;
+    self->simcall.args[4].sz = (size_t) src_buff_size;
+    self->simcall.args[5].fp = (FPtr) match_fun;
+    self->simcall.args[6].dp = (void*) data;
+    self->simcall.args[7].d = (double) timeout;
+    if (self != simix_global->maestro_process) {
+      XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
+                SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
+      SIMIX_process_yield(self);
+    } else {
+      SIMIX_simcall_pre(&self->simcall, 0);
+    }    
+    
+  }
+  inline static smx_action_t simcall_BODY_comm_isend(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, void* data, int detached) {
+    smx_process_t self = SIMIX_process_self();
+    self->simcall.call = SIMCALL_COMM_ISEND;
+    memset(&self->simcall.result, 0, sizeof(self->simcall.result));
+    memset(self->simcall.args, 0, sizeof(self->simcall.args));
+    self->simcall.args[0].dp = (void*) rdv;
+    self->simcall.args[1].d = (double) task_size;
+    self->simcall.args[2].d = (double) rate;
+    self->simcall.args[3].dp = (void*) src_buff;
+    self->simcall.args[4].sz = (size_t) src_buff_size;
+    self->simcall.args[5].fp = (FPtr) match_fun;
+    self->simcall.args[6].fp = (FPtr) clean_fun;
+    self->simcall.args[7].dp = (void*) data;
+    self->simcall.args[8].i = (int) detached;
+    if (self != simix_global->maestro_process) {
+      XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
+                SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
+      SIMIX_process_yield(self);
+    } else {
+      SIMIX_simcall_pre(&self->simcall, 0);
+    }    
+    return self->simcall.result.dp;
+  }
+  inline static void simcall_BODY_comm_recv(smx_rdv_t rdv, void* dst_buff, size_t* dst_buff_size, simix_match_func_t match_fun, void* data, double timeout) {
+    smx_process_t self = SIMIX_process_self();
+    self->simcall.call = SIMCALL_COMM_RECV;
+    memset(&self->simcall.result, 0, sizeof(self->simcall.result));
+    memset(self->simcall.args, 0, sizeof(self->simcall.args));
+    self->simcall.args[0].dp = (void*) rdv;
+    self->simcall.args[1].dp = (void*) dst_buff;
+    self->simcall.args[2].dp = (void*) dst_buff_size;
+    self->simcall.args[3].fp = (FPtr) match_fun;
+    self->simcall.args[4].dp = (void*) data;
+    self->simcall.args[5].d = (double) timeout;
+    if (self != simix_global->maestro_process) {
+      XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
+                SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
+      SIMIX_process_yield(self);
+    } else {
+      SIMIX_simcall_pre(&self->simcall, 0);
+    }    
+    
+  }
+  inline static smx_action_t simcall_BODY_comm_irecv(smx_rdv_t rdv, void* dst_buff, size_t* dst_buff_size, simix_match_func_t match_fun, void* data) {
+    smx_process_t self = SIMIX_process_self();
+    self->simcall.call = SIMCALL_COMM_IRECV;
+    memset(&self->simcall.result, 0, sizeof(self->simcall.result));
+    memset(self->simcall.args, 0, sizeof(self->simcall.args));
+    self->simcall.args[0].dp = (void*) rdv;
+    self->simcall.args[1].dp = (void*) dst_buff;
+    self->simcall.args[2].dp = (void*) dst_buff_size;
+    self->simcall.args[3].fp = (FPtr) match_fun;
+    self->simcall.args[4].dp = (void*) data;
+    if (self != simix_global->maestro_process) {
+      XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
+                SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
+      SIMIX_process_yield(self);
+    } else {
+      SIMIX_simcall_pre(&self->simcall, 0);
+    }    
+    return self->simcall.result.dp;
+  }
+  inline static void simcall_BODY_comm_recv_bounded(smx_rdv_t rdv, void* dst_buff, size_t* dst_buff_size, simix_match_func_t match_fun, void* data, double timeout, double rate) {
+    smx_process_t self = SIMIX_process_self();
+    self->simcall.call = SIMCALL_COMM_RECV_BOUNDED;
+    memset(&self->simcall.result, 0, sizeof(self->simcall.result));
+    memset(self->simcall.args, 0, sizeof(self->simcall.args));
+    self->simcall.args[0].dp = (void*) rdv;
+    self->simcall.args[1].dp = (void*) dst_buff;
+    self->simcall.args[2].dp = (void*) dst_buff_size;
+    self->simcall.args[3].fp = (FPtr) match_fun;
+    self->simcall.args[4].dp = (void*) data;
+    self->simcall.args[5].d = (double) timeout;
+    self->simcall.args[6].d = (double) rate;
+    if (self != simix_global->maestro_process) {
+      XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
+                SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
+      SIMIX_process_yield(self);
+    } else {
+      SIMIX_simcall_pre(&self->simcall, 0);
+    }    
+    
+  }
+  inline static smx_action_t simcall_BODY_comm_irecv_bounded(smx_rdv_t rdv, void* dst_buff, size_t* dst_buff_size, simix_match_func_t match_fun, void* data, double rate) {
+    smx_process_t self = SIMIX_process_self();
+    self->simcall.call = SIMCALL_COMM_IRECV_BOUNDED;
+    memset(&self->simcall.result, 0, sizeof(self->simcall.result));
+    memset(self->simcall.args, 0, sizeof(self->simcall.args));
+    self->simcall.args[0].dp = (void*) rdv;
+    self->simcall.args[1].dp = (void*) dst_buff;
+    self->simcall.args[2].dp = (void*) dst_buff_size;
+    self->simcall.args[3].fp = (FPtr) match_fun;
+    self->simcall.args[4].dp = (void*) data;
+    self->simcall.args[5].d = (double) rate;
+    if (self != simix_global->maestro_process) {
+      XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
+                SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
+      SIMIX_process_yield(self);
+    } else {
+      SIMIX_simcall_pre(&self->simcall, 0);
+    }    
+    return self->simcall.result.dp;
+  }
+  inline static void simcall_BODY_comm_destroy(smx_action_t comm) {
+    smx_process_t self = SIMIX_process_self();
+    self->simcall.call = SIMCALL_COMM_DESTROY;
+    memset(&self->simcall.result, 0, sizeof(self->simcall.result));
+    memset(self->simcall.args, 0, sizeof(self->simcall.args));
+    self->simcall.args[0].dp = (void*) comm;
+    if (self != simix_global->maestro_process) {
+      XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
+                SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
+      SIMIX_process_yield(self);
+    } else {
+      SIMIX_simcall_pre(&self->simcall, 0);
+    }    
+    
+  }
+  inline static void simcall_BODY_comm_cancel(smx_action_t comm) {
+    smx_process_t self = SIMIX_process_self();
+    self->simcall.call = SIMCALL_COMM_CANCEL;
+    memset(&self->simcall.result, 0, sizeof(self->simcall.result));
+    memset(self->simcall.args, 0, sizeof(self->simcall.args));
+    self->simcall.args[0].dp = (void*) comm;
+    if (self != simix_global->maestro_process) {
+      XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
+                SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
+      SIMIX_process_yield(self);
+    } else {
+      SIMIX_simcall_pre(&self->simcall, 0);
+    }    
+    
+  }
+  inline static int simcall_BODY_comm_waitany(xbt_dynar_t comms) {
+    smx_process_t self = SIMIX_process_self();
+    self->simcall.call = SIMCALL_COMM_WAITANY;
+    memset(&self->simcall.result, 0, sizeof(self->simcall.result));
+    memset(self->simcall.args, 0, sizeof(self->simcall.args));
+    self->simcall.args[0].dp = (void*) comms;
+    if (self != simix_global->maestro_process) {
+      XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
+                SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
+      SIMIX_process_yield(self);
+    } else {
+      SIMIX_simcall_pre(&self->simcall, 0);
+    }    
+    return self->simcall.result.i;
+  }
+  inline static void simcall_BODY_comm_wait(smx_action_t comm, double timeout) {
+    smx_process_t self = SIMIX_process_self();
+    self->simcall.call = SIMCALL_COMM_WAIT;
+    memset(&self->simcall.result, 0, sizeof(self->simcall.result));
+    memset(self->simcall.args, 0, sizeof(self->simcall.args));
+    self->simcall.args[0].dp = (void*) comm;
+    self->simcall.args[1].d = (double) timeout;
+    if (self != simix_global->maestro_process) {
+      XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
+                SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
+      SIMIX_process_yield(self);
+    } else {
+      SIMIX_simcall_pre(&self->simcall, 0);
+    }    
+    
+  }
+  inline static int simcall_BODY_comm_test(smx_action_t comm) {
+    smx_process_t self = SIMIX_process_self();
+    self->simcall.call = SIMCALL_COMM_TEST;
+    memset(&self->simcall.result, 0, sizeof(self->simcall.result));
+    memset(self->simcall.args, 0, sizeof(self->simcall.args));
+    self->simcall.args[0].dp = (void*) comm;
+    if (self != simix_global->maestro_process) {
+      XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
+                SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
+      SIMIX_process_yield(self);
+    } else {
+      SIMIX_simcall_pre(&self->simcall, 0);
+    }    
+    return self->simcall.result.i;
+  }
+  inline static int simcall_BODY_comm_testany(xbt_dynar_t comms) {
+    smx_process_t self = SIMIX_process_self();
+    self->simcall.call = SIMCALL_COMM_TESTANY;
+    memset(&self->simcall.result, 0, sizeof(self->simcall.result));
+    memset(self->simcall.args, 0, sizeof(self->simcall.args));
+    self->simcall.args[0].dp = (void*) comms;
+    if (self != simix_global->maestro_process) {
+      XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
+                SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
+      SIMIX_process_yield(self);
+    } else {
+      SIMIX_simcall_pre(&self->simcall, 0);
+    }    
+    return self->simcall.result.i;
+  }
+  inline static double simcall_BODY_comm_get_remains(smx_action_t comm) {
+    smx_process_t self = SIMIX_process_self();
+    self->simcall.call = SIMCALL_COMM_GET_REMAINS;
+    memset(&self->simcall.result, 0, sizeof(self->simcall.result));
+    memset(self->simcall.args, 0, sizeof(self->simcall.args));
+    self->simcall.args[0].dp = (void*) comm;
+    if (self != simix_global->maestro_process) {
+      XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
+                SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
+      SIMIX_process_yield(self);
+    } else {
+      SIMIX_simcall_pre(&self->simcall, 0);
+    }    
+    return self->simcall.result.d;
+  }
+  inline static int simcall_BODY_comm_get_state(smx_action_t comm) {
+    smx_process_t self = SIMIX_process_self();
+    self->simcall.call = SIMCALL_COMM_GET_STATE;
+    memset(&self->simcall.result, 0, sizeof(self->simcall.result));
+    memset(self->simcall.args, 0, sizeof(self->simcall.args));
+    self->simcall.args[0].dp = (void*) comm;
+    if (self != simix_global->maestro_process) {
+      XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
+                SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
+      SIMIX_process_yield(self);
+    } else {
+      SIMIX_simcall_pre(&self->simcall, 0);
+    }    
+    return self->simcall.result.i;
+  }
+  inline static void* simcall_BODY_comm_get_src_data(smx_action_t comm) {
+    smx_process_t self = SIMIX_process_self();
+    self->simcall.call = SIMCALL_COMM_GET_SRC_DATA;
+    memset(&self->simcall.result, 0, sizeof(self->simcall.result));
+    memset(self->simcall.args, 0, sizeof(self->simcall.args));
+    self->simcall.args[0].dp = (void*) comm;
+    if (self != simix_global->maestro_process) {
+      XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
+                SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
+      SIMIX_process_yield(self);
+    } else {
+      SIMIX_simcall_pre(&self->simcall, 0);
+    }    
+    return self->simcall.result.dp;
+  }
+  inline static void* simcall_BODY_comm_get_dst_data(smx_action_t comm) {
+    smx_process_t self = SIMIX_process_self();
+    self->simcall.call = SIMCALL_COMM_GET_DST_DATA;
+    memset(&self->simcall.result, 0, sizeof(self->simcall.result));
+    memset(self->simcall.args, 0, sizeof(self->simcall.args));
+    self->simcall.args[0].dp = (void*) comm;
+    if (self != simix_global->maestro_process) {
+      XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
+                SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
+      SIMIX_process_yield(self);
+    } else {
+      SIMIX_simcall_pre(&self->simcall, 0);
+    }    
+    return self->simcall.result.dp;
+  }
+  inline static smx_process_t simcall_BODY_comm_get_src_proc(smx_action_t comm) {
+    smx_process_t self = SIMIX_process_self();
+    self->simcall.call = SIMCALL_COMM_GET_SRC_PROC;
+    memset(&self->simcall.result, 0, sizeof(self->simcall.result));
+    memset(self->simcall.args, 0, sizeof(self->simcall.args));
+    self->simcall.args[0].dp = (void*) comm;
+    if (self != simix_global->maestro_process) {
+      XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
+                SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
+      SIMIX_process_yield(self);
+    } else {
+      SIMIX_simcall_pre(&self->simcall, 0);
+    }    
+    return self->simcall.result.dp;
+  }
+  inline static smx_process_t simcall_BODY_comm_get_dst_proc(smx_action_t comm) {
+    smx_process_t self = SIMIX_process_self();
+    self->simcall.call = SIMCALL_COMM_GET_DST_PROC;
+    memset(&self->simcall.result, 0, sizeof(self->simcall.result));
+    memset(self->simcall.args, 0, sizeof(self->simcall.args));
+    self->simcall.args[0].dp = (void*) comm;
+    if (self != simix_global->maestro_process) {
+      XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
+                SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
+      SIMIX_process_yield(self);
+    } else {
+      SIMIX_simcall_pre(&self->simcall, 0);
+    }    
+    return self->simcall.result.dp;
+  }
+  inline static smx_mutex_t simcall_BODY_mutex_init() {
+    smx_process_t self = SIMIX_process_self();
+    self->simcall.call = SIMCALL_MUTEX_INIT;
+    memset(&self->simcall.result, 0, sizeof(self->simcall.result));
+    memset(self->simcall.args, 0, sizeof(self->simcall.args));
+
+    if (self != simix_global->maestro_process) {
+      XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
+                SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
+      SIMIX_process_yield(self);
+    } else {
+      SIMIX_simcall_pre(&self->simcall, 0);
+    }    
+    return self->simcall.result.dp;
+  }
+  inline static void simcall_BODY_mutex_destroy(smx_mutex_t mutex) {
+    smx_process_t self = SIMIX_process_self();
+    self->simcall.call = SIMCALL_MUTEX_DESTROY;
+    memset(&self->simcall.result, 0, sizeof(self->simcall.result));
+    memset(self->simcall.args, 0, sizeof(self->simcall.args));
+    self->simcall.args[0].dp = (void*) mutex;
+    if (self != simix_global->maestro_process) {
+      XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
+                SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
+      SIMIX_process_yield(self);
+    } else {
+      SIMIX_simcall_pre(&self->simcall, 0);
+    }    
+    
+  }
+  inline static void simcall_BODY_mutex_lock(smx_mutex_t mutex) {
+    smx_process_t self = SIMIX_process_self();
+    self->simcall.call = SIMCALL_MUTEX_LOCK;
+    memset(&self->simcall.result, 0, sizeof(self->simcall.result));
+    memset(self->simcall.args, 0, sizeof(self->simcall.args));
+    self->simcall.args[0].dp = (void*) mutex;
+    if (self != simix_global->maestro_process) {
+      XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
+                SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
+      SIMIX_process_yield(self);
+    } else {
+      SIMIX_simcall_pre(&self->simcall, 0);
+    }    
+    
+  }
+  inline static int simcall_BODY_mutex_trylock(smx_mutex_t mutex) {
+    smx_process_t self = SIMIX_process_self();
+    self->simcall.call = SIMCALL_MUTEX_TRYLOCK;
+    memset(&self->simcall.result, 0, sizeof(self->simcall.result));
+    memset(self->simcall.args, 0, sizeof(self->simcall.args));
+    self->simcall.args[0].dp = (void*) mutex;
+    if (self != simix_global->maestro_process) {
+      XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
+                SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
+      SIMIX_process_yield(self);
+    } else {
+      SIMIX_simcall_pre(&self->simcall, 0);
+    }    
+    return self->simcall.result.i;
+  }
+  inline static void simcall_BODY_mutex_unlock(smx_mutex_t mutex) {
+    smx_process_t self = SIMIX_process_self();
+    self->simcall.call = SIMCALL_MUTEX_UNLOCK;
+    memset(&self->simcall.result, 0, sizeof(self->simcall.result));
+    memset(self->simcall.args, 0, sizeof(self->simcall.args));
+    self->simcall.args[0].dp = (void*) mutex;
+    if (self != simix_global->maestro_process) {
+      XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
+                SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
+      SIMIX_process_yield(self);
+    } else {
+      SIMIX_simcall_pre(&self->simcall, 0);
+    }    
+    
+  }
+  inline static smx_cond_t simcall_BODY_cond_init() {
+    smx_process_t self = SIMIX_process_self();
+    self->simcall.call = SIMCALL_COND_INIT;
+    memset(&self->simcall.result, 0, sizeof(self->simcall.result));
+    memset(self->simcall.args, 0, sizeof(self->simcall.args));
+
+    if (self != simix_global->maestro_process) {
+      XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
+                SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
+      SIMIX_process_yield(self);
+    } else {
+      SIMIX_simcall_pre(&self->simcall, 0);
+    }    
+    return self->simcall.result.dp;
+  }
+  inline static void simcall_BODY_cond_destroy(smx_cond_t cond) {
+    smx_process_t self = SIMIX_process_self();
+    self->simcall.call = SIMCALL_COND_DESTROY;
+    memset(&self->simcall.result, 0, sizeof(self->simcall.result));
+    memset(self->simcall.args, 0, sizeof(self->simcall.args));
+    self->simcall.args[0].dp = (void*) cond;
+    if (self != simix_global->maestro_process) {
+      XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
+                SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
+      SIMIX_process_yield(self);
+    } else {
+      SIMIX_simcall_pre(&self->simcall, 0);
+    }    
+    
+  }
+  inline static void simcall_BODY_cond_signal(smx_cond_t cond) {
+    smx_process_t self = SIMIX_process_self();
+    self->simcall.call = SIMCALL_COND_SIGNAL;
+    memset(&self->simcall.result, 0, sizeof(self->simcall.result));
+    memset(self->simcall.args, 0, sizeof(self->simcall.args));
+    self->simcall.args[0].dp = (void*) cond;
+    if (self != simix_global->maestro_process) {
+      XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
+                SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
+      SIMIX_process_yield(self);
+    } else {
+      SIMIX_simcall_pre(&self->simcall, 0);
+    }    
+    
+  }
+  inline static void simcall_BODY_cond_wait(smx_cond_t cond, smx_mutex_t mutex) {
+    smx_process_t self = SIMIX_process_self();
+    self->simcall.call = SIMCALL_COND_WAIT;
+    memset(&self->simcall.result, 0, sizeof(self->simcall.result));
+    memset(self->simcall.args, 0, sizeof(self->simcall.args));
+    self->simcall.args[0].dp = (void*) cond;
+    self->simcall.args[1].dp = (void*) mutex;
+    if (self != simix_global->maestro_process) {
+      XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
+                SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
+      SIMIX_process_yield(self);
+    } else {
+      SIMIX_simcall_pre(&self->simcall, 0);
+    }    
+    
+  }
+  inline static void simcall_BODY_cond_wait_timeout(smx_cond_t cond, smx_mutex_t mutex, double timeout) {
+    smx_process_t self = SIMIX_process_self();
+    self->simcall.call = SIMCALL_COND_WAIT_TIMEOUT;
+    memset(&self->simcall.result, 0, sizeof(self->simcall.result));
+    memset(self->simcall.args, 0, sizeof(self->simcall.args));
+    self->simcall.args[0].dp = (void*) cond;
+    self->simcall.args[1].dp = (void*) mutex;
+    self->simcall.args[2].d = (double) timeout;
+    if (self != simix_global->maestro_process) {
+      XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
+                SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
+      SIMIX_process_yield(self);
+    } else {
+      SIMIX_simcall_pre(&self->simcall, 0);
+    }    
+    
+  }
+  inline static void simcall_BODY_cond_broadcast(smx_cond_t cond) {
+    smx_process_t self = SIMIX_process_self();
+    self->simcall.call = SIMCALL_COND_BROADCAST;
+    memset(&self->simcall.result, 0, sizeof(self->simcall.result));
+    memset(self->simcall.args, 0, sizeof(self->simcall.args));
+    self->simcall.args[0].dp = (void*) cond;
+    if (self != simix_global->maestro_process) {
+      XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
+                SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
+      SIMIX_process_yield(self);
+    } else {
+      SIMIX_simcall_pre(&self->simcall, 0);
+    }    
+    
+  }
+  inline static smx_sem_t simcall_BODY_sem_init(int capacity) {
+    smx_process_t self = SIMIX_process_self();
+    self->simcall.call = SIMCALL_SEM_INIT;
+    memset(&self->simcall.result, 0, sizeof(self->simcall.result));
+    memset(self->simcall.args, 0, sizeof(self->simcall.args));
+    self->simcall.args[0].i = (int) capacity;
+    if (self != simix_global->maestro_process) {
+      XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
+                SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
+      SIMIX_process_yield(self);
+    } else {
+      SIMIX_simcall_pre(&self->simcall, 0);
+    }    
+    return self->simcall.result.dp;
+  }
+  inline static void simcall_BODY_sem_destroy(smx_sem_t sem) {
+    smx_process_t self = SIMIX_process_self();
+    self->simcall.call = SIMCALL_SEM_DESTROY;
+    memset(&self->simcall.result, 0, sizeof(self->simcall.result));
+    memset(self->simcall.args, 0, sizeof(self->simcall.args));
+    self->simcall.args[0].dp = (void*) sem;
+    if (self != simix_global->maestro_process) {
+      XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
+                SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
+      SIMIX_process_yield(self);
+    } else {
+      SIMIX_simcall_pre(&self->simcall, 0);
+    }    
+    
+  }
+  inline static void simcall_BODY_sem_release(smx_sem_t sem) {
+    smx_process_t self = SIMIX_process_self();
+    self->simcall.call = SIMCALL_SEM_RELEASE;
+    memset(&self->simcall.result, 0, sizeof(self->simcall.result));
+    memset(self->simcall.args, 0, sizeof(self->simcall.args));
+    self->simcall.args[0].dp = (void*) sem;
+    if (self != simix_global->maestro_process) {
+      XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
+                SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
+      SIMIX_process_yield(self);
+    } else {
+      SIMIX_simcall_pre(&self->simcall, 0);
+    }    
+    
+  }
+  inline static int simcall_BODY_sem_would_block(smx_sem_t sem) {
+    smx_process_t self = SIMIX_process_self();
+    self->simcall.call = SIMCALL_SEM_WOULD_BLOCK;
+    memset(&self->simcall.result, 0, sizeof(self->simcall.result));
+    memset(self->simcall.args, 0, sizeof(self->simcall.args));
+    self->simcall.args[0].dp = (void*) sem;
+    if (self != simix_global->maestro_process) {
+      XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
+                SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
+      SIMIX_process_yield(self);
+    } else {
+      SIMIX_simcall_pre(&self->simcall, 0);
+    }    
+    return self->simcall.result.i;
+  }
+  inline static void simcall_BODY_sem_acquire(smx_sem_t sem) {
+    smx_process_t self = SIMIX_process_self();
+    self->simcall.call = SIMCALL_SEM_ACQUIRE;
+    memset(&self->simcall.result, 0, sizeof(self->simcall.result));
+    memset(self->simcall.args, 0, sizeof(self->simcall.args));
+    self->simcall.args[0].dp = (void*) sem;
+    if (self != simix_global->maestro_process) {
+      XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
+                SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
+      SIMIX_process_yield(self);
+    } else {
+      SIMIX_simcall_pre(&self->simcall, 0);
+    }    
+    
+  }
+  inline static void simcall_BODY_sem_acquire_timeout(smx_sem_t sem, double timeout) {
+    smx_process_t self = SIMIX_process_self();
+    self->simcall.call = SIMCALL_SEM_ACQUIRE_TIMEOUT;
+    memset(&self->simcall.result, 0, sizeof(self->simcall.result));
+    memset(self->simcall.args, 0, sizeof(self->simcall.args));
+    self->simcall.args[0].dp = (void*) sem;
+    self->simcall.args[1].d = (double) timeout;
+    if (self != simix_global->maestro_process) {
+      XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
+                SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
+      SIMIX_process_yield(self);
+    } else {
+      SIMIX_simcall_pre(&self->simcall, 0);
+    }    
+    
+  }
+  inline static int simcall_BODY_sem_get_capacity(smx_sem_t sem) {
+    smx_process_t self = SIMIX_process_self();
+    self->simcall.call = SIMCALL_SEM_GET_CAPACITY;
+    memset(&self->simcall.result, 0, sizeof(self->simcall.result));
+    memset(self->simcall.args, 0, sizeof(self->simcall.args));
+    self->simcall.args[0].dp = (void*) sem;
+    if (self != simix_global->maestro_process) {
+      XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
+                SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
+      SIMIX_process_yield(self);
+    } else {
+      SIMIX_simcall_pre(&self->simcall, 0);
+    }    
+    return self->simcall.result.i;
+  }
+  inline static void* simcall_BODY_file_get_data(smx_file_t fd) {
+    smx_process_t self = SIMIX_process_self();
+    self->simcall.call = SIMCALL_FILE_GET_DATA;
+    memset(&self->simcall.result, 0, sizeof(self->simcall.result));
+    memset(self->simcall.args, 0, sizeof(self->simcall.args));
+    self->simcall.args[0].dp = (void*) fd;
+    if (self != simix_global->maestro_process) {
+      XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
+                SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
+      SIMIX_process_yield(self);
+    } else {
+      SIMIX_simcall_pre(&self->simcall, 0);
+    }    
+    return self->simcall.result.dp;
+  }
+  inline static void simcall_BODY_file_set_data(smx_file_t fd, void* data) {
+    smx_process_t self = SIMIX_process_self();
+    self->simcall.call = SIMCALL_FILE_SET_DATA;
+    memset(&self->simcall.result, 0, sizeof(self->simcall.result));
+    memset(self->simcall.args, 0, sizeof(self->simcall.args));
+    self->simcall.args[0].dp = (void*) fd;
+    self->simcall.args[1].dp = (void*) data;
+    if (self != simix_global->maestro_process) {
+      XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
+                SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
+      SIMIX_process_yield(self);
+    } else {
+      SIMIX_simcall_pre(&self->simcall, 0);
+    }    
+    
+  }
+  inline static sg_size_t simcall_BODY_file_read(smx_file_t fd, sg_size_t size) {
+    smx_process_t self = SIMIX_process_self();
+    self->simcall.call = SIMCALL_FILE_READ;
+    memset(&self->simcall.result, 0, sizeof(self->simcall.result));
+    memset(self->simcall.args, 0, sizeof(self->simcall.args));
+    self->simcall.args[0].dp = (void*) fd;
+    self->simcall.args[1].sgsz = (sg_size_t) size;
+    if (self != simix_global->maestro_process) {
+      XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
+                SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
+      SIMIX_process_yield(self);
+    } else {
+      SIMIX_simcall_pre(&self->simcall, 0);
+    }    
+    return self->simcall.result.sgsz;
+  }
+  inline static sg_size_t simcall_BODY_file_write(smx_file_t fd, sg_size_t size) {
+    smx_process_t self = SIMIX_process_self();
+    self->simcall.call = SIMCALL_FILE_WRITE;
+    memset(&self->simcall.result, 0, sizeof(self->simcall.result));
+    memset(self->simcall.args, 0, sizeof(self->simcall.args));
+    self->simcall.args[0].dp = (void*) fd;
+    self->simcall.args[1].sgsz = (sg_size_t) size;
+    if (self != simix_global->maestro_process) {
+      XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
+                SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
+      SIMIX_process_yield(self);
+    } else {
+      SIMIX_simcall_pre(&self->simcall, 0);
+    }    
+    return self->simcall.result.sgsz;
+  }
+  inline static smx_file_t simcall_BODY_file_open(const char* mount, const char* path) {
+    smx_process_t self = SIMIX_process_self();
+    self->simcall.call = SIMCALL_FILE_OPEN;
+    memset(&self->simcall.result, 0, sizeof(self->simcall.result));
+    memset(self->simcall.args, 0, sizeof(self->simcall.args));
+    self->simcall.args[0].cc = (const char*) mount;
+    self->simcall.args[1].cc = (const char*) path;
+    if (self != simix_global->maestro_process) {
+      XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
+                SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
+      SIMIX_process_yield(self);
+    } else {
+      SIMIX_simcall_pre(&self->simcall, 0);
+    }    
+    return self->simcall.result.dp;
+  }
+  inline static int simcall_BODY_file_close(smx_file_t fd) {
+    smx_process_t self = SIMIX_process_self();
+    self->simcall.call = SIMCALL_FILE_CLOSE;
+    memset(&self->simcall.result, 0, sizeof(self->simcall.result));
+    memset(self->simcall.args, 0, sizeof(self->simcall.args));
+    self->simcall.args[0].dp = (void*) fd;
+    if (self != simix_global->maestro_process) {
+      XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
+                SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
+      SIMIX_process_yield(self);
+    } else {
+      SIMIX_simcall_pre(&self->simcall, 0);
+    }    
+    return self->simcall.result.i;
+  }
+  inline static int simcall_BODY_file_unlink(smx_file_t fd) {
+    smx_process_t self = SIMIX_process_self();
+    self->simcall.call = SIMCALL_FILE_UNLINK;
+    memset(&self->simcall.result, 0, sizeof(self->simcall.result));
+    memset(self->simcall.args, 0, sizeof(self->simcall.args));
+    self->simcall.args[0].dp = (void*) fd;
+    if (self != simix_global->maestro_process) {
+      XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
+                SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
+      SIMIX_process_yield(self);
+    } else {
+      SIMIX_simcall_pre(&self->simcall, 0);
+    }    
+    return self->simcall.result.i;
+  }
+  inline static xbt_dict_t simcall_BODY_file_ls(const char* mount, const char* path) {
+    smx_process_t self = SIMIX_process_self();
+    self->simcall.call = SIMCALL_FILE_LS;
+    memset(&self->simcall.result, 0, sizeof(self->simcall.result));
+    memset(self->simcall.args, 0, sizeof(self->simcall.args));
+    self->simcall.args[0].cc = (const char*) mount;
+    self->simcall.args[1].cc = (const char*) path;
+    if (self != simix_global->maestro_process) {
+      XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
+                SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
+      SIMIX_process_yield(self);
+    } else {
+      SIMIX_simcall_pre(&self->simcall, 0);
+    }    
+    return self->simcall.result.dp;
+  }
+  inline static sg_size_t simcall_BODY_file_get_size(smx_file_t fd) {
+    smx_process_t self = SIMIX_process_self();
+    self->simcall.call = SIMCALL_FILE_GET_SIZE;
+    memset(&self->simcall.result, 0, sizeof(self->simcall.result));
+    memset(self->simcall.args, 0, sizeof(self->simcall.args));
+    self->simcall.args[0].dp = (void*) fd;
+    if (self != simix_global->maestro_process) {
+      XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
+                SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
+      SIMIX_process_yield(self);
+    } else {
+      SIMIX_simcall_pre(&self->simcall, 0);
+    }    
+    return self->simcall.result.sgsz;
+  }
+  inline static sg_size_t simcall_BODY_file_tell(smx_file_t fd) {
+    smx_process_t self = SIMIX_process_self();
+    self->simcall.call = SIMCALL_FILE_TELL;
+    memset(&self->simcall.result, 0, sizeof(self->simcall.result));
+    memset(self->simcall.args, 0, sizeof(self->simcall.args));
+    self->simcall.args[0].dp = (void*) fd;
+    if (self != simix_global->maestro_process) {
+      XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
+                SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
+      SIMIX_process_yield(self);
+    } else {
+      SIMIX_simcall_pre(&self->simcall, 0);
+    }    
+    return self->simcall.result.sgsz;
+  }
+  inline static int simcall_BODY_file_seek(smx_file_t fd, sg_size_t offset, int origin) {
+    smx_process_t self = SIMIX_process_self();
+    self->simcall.call = SIMCALL_FILE_SEEK;
+    memset(&self->simcall.result, 0, sizeof(self->simcall.result));
+    memset(self->simcall.args, 0, sizeof(self->simcall.args));
+    self->simcall.args[0].dp = (void*) fd;
+    self->simcall.args[1].sgsz = (sg_size_t) offset;
+    self->simcall.args[2].i = (int) origin;
+    if (self != simix_global->maestro_process) {
+      XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
+                SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
+      SIMIX_process_yield(self);
+    } else {
+      SIMIX_simcall_pre(&self->simcall, 0);
+    }    
+    return self->simcall.result.i;
+  }
+  inline static xbt_dynar_t simcall_BODY_file_get_info(smx_file_t fd) {
+    smx_process_t self = SIMIX_process_self();
+    self->simcall.call = SIMCALL_FILE_GET_INFO;
+    memset(&self->simcall.result, 0, sizeof(self->simcall.result));
+    memset(self->simcall.args, 0, sizeof(self->simcall.args));
+    self->simcall.args[0].dp = (void*) fd;
+    if (self != simix_global->maestro_process) {
+      XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
+                SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
+      SIMIX_process_yield(self);
+    } else {
+      SIMIX_simcall_pre(&self->simcall, 0);
+    }    
+    return self->simcall.result.dp;
+  }
+  inline static void simcall_BODY_storage_file_rename(smx_storage_t storage, const char* src, const char* dest) {
+    smx_process_t self = SIMIX_process_self();
+    self->simcall.call = SIMCALL_STORAGE_FILE_RENAME;
+    memset(&self->simcall.result, 0, sizeof(self->simcall.result));
+    memset(self->simcall.args, 0, sizeof(self->simcall.args));
+    self->simcall.args[0].dp = (void*) storage;
+    self->simcall.args[1].cc = (const char*) src;
+    self->simcall.args[2].cc = (const char*) dest;
+    if (self != simix_global->maestro_process) {
+      XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
+                SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
+      SIMIX_process_yield(self);
+    } else {
+      SIMIX_simcall_pre(&self->simcall, 0);
+    }    
+    
+  }
+  inline static sg_size_t simcall_BODY_storage_get_free_size(const char* name) {
+    smx_process_t self = SIMIX_process_self();
+    self->simcall.call = SIMCALL_STORAGE_GET_FREE_SIZE;
+    memset(&self->simcall.result, 0, sizeof(self->simcall.result));
+    memset(self->simcall.args, 0, sizeof(self->simcall.args));
+    self->simcall.args[0].cc = (const char*) name;
+    if (self != simix_global->maestro_process) {
+      XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
+                SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
+      SIMIX_process_yield(self);
+    } else {
+      SIMIX_simcall_pre(&self->simcall, 0);
+    }    
+    return self->simcall.result.sgsz;
+  }
+  inline static sg_size_t simcall_BODY_storage_get_used_size(const char* name) {
+    smx_process_t self = SIMIX_process_self();
+    self->simcall.call = SIMCALL_STORAGE_GET_USED_SIZE;
+    memset(&self->simcall.result, 0, sizeof(self->simcall.result));
+    memset(self->simcall.args, 0, sizeof(self->simcall.args));
+    self->simcall.args[0].cc = (const char*) name;
+    if (self != simix_global->maestro_process) {
+      XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
+                SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
+      SIMIX_process_yield(self);
+    } else {
+      SIMIX_simcall_pre(&self->simcall, 0);
+    }    
+    return self->simcall.result.sgsz;
+  }
+  inline static xbt_dict_t simcall_BODY_storage_get_properties(smx_storage_t storage) {
+    smx_process_t self = SIMIX_process_self();
+    self->simcall.call = SIMCALL_STORAGE_GET_PROPERTIES;
+    memset(&self->simcall.result, 0, sizeof(self->simcall.result));
+    memset(self->simcall.args, 0, sizeof(self->simcall.args));
+    self->simcall.args[0].dp = (void*) storage;
+    if (self != simix_global->maestro_process) {
+      XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
+                SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
+      SIMIX_process_yield(self);
+    } else {
+      SIMIX_simcall_pre(&self->simcall, 0);
+    }    
+    return self->simcall.result.dp;
+  }
+  inline static xbt_dict_t simcall_BODY_storage_get_content(smx_storage_t storage) {
+    smx_process_t self = SIMIX_process_self();
+    self->simcall.call = SIMCALL_STORAGE_GET_CONTENT;
+    memset(&self->simcall.result, 0, sizeof(self->simcall.result));
+    memset(self->simcall.args, 0, sizeof(self->simcall.args));
+    self->simcall.args[0].dp = (void*) storage;
+    if (self != simix_global->maestro_process) {
+      XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
+                SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
+      SIMIX_process_yield(self);
+    } else {
+      SIMIX_simcall_pre(&self->simcall, 0);
+    }    
+    return self->simcall.result.dp;
+  }
+  inline static xbt_dict_t simcall_BODY_asr_get_properties(const char* name) {
+    smx_process_t self = SIMIX_process_self();
+    self->simcall.call = SIMCALL_ASR_GET_PROPERTIES;
+    memset(&self->simcall.result, 0, sizeof(self->simcall.result));
+    memset(self->simcall.args, 0, sizeof(self->simcall.args));
+    self->simcall.args[0].cc = (const char*) name;
+    if (self != simix_global->maestro_process) {
+      XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
+                SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
+      SIMIX_process_yield(self);
+    } else {
+      SIMIX_simcall_pre(&self->simcall, 0);
+    }    
+    return self->simcall.result.dp;
+  }
+#ifdef HAVE_LATENCY_BOUND_TRACKING
+  inline static int simcall_BODY_comm_is_latency_bounded(smx_action_t comm) {
+    smx_process_t self = SIMIX_process_self();
+    self->simcall.call = SIMCALL_COMM_IS_LATENCY_BOUNDED;
+    memset(&self->simcall.result, 0, sizeof(self->simcall.result));
+    memset(self->simcall.args, 0, sizeof(self->simcall.args));
+    self->simcall.args[0].dp = (void*) comm;
+    if (self != simix_global->maestro_process) {
+      XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
+                SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
+      SIMIX_process_yield(self);
+    } else {
+      SIMIX_simcall_pre(&self->simcall, 0);
+    }    
+    return self->simcall.result.i;
+  }
+#endif
+
+#ifdef HAVE_TRACING
+  inline static void simcall_BODY_set_category(smx_action_t action, const char* category) {
+    smx_process_t self = SIMIX_process_self();
+    self->simcall.call = SIMCALL_SET_CATEGORY;
+    memset(&self->simcall.result, 0, sizeof(self->simcall.result));
+    memset(self->simcall.args, 0, sizeof(self->simcall.args));
+    self->simcall.args[0].dp = (void*) action;
+    self->simcall.args[1].cc = (const char*) category;
+    if (self != simix_global->maestro_process) {
+      XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
+                SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
+      SIMIX_process_yield(self);
+    } else {
+      SIMIX_simcall_pre(&self->simcall, 0);
+    }    
+    
+  }
+#endif
+
+#ifdef HAVE_MC
+  inline static void* simcall_BODY_mc_snapshot() {
+    smx_process_t self = SIMIX_process_self();
+    self->simcall.call = SIMCALL_MC_SNAPSHOT;
+    memset(&self->simcall.result, 0, sizeof(self->simcall.result));
+    memset(self->simcall.args, 0, sizeof(self->simcall.args));
+
+    if (self != simix_global->maestro_process) {
+      XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
+                SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
+      SIMIX_process_yield(self);
+    } else {
+      SIMIX_simcall_pre(&self->simcall, 0);
+    }    
+    return self->simcall.result.dp;
+  }
+  inline static int simcall_BODY_mc_compare_snapshots(void* s1, void* s2) {
+    smx_process_t self = SIMIX_process_self();
+    self->simcall.call = SIMCALL_MC_COMPARE_SNAPSHOTS;
+    memset(&self->simcall.result, 0, sizeof(self->simcall.result));
+    memset(self->simcall.args, 0, sizeof(self->simcall.args));
+    self->simcall.args[0].dp = (void*) s1;
+    self->simcall.args[1].dp = (void*) s2;
+    if (self != simix_global->maestro_process) {
+      XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
+                SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
+      SIMIX_process_yield(self);
+    } else {
+      SIMIX_simcall_pre(&self->simcall, 0);
+    }    
+    return self->simcall.result.i;
+  }
+  inline static int simcall_BODY_mc_random(int min, int max) {
+    smx_process_t self = SIMIX_process_self();
+    self->simcall.call = SIMCALL_MC_RANDOM;
+    memset(&self->simcall.result, 0, sizeof(self->simcall.result));
+    memset(self->simcall.args, 0, sizeof(self->simcall.args));
+    self->simcall.args[0].i = (int) min;
+    self->simcall.args[1].i = (int) max;
+    if (self != simix_global->maestro_process) {
+      XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name,
+                SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call);
+      SIMIX_process_yield(self);
+    } else {
+      SIMIX_simcall_pre(&self->simcall, 0);
+    }    
+    return self->simcall.result.i;
+  }
+#endif
diff --git a/src/simix/simcalls_generated_case.c b/src/simix/simcalls_generated_case.c
new file mode 100644 (file)
index 0000000..0bca529
--- /dev/null
@@ -0,0 +1,663 @@
+case SIMCALL_HOST_GET_BY_NAME:
+      simcall->result.dp = SIMIX_pre_host_get_by_name(simcall ,  simcall->args[0].cc);
+      SIMIX_simcall_answer(simcall);
+      break;  
+
+case SIMCALL_HOST_GET_NAME:
+      simcall->result.cc = SIMIX_pre_host_get_name(simcall , (smx_host_t) simcall->args[0].dp);
+      SIMIX_simcall_answer(simcall);
+      break;  
+
+case SIMCALL_HOST_ON:
+       SIMIX_pre_host_on(simcall , (smx_host_t) simcall->args[0].dp);
+      SIMIX_simcall_answer(simcall);
+      break;  
+
+case SIMCALL_HOST_OFF:
+       SIMIX_pre_host_off(simcall , (smx_host_t) simcall->args[0].dp);
+      SIMIX_simcall_answer(simcall);
+      break;  
+
+case SIMCALL_HOST_GET_PROPERTIES:
+      simcall->result.dp = SIMIX_pre_host_get_properties(simcall , (smx_host_t) simcall->args[0].dp);
+      SIMIX_simcall_answer(simcall);
+      break;  
+
+case SIMCALL_HOST_GET_CORE:
+      simcall->result.i = SIMIX_pre_host_get_core(simcall , (smx_host_t) simcall->args[0].dp);
+      SIMIX_simcall_answer(simcall);
+      break;  
+
+case SIMCALL_HOST_GET_PROCESS_LIST:
+      simcall->result.dp = SIMIX_pre_host_get_process_list(simcall , (smx_host_t) simcall->args[0].dp);
+      SIMIX_simcall_answer(simcall);
+      break;  
+
+case SIMCALL_HOST_GET_SPEED:
+      simcall->result.d = SIMIX_pre_host_get_speed(simcall , (smx_host_t) simcall->args[0].dp);
+      SIMIX_simcall_answer(simcall);
+      break;  
+
+case SIMCALL_HOST_GET_AVAILABLE_SPEED:
+      simcall->result.d = SIMIX_pre_host_get_available_speed(simcall , (smx_host_t) simcall->args[0].dp);
+      SIMIX_simcall_answer(simcall);
+      break;  
+
+case SIMCALL_HOST_GET_STATE:
+      simcall->result.i = SIMIX_pre_host_get_state(simcall , (smx_host_t) simcall->args[0].dp);
+      SIMIX_simcall_answer(simcall);
+      break;  
+
+case SIMCALL_HOST_GET_DATA:
+      simcall->result.dp = SIMIX_pre_host_get_data(simcall , (smx_host_t) simcall->args[0].dp);
+      SIMIX_simcall_answer(simcall);
+      break;  
+
+case SIMCALL_HOST_SET_DATA:
+       SIMIX_pre_host_set_data(simcall , (smx_host_t) simcall->args[0].dp,  simcall->args[1].dp);
+      SIMIX_simcall_answer(simcall);
+      break;  
+
+case SIMCALL_HOST_GET_CURRENT_POWER_PEAK:
+      simcall->result.d = SIMIX_pre_host_get_current_power_peak(simcall , (smx_host_t) simcall->args[0].dp);
+      SIMIX_simcall_answer(simcall);
+      break;  
+
+case SIMCALL_HOST_GET_POWER_PEAK_AT:
+      simcall->result.d = SIMIX_pre_host_get_power_peak_at(simcall , (smx_host_t) simcall->args[0].dp,  simcall->args[1].i);
+      SIMIX_simcall_answer(simcall);
+      break;  
+
+case SIMCALL_HOST_GET_NB_PSTATES:
+      simcall->result.i = SIMIX_pre_host_get_nb_pstates(simcall , (smx_host_t) simcall->args[0].dp);
+      SIMIX_simcall_answer(simcall);
+      break;  
+
+case SIMCALL_HOST_SET_POWER_PEAK_AT:
+       SIMIX_pre_host_set_power_peak_at(simcall , (smx_host_t) simcall->args[0].dp,  simcall->args[1].i);
+      SIMIX_simcall_answer(simcall);
+      break;  
+
+case SIMCALL_HOST_GET_CONSUMED_ENERGY:
+      simcall->result.d = SIMIX_pre_host_get_consumed_energy(simcall , (smx_host_t) simcall->args[0].dp);
+      SIMIX_simcall_answer(simcall);
+      break;  
+
+case SIMCALL_HOST_EXECUTE:
+      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);
+      SIMIX_simcall_answer(simcall);
+      break;  
+
+case SIMCALL_HOST_PARALLEL_EXECUTE:
+      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);
+      SIMIX_simcall_answer(simcall);
+      break;  
+
+case SIMCALL_HOST_EXECUTION_DESTROY:
+       SIMIX_pre_host_execution_destroy(simcall , (smx_action_t) simcall->args[0].dp);
+      SIMIX_simcall_answer(simcall);
+      break;  
+
+case SIMCALL_HOST_EXECUTION_CANCEL:
+       SIMIX_pre_host_execution_cancel(simcall , (smx_action_t) simcall->args[0].dp);
+      SIMIX_simcall_answer(simcall);
+      break;  
+
+case SIMCALL_HOST_EXECUTION_GET_REMAINS:
+      simcall->result.d = SIMIX_pre_host_execution_get_remains(simcall , (smx_action_t) simcall->args[0].dp);
+      SIMIX_simcall_answer(simcall);
+      break;  
+
+case SIMCALL_HOST_EXECUTION_GET_STATE:
+      simcall->result.i = SIMIX_pre_host_execution_get_state(simcall , (smx_action_t) simcall->args[0].dp);
+      SIMIX_simcall_answer(simcall);
+      break;  
+
+case SIMCALL_HOST_EXECUTION_SET_PRIORITY:
+       SIMIX_pre_host_execution_set_priority(simcall , (smx_action_t) simcall->args[0].dp,  simcall->args[1].d);
+      SIMIX_simcall_answer(simcall);
+      break;  
+
+case SIMCALL_HOST_EXECUTION_SET_BOUND:
+       SIMIX_pre_host_execution_set_bound(simcall , (smx_action_t) simcall->args[0].dp,  simcall->args[1].d);
+      SIMIX_simcall_answer(simcall);
+      break;  
+
+case SIMCALL_HOST_EXECUTION_SET_AFFINITY:
+       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);
+      SIMIX_simcall_answer(simcall);
+      break;  
+
+case SIMCALL_HOST_EXECUTION_WAIT:
+       SIMIX_pre_host_execution_wait(simcall , (smx_action_t) simcall->args[0].dp);
+       
+      break;  
+
+case SIMCALL_HOST_GET_STORAGE_LIST:
+      simcall->result.dp = SIMIX_pre_host_get_storage_list(simcall , (smx_host_t) simcall->args[0].dp);
+      SIMIX_simcall_answer(simcall);
+      break;  
+
+case SIMCALL_HOST_GET_PARAMS:
+       SIMIX_pre_host_get_params(simcall , (smx_host_t) simcall->args[0].dp, (ws_params_t) simcall->args[1].dp);
+      SIMIX_simcall_answer(simcall);
+      break;  
+
+case SIMCALL_HOST_SET_PARAMS:
+       SIMIX_pre_host_set_params(simcall , (smx_host_t) simcall->args[0].dp, (ws_params_t) simcall->args[1].dp);
+      SIMIX_simcall_answer(simcall);
+      break;  
+
+case SIMCALL_VM_CREATE:
+      simcall->result.dp = SIMIX_pre_vm_create(simcall ,  simcall->args[0].cc, (smx_host_t) simcall->args[1].dp);
+      SIMIX_simcall_answer(simcall);
+      break;  
+
+case SIMCALL_VM_START:
+       SIMIX_pre_vm_start(simcall , (smx_host_t) simcall->args[0].dp);
+      SIMIX_simcall_answer(simcall);
+      break;  
+
+case SIMCALL_VM_SET_STATE:
+       SIMIX_pre_vm_set_state(simcall , (smx_host_t) simcall->args[0].dp,  simcall->args[1].i);
+      SIMIX_simcall_answer(simcall);
+      break;  
+
+case SIMCALL_VM_GET_STATE:
+      simcall->result.i = SIMIX_pre_vm_get_state(simcall , (smx_host_t) simcall->args[0].dp);
+      SIMIX_simcall_answer(simcall);
+      break;  
+
+case SIMCALL_VM_MIGRATE:
+       SIMIX_pre_vm_migrate(simcall , (smx_host_t) simcall->args[0].dp, (smx_host_t) simcall->args[1].dp);
+      SIMIX_simcall_answer(simcall);
+      break;  
+
+case SIMCALL_VM_GET_PM:
+      simcall->result.dp = SIMIX_pre_vm_get_pm(simcall , (smx_host_t) simcall->args[0].dp);
+      SIMIX_simcall_answer(simcall);
+      break;  
+
+case SIMCALL_VM_SET_BOUND:
+       SIMIX_pre_vm_set_bound(simcall , (smx_host_t) simcall->args[0].dp,  simcall->args[1].d);
+      SIMIX_simcall_answer(simcall);
+      break;  
+
+case SIMCALL_VM_SET_AFFINITY:
+       SIMIX_pre_vm_set_affinity(simcall , (smx_host_t) simcall->args[0].dp, (smx_host_t) simcall->args[1].dp,  simcall->args[2].ul);
+      SIMIX_simcall_answer(simcall);
+      break;  
+
+case SIMCALL_VM_DESTROY:
+       SIMIX_pre_vm_destroy(simcall , (smx_host_t) simcall->args[0].dp);
+      SIMIX_simcall_answer(simcall);
+      break;  
+
+case SIMCALL_VM_SUSPEND:
+       SIMIX_pre_vm_suspend(simcall , (smx_host_t) simcall->args[0].dp);
+      SIMIX_simcall_answer(simcall);
+      break;  
+
+case SIMCALL_VM_RESUME:
+       SIMIX_pre_vm_resume(simcall , (smx_host_t) simcall->args[0].dp);
+      SIMIX_simcall_answer(simcall);
+      break;  
+
+case SIMCALL_VM_SHUTDOWN:
+       SIMIX_pre_vm_shutdown(simcall , (smx_host_t) simcall->args[0].dp);
+      SIMIX_simcall_answer(simcall);
+      break;  
+
+case SIMCALL_VM_SAVE:
+       SIMIX_pre_vm_save(simcall , (smx_host_t) simcall->args[0].dp);
+      SIMIX_simcall_answer(simcall);
+      break;  
+
+case SIMCALL_VM_RESTORE:
+       SIMIX_pre_vm_restore(simcall , (smx_host_t) simcall->args[0].dp);
+      SIMIX_simcall_answer(simcall);
+      break;  
+
+case SIMCALL_PROCESS_CREATE:
+       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);
+      SIMIX_simcall_answer(simcall);
+      break;  
+
+case SIMCALL_PROCESS_KILL:
+       SIMIX_pre_process_kill(simcall , (smx_process_t) simcall->args[0].dp);
+      SIMIX_simcall_answer(simcall);
+      break;  
+
+case SIMCALL_PROCESS_KILLALL:
+       SIMIX_pre_process_killall(simcall ,  simcall->args[0].i);
+      SIMIX_simcall_answer(simcall);
+      break;  
+
+case SIMCALL_PROCESS_CLEANUP:
+       SIMIX_pre_process_cleanup(simcall , (smx_process_t) simcall->args[0].dp);
+      SIMIX_simcall_answer(simcall);
+      break;  
+
+case SIMCALL_PROCESS_CHANGE_HOST:
+       SIMIX_pre_process_change_host(simcall , (smx_process_t) simcall->args[0].dp, (smx_host_t) simcall->args[1].dp);
+      SIMIX_simcall_answer(simcall);
+      break;  
+
+case SIMCALL_PROCESS_SUSPEND:
+       SIMIX_pre_process_suspend(simcall , (smx_process_t) simcall->args[0].dp);
+       
+      break;  
+
+case SIMCALL_PROCESS_RESUME:
+       SIMIX_pre_process_resume(simcall , (smx_process_t) simcall->args[0].dp);
+      SIMIX_simcall_answer(simcall);
+      break;  
+
+case SIMCALL_PROCESS_COUNT:
+      simcall->result.i = SIMIX_pre_process_count(simcall );
+      SIMIX_simcall_answer(simcall);
+      break;  
+
+case SIMCALL_PROCESS_GET_PID:
+      simcall->result.i = SIMIX_pre_process_get_PID(simcall , (smx_process_t) simcall->args[0].dp);
+      SIMIX_simcall_answer(simcall);
+      break;  
+
+case SIMCALL_PROCESS_GET_PPID:
+      simcall->result.i = SIMIX_pre_process_get_PPID(simcall , (smx_process_t) simcall->args[0].dp);
+      SIMIX_simcall_answer(simcall);
+      break;  
+
+case SIMCALL_PROCESS_GET_DATA:
+      simcall->result.dp = SIMIX_pre_process_get_data(simcall , (smx_process_t) simcall->args[0].dp);
+      SIMIX_simcall_answer(simcall);
+      break;  
+
+case SIMCALL_PROCESS_SET_DATA:
+       SIMIX_pre_process_set_data(simcall , (smx_process_t) simcall->args[0].dp,  simcall->args[1].dp);
+      SIMIX_simcall_answer(simcall);
+      break;  
+
+case SIMCALL_PROCESS_GET_HOST:
+      simcall->result.dp = SIMIX_pre_process_get_host(simcall , (smx_process_t) simcall->args[0].dp);
+      SIMIX_simcall_answer(simcall);
+      break;  
+
+case SIMCALL_PROCESS_GET_NAME:
+      simcall->result.cc = SIMIX_pre_process_get_name(simcall , (smx_process_t) simcall->args[0].dp);
+      SIMIX_simcall_answer(simcall);
+      break;  
+
+case SIMCALL_PROCESS_IS_SUSPENDED:
+      simcall->result.i = SIMIX_pre_process_is_suspended(simcall , (smx_process_t) simcall->args[0].dp);
+      SIMIX_simcall_answer(simcall);
+      break;  
+
+case SIMCALL_PROCESS_GET_PROPERTIES:
+      simcall->result.dp = SIMIX_pre_process_get_properties(simcall , (smx_process_t) simcall->args[0].dp);
+      SIMIX_simcall_answer(simcall);
+      break;  
+
+case SIMCALL_PROCESS_SLEEP:
+       SIMIX_pre_process_sleep(simcall ,  simcall->args[0].d);
+       
+      break;  
+
+case SIMCALL_PROCESS_ON_EXIT:
+       SIMIX_pre_process_on_exit(simcall , (smx_process_t) simcall->args[0].dp, (int_f_pvoid_t) simcall->args[1].fp,  simcall->args[2].dp);
+      SIMIX_simcall_answer(simcall);
+      break;  
+
+case SIMCALL_PROCESS_AUTO_RESTART_SET:
+       SIMIX_pre_process_auto_restart_set(simcall , (smx_process_t) simcall->args[0].dp,  simcall->args[1].i);
+      SIMIX_simcall_answer(simcall);
+      break;  
+
+case SIMCALL_PROCESS_RESTART:
+      simcall->result.dp = SIMIX_pre_process_restart(simcall , (smx_process_t) simcall->args[0].dp);
+      SIMIX_simcall_answer(simcall);
+      break;  
+
+case SIMCALL_RDV_CREATE:
+      simcall->result.dp = SIMIX_pre_rdv_create(simcall ,  simcall->args[0].cc);
+      SIMIX_simcall_answer(simcall);
+      break;  
+
+case SIMCALL_RDV_DESTROY:
+       SIMIX_pre_rdv_destroy(simcall , (smx_rdv_t) simcall->args[0].dp);
+      SIMIX_simcall_answer(simcall);
+      break;  
+
+case SIMCALL_RDV_GET_BY_NAME:
+      simcall->result.dp = SIMIX_pre_rdv_get_by_name(simcall ,  simcall->args[0].cc);
+      SIMIX_simcall_answer(simcall);
+      break;  
+
+case SIMCALL_RDV_COMM_COUNT_BY_HOST:
+      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);
+      SIMIX_simcall_answer(simcall);
+      break;  
+
+case SIMCALL_RDV_GET_HEAD:
+      simcall->result.dp = SIMIX_pre_rdv_get_head(simcall , (smx_rdv_t) simcall->args[0].dp);
+      SIMIX_simcall_answer(simcall);
+      break;  
+
+case SIMCALL_RDV_SET_RECEIVER:
+       SIMIX_pre_rdv_set_receiver(simcall , (smx_rdv_t) simcall->args[0].dp, (smx_process_t) simcall->args[1].dp);
+      SIMIX_simcall_answer(simcall);
+      break;  
+
+case SIMCALL_RDV_GET_RECEIVER:
+      simcall->result.dp = SIMIX_pre_rdv_get_receiver(simcall , (smx_rdv_t) simcall->args[0].dp);
+      SIMIX_simcall_answer(simcall);
+      break;  
+
+case SIMCALL_COMM_IPROBE:
+      simcall->result.dp = SIMIX_pre_comm_iprobe(simcall , (smx_rdv_t) simcall->args[0].dp,  simcall->args[1].i,  simcall->args[2].i, (simix_match_func_t) simcall->args[3].fp,  simcall->args[4].dp);
+      SIMIX_simcall_answer(simcall);
+      break;  
+
+case SIMCALL_COMM_SEND:
+       SIMIX_pre_comm_send(simcall , (smx_rdv_t) simcall->args[0].dp,  simcall->args[1].d,  simcall->args[2].d,  simcall->args[3].dp,  simcall->args[4].sz, (simix_match_func_t) simcall->args[5].fp,  simcall->args[6].dp,  simcall->args[7].d);
+       
+      break;  
+
+case SIMCALL_COMM_ISEND:
+      simcall->result.dp = SIMIX_pre_comm_isend(simcall , (smx_rdv_t) simcall->args[0].dp,  simcall->args[1].d,  simcall->args[2].d,  simcall->args[3].dp,  simcall->args[4].sz, (simix_match_func_t) simcall->args[5].fp, (simix_clean_func_t) simcall->args[6].fp,  simcall->args[7].dp,  simcall->args[8].i);
+      SIMIX_simcall_answer(simcall);
+      break;  
+
+case SIMCALL_COMM_RECV:
+       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,  simcall->args[4].dp,  simcall->args[5].d);
+       
+      break;  
+
+case SIMCALL_COMM_IRECV:
+      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,  simcall->args[4].dp);
+      SIMIX_simcall_answer(simcall);
+      break;  
+
+case SIMCALL_COMM_RECV_BOUNDED:
+       SIMIX_pre_comm_recv_bounded(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,  simcall->args[4].dp,  simcall->args[5].d,  simcall->args[6].d);
+       
+      break;  
+
+case SIMCALL_COMM_IRECV_BOUNDED:
+      simcall->result.dp = SIMIX_pre_comm_irecv_bounded(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,  simcall->args[4].dp,  simcall->args[5].d);
+      SIMIX_simcall_answer(simcall);
+      break;  
+
+case SIMCALL_COMM_DESTROY:
+       SIMIX_pre_comm_destroy(simcall , (smx_action_t) simcall->args[0].dp);
+      SIMIX_simcall_answer(simcall);
+      break;  
+
+case SIMCALL_COMM_CANCEL:
+       SIMIX_pre_comm_cancel(simcall , (smx_action_t) simcall->args[0].dp);
+      SIMIX_simcall_answer(simcall);
+      break;  
+
+case SIMCALL_COMM_WAITANY:
+       SIMIX_pre_comm_waitany(simcall , (xbt_dynar_t) simcall->args[0].dp);
+       
+      break;  
+
+case SIMCALL_COMM_WAIT:
+       SIMIX_pre_comm_wait(simcall , (smx_action_t) simcall->args[0].dp,  simcall->args[1].d);
+       
+      break;  
+
+case SIMCALL_COMM_TEST:
+       SIMIX_pre_comm_test(simcall , (smx_action_t) simcall->args[0].dp);
+       
+      break;  
+
+case SIMCALL_COMM_TESTANY:
+       SIMIX_pre_comm_testany(simcall , (xbt_dynar_t) simcall->args[0].dp);
+       
+      break;  
+
+case SIMCALL_COMM_GET_REMAINS:
+      simcall->result.d = SIMIX_pre_comm_get_remains(simcall , (smx_action_t) simcall->args[0].dp);
+      SIMIX_simcall_answer(simcall);
+      break;  
+
+case SIMCALL_COMM_GET_STATE:
+      simcall->result.i = SIMIX_pre_comm_get_state(simcall , (smx_action_t) simcall->args[0].dp);
+      SIMIX_simcall_answer(simcall);
+      break;  
+
+case SIMCALL_COMM_GET_SRC_DATA:
+      simcall->result.dp = SIMIX_pre_comm_get_src_data(simcall , (smx_action_t) simcall->args[0].dp);
+      SIMIX_simcall_answer(simcall);
+      break;  
+
+case SIMCALL_COMM_GET_DST_DATA:
+      simcall->result.dp = SIMIX_pre_comm_get_dst_data(simcall , (smx_action_t) simcall->args[0].dp);
+      SIMIX_simcall_answer(simcall);
+      break;  
+
+case SIMCALL_COMM_GET_SRC_PROC:
+      simcall->result.dp = SIMIX_pre_comm_get_src_proc(simcall , (smx_action_t) simcall->args[0].dp);
+      SIMIX_simcall_answer(simcall);
+      break;  
+
+case SIMCALL_COMM_GET_DST_PROC:
+      simcall->result.dp = SIMIX_pre_comm_get_dst_proc(simcall , (smx_action_t) simcall->args[0].dp);
+      SIMIX_simcall_answer(simcall);
+      break;  
+
+case SIMCALL_MUTEX_INIT:
+      simcall->result.dp = SIMIX_pre_mutex_init(simcall );
+      SIMIX_simcall_answer(simcall);
+      break;  
+
+case SIMCALL_MUTEX_DESTROY:
+       SIMIX_pre_mutex_destroy(simcall , (smx_mutex_t) simcall->args[0].dp);
+      SIMIX_simcall_answer(simcall);
+      break;  
+
+case SIMCALL_MUTEX_LOCK:
+       SIMIX_pre_mutex_lock(simcall , (smx_mutex_t) simcall->args[0].dp);
+       
+      break;  
+
+case SIMCALL_MUTEX_TRYLOCK:
+      simcall->result.i = SIMIX_pre_mutex_trylock(simcall , (smx_mutex_t) simcall->args[0].dp);
+      SIMIX_simcall_answer(simcall);
+      break;  
+
+case SIMCALL_MUTEX_UNLOCK:
+       SIMIX_pre_mutex_unlock(simcall , (smx_mutex_t) simcall->args[0].dp);
+      SIMIX_simcall_answer(simcall);
+      break;  
+
+case SIMCALL_COND_INIT:
+      simcall->result.dp = SIMIX_pre_cond_init(simcall );
+      SIMIX_simcall_answer(simcall);
+      break;  
+
+case SIMCALL_COND_DESTROY:
+       SIMIX_pre_cond_destroy(simcall , (smx_cond_t) simcall->args[0].dp);
+      SIMIX_simcall_answer(simcall);
+      break;  
+
+case SIMCALL_COND_SIGNAL:
+       SIMIX_pre_cond_signal(simcall , (smx_cond_t) simcall->args[0].dp);
+      SIMIX_simcall_answer(simcall);
+      break;  
+
+case SIMCALL_COND_WAIT:
+       SIMIX_pre_cond_wait(simcall , (smx_cond_t) simcall->args[0].dp, (smx_mutex_t) simcall->args[1].dp);
+       
+      break;  
+
+case SIMCALL_COND_WAIT_TIMEOUT:
+       SIMIX_pre_cond_wait_timeout(simcall , (smx_cond_t) simcall->args[0].dp, (smx_mutex_t) simcall->args[1].dp,  simcall->args[2].d);
+       
+      break;  
+
+case SIMCALL_COND_BROADCAST:
+       SIMIX_pre_cond_broadcast(simcall , (smx_cond_t) simcall->args[0].dp);
+      SIMIX_simcall_answer(simcall);
+      break;  
+
+case SIMCALL_SEM_INIT:
+      simcall->result.dp = SIMIX_pre_sem_init(simcall ,  simcall->args[0].i);
+      SIMIX_simcall_answer(simcall);
+      break;  
+
+case SIMCALL_SEM_DESTROY:
+       SIMIX_pre_sem_destroy(simcall , (smx_sem_t) simcall->args[0].dp);
+      SIMIX_simcall_answer(simcall);
+      break;  
+
+case SIMCALL_SEM_RELEASE:
+       SIMIX_pre_sem_release(simcall , (smx_sem_t) simcall->args[0].dp);
+      SIMIX_simcall_answer(simcall);
+      break;  
+
+case SIMCALL_SEM_WOULD_BLOCK:
+      simcall->result.i = SIMIX_pre_sem_would_block(simcall , (smx_sem_t) simcall->args[0].dp);
+      SIMIX_simcall_answer(simcall);
+      break;  
+
+case SIMCALL_SEM_ACQUIRE:
+       SIMIX_pre_sem_acquire(simcall , (smx_sem_t) simcall->args[0].dp);
+       
+      break;  
+
+case SIMCALL_SEM_ACQUIRE_TIMEOUT:
+       SIMIX_pre_sem_acquire_timeout(simcall , (smx_sem_t) simcall->args[0].dp,  simcall->args[1].d);
+       
+      break;  
+
+case SIMCALL_SEM_GET_CAPACITY:
+      simcall->result.i = SIMIX_pre_sem_get_capacity(simcall , (smx_sem_t) simcall->args[0].dp);
+      SIMIX_simcall_answer(simcall);
+      break;  
+
+case SIMCALL_FILE_GET_DATA:
+      simcall->result.dp = SIMIX_pre_file_get_data(simcall , (smx_file_t) simcall->args[0].dp);
+      SIMIX_simcall_answer(simcall);
+      break;  
+
+case SIMCALL_FILE_SET_DATA:
+       SIMIX_pre_file_set_data(simcall , (smx_file_t) simcall->args[0].dp,  simcall->args[1].dp);
+      SIMIX_simcall_answer(simcall);
+      break;  
+
+case SIMCALL_FILE_READ:
+       SIMIX_pre_file_read(simcall , (smx_file_t) simcall->args[0].dp,  simcall->args[1].sgsz);
+       
+      break;  
+
+case SIMCALL_FILE_WRITE:
+       SIMIX_pre_file_write(simcall , (smx_file_t) simcall->args[0].dp,  simcall->args[1].sgsz);
+       
+      break;  
+
+case SIMCALL_FILE_OPEN:
+       SIMIX_pre_file_open(simcall ,  simcall->args[0].cc,  simcall->args[1].cc);
+       
+      break;  
+
+case SIMCALL_FILE_CLOSE:
+       SIMIX_pre_file_close(simcall , (smx_file_t) simcall->args[0].dp);
+       
+      break;  
+
+case SIMCALL_FILE_UNLINK:
+      simcall->result.i = SIMIX_pre_file_unlink(simcall , (smx_file_t) simcall->args[0].dp);
+      SIMIX_simcall_answer(simcall);
+      break;  
+
+case SIMCALL_FILE_LS:
+       SIMIX_pre_file_ls(simcall ,  simcall->args[0].cc,  simcall->args[1].cc);
+       
+      break;  
+
+case SIMCALL_FILE_GET_SIZE:
+      simcall->result.sgsz = SIMIX_pre_file_get_size(simcall , (smx_file_t) simcall->args[0].dp);
+      SIMIX_simcall_answer(simcall);
+      break;  
+
+case SIMCALL_FILE_TELL:
+      simcall->result.sgsz = SIMIX_pre_file_tell(simcall , (smx_file_t) simcall->args[0].dp);
+      SIMIX_simcall_answer(simcall);
+      break;  
+
+case SIMCALL_FILE_SEEK:
+      simcall->result.i = SIMIX_pre_file_seek(simcall , (smx_file_t) simcall->args[0].dp,  simcall->args[1].sgsz,  simcall->args[2].i);
+      SIMIX_simcall_answer(simcall);
+      break;  
+
+case SIMCALL_FILE_GET_INFO:
+      simcall->result.dp = SIMIX_pre_file_get_info(simcall , (smx_file_t) simcall->args[0].dp);
+      SIMIX_simcall_answer(simcall);
+      break;  
+
+case SIMCALL_STORAGE_FILE_RENAME:
+       SIMIX_pre_storage_file_rename(simcall , (smx_storage_t) simcall->args[0].dp,  simcall->args[1].cc,  simcall->args[2].cc);
+      SIMIX_simcall_answer(simcall);
+      break;  
+
+case SIMCALL_STORAGE_GET_FREE_SIZE:
+      simcall->result.sgsz = SIMIX_pre_storage_get_free_size(simcall ,  simcall->args[0].cc);
+      SIMIX_simcall_answer(simcall);
+      break;  
+
+case SIMCALL_STORAGE_GET_USED_SIZE:
+      simcall->result.sgsz = SIMIX_pre_storage_get_used_size(simcall ,  simcall->args[0].cc);
+      SIMIX_simcall_answer(simcall);
+      break;  
+
+case SIMCALL_STORAGE_GET_PROPERTIES:
+      simcall->result.dp = SIMIX_pre_storage_get_properties(simcall , (smx_storage_t) simcall->args[0].dp);
+      SIMIX_simcall_answer(simcall);
+      break;  
+
+case SIMCALL_STORAGE_GET_CONTENT:
+      simcall->result.dp = SIMIX_pre_storage_get_content(simcall , (smx_storage_t) simcall->args[0].dp);
+      SIMIX_simcall_answer(simcall);
+      break;  
+
+case SIMCALL_ASR_GET_PROPERTIES:
+      simcall->result.dp = SIMIX_pre_asr_get_properties(simcall ,  simcall->args[0].cc);
+      SIMIX_simcall_answer(simcall);
+      break;  
+
+#ifdef HAVE_LATENCY_BOUND_TRACKING
+case SIMCALL_COMM_IS_LATENCY_BOUNDED:
+      simcall->result.i = SIMIX_pre_comm_is_latency_bounded(simcall , (smx_action_t) simcall->args[0].dp);
+      SIMIX_simcall_answer(simcall);
+      break;  
+
+#endif
+
+#ifdef HAVE_TRACING
+case SIMCALL_SET_CATEGORY:
+       SIMIX_pre_set_category(simcall , (smx_action_t) simcall->args[0].dp,  simcall->args[1].cc);
+      SIMIX_simcall_answer(simcall);
+      break;  
+
+#endif
+
+#ifdef HAVE_MC
+case SIMCALL_MC_SNAPSHOT:
+      simcall->result.dp = SIMIX_pre_mc_snapshot(simcall );
+      SIMIX_simcall_answer(simcall);
+      break;  
+
+case SIMCALL_MC_COMPARE_SNAPSHOTS:
+      simcall->result.i = SIMIX_pre_mc_compare_snapshots(simcall ,  simcall->args[0].dp,  simcall->args[1].dp);
+      SIMIX_simcall_answer(simcall);
+      break;  
+
+case SIMCALL_MC_RANDOM:
+      simcall->result.i = SIMIX_pre_mc_random(simcall ,  simcall->args[0].i,  simcall->args[1].i);
+      SIMIX_simcall_answer(simcall);
+      break;  
+
+#endif
diff --git a/src/simix/simcalls_generated_enum.h b/src/simix/simcalls_generated_enum.h
new file mode 100644 (file)
index 0000000..5202b3b
--- /dev/null
@@ -0,0 +1,139 @@
+SIMCALL_HOST_GET_BY_NAME,
+SIMCALL_HOST_GET_NAME,
+SIMCALL_HOST_ON,
+SIMCALL_HOST_OFF,
+SIMCALL_HOST_GET_PROPERTIES,
+SIMCALL_HOST_GET_CORE,
+SIMCALL_HOST_GET_PROCESS_LIST,
+SIMCALL_HOST_GET_SPEED,
+SIMCALL_HOST_GET_AVAILABLE_SPEED,
+SIMCALL_HOST_GET_STATE,
+SIMCALL_HOST_GET_DATA,
+SIMCALL_HOST_SET_DATA,
+SIMCALL_HOST_GET_CURRENT_POWER_PEAK,
+SIMCALL_HOST_GET_POWER_PEAK_AT,
+SIMCALL_HOST_GET_NB_PSTATES,
+SIMCALL_HOST_SET_POWER_PEAK_AT,
+SIMCALL_HOST_GET_CONSUMED_ENERGY,
+SIMCALL_HOST_EXECUTE,
+SIMCALL_HOST_PARALLEL_EXECUTE,
+SIMCALL_HOST_EXECUTION_DESTROY,
+SIMCALL_HOST_EXECUTION_CANCEL,
+SIMCALL_HOST_EXECUTION_GET_REMAINS,
+SIMCALL_HOST_EXECUTION_GET_STATE,
+SIMCALL_HOST_EXECUTION_SET_PRIORITY,
+SIMCALL_HOST_EXECUTION_SET_BOUND,
+SIMCALL_HOST_EXECUTION_SET_AFFINITY,
+SIMCALL_HOST_EXECUTION_WAIT,
+SIMCALL_HOST_GET_STORAGE_LIST,
+SIMCALL_HOST_GET_PARAMS,
+SIMCALL_HOST_SET_PARAMS,
+SIMCALL_VM_CREATE,
+SIMCALL_VM_START,
+SIMCALL_VM_SET_STATE,
+SIMCALL_VM_GET_STATE,
+SIMCALL_VM_MIGRATE,
+SIMCALL_VM_GET_PM,
+SIMCALL_VM_SET_BOUND,
+SIMCALL_VM_SET_AFFINITY,
+SIMCALL_VM_DESTROY,
+SIMCALL_VM_SUSPEND,
+SIMCALL_VM_RESUME,
+SIMCALL_VM_SHUTDOWN,
+SIMCALL_VM_SAVE,
+SIMCALL_VM_RESTORE,
+SIMCALL_PROCESS_CREATE,
+SIMCALL_PROCESS_KILL,
+SIMCALL_PROCESS_KILLALL,
+SIMCALL_PROCESS_CLEANUP,
+SIMCALL_PROCESS_CHANGE_HOST,
+SIMCALL_PROCESS_SUSPEND,
+SIMCALL_PROCESS_RESUME,
+SIMCALL_PROCESS_COUNT,
+SIMCALL_PROCESS_GET_PID,
+SIMCALL_PROCESS_GET_PPID,
+SIMCALL_PROCESS_GET_DATA,
+SIMCALL_PROCESS_SET_DATA,
+SIMCALL_PROCESS_GET_HOST,
+SIMCALL_PROCESS_GET_NAME,
+SIMCALL_PROCESS_IS_SUSPENDED,
+SIMCALL_PROCESS_GET_PROPERTIES,
+SIMCALL_PROCESS_SLEEP,
+SIMCALL_PROCESS_ON_EXIT,
+SIMCALL_PROCESS_AUTO_RESTART_SET,
+SIMCALL_PROCESS_RESTART,
+SIMCALL_RDV_CREATE,
+SIMCALL_RDV_DESTROY,
+SIMCALL_RDV_GET_BY_NAME,
+SIMCALL_RDV_COMM_COUNT_BY_HOST,
+SIMCALL_RDV_GET_HEAD,
+SIMCALL_RDV_SET_RECEIVER,
+SIMCALL_RDV_GET_RECEIVER,
+SIMCALL_COMM_IPROBE,
+SIMCALL_COMM_SEND,
+SIMCALL_COMM_ISEND,
+SIMCALL_COMM_RECV,
+SIMCALL_COMM_IRECV,
+SIMCALL_COMM_RECV_BOUNDED,
+SIMCALL_COMM_IRECV_BOUNDED,
+SIMCALL_COMM_DESTROY,
+SIMCALL_COMM_CANCEL,
+SIMCALL_COMM_WAITANY,
+SIMCALL_COMM_WAIT,
+SIMCALL_COMM_TEST,
+SIMCALL_COMM_TESTANY,
+SIMCALL_COMM_GET_REMAINS,
+SIMCALL_COMM_GET_STATE,
+SIMCALL_COMM_GET_SRC_DATA,
+SIMCALL_COMM_GET_DST_DATA,
+SIMCALL_COMM_GET_SRC_PROC,
+SIMCALL_COMM_GET_DST_PROC,
+SIMCALL_MUTEX_INIT,
+SIMCALL_MUTEX_DESTROY,
+SIMCALL_MUTEX_LOCK,
+SIMCALL_MUTEX_TRYLOCK,
+SIMCALL_MUTEX_UNLOCK,
+SIMCALL_COND_INIT,
+SIMCALL_COND_DESTROY,
+SIMCALL_COND_SIGNAL,
+SIMCALL_COND_WAIT,
+SIMCALL_COND_WAIT_TIMEOUT,
+SIMCALL_COND_BROADCAST,
+SIMCALL_SEM_INIT,
+SIMCALL_SEM_DESTROY,
+SIMCALL_SEM_RELEASE,
+SIMCALL_SEM_WOULD_BLOCK,
+SIMCALL_SEM_ACQUIRE,
+SIMCALL_SEM_ACQUIRE_TIMEOUT,
+SIMCALL_SEM_GET_CAPACITY,
+SIMCALL_FILE_GET_DATA,
+SIMCALL_FILE_SET_DATA,
+SIMCALL_FILE_READ,
+SIMCALL_FILE_WRITE,
+SIMCALL_FILE_OPEN,
+SIMCALL_FILE_CLOSE,
+SIMCALL_FILE_UNLINK,
+SIMCALL_FILE_LS,
+SIMCALL_FILE_GET_SIZE,
+SIMCALL_FILE_TELL,
+SIMCALL_FILE_SEEK,
+SIMCALL_FILE_GET_INFO,
+SIMCALL_STORAGE_FILE_RENAME,
+SIMCALL_STORAGE_GET_FREE_SIZE,
+SIMCALL_STORAGE_GET_USED_SIZE,
+SIMCALL_STORAGE_GET_PROPERTIES,
+SIMCALL_STORAGE_GET_CONTENT,
+SIMCALL_ASR_GET_PROPERTIES,
+#ifdef HAVE_LATENCY_BOUND_TRACKING
+SIMCALL_COMM_IS_LATENCY_BOUNDED,
+#endif
+
+#ifdef HAVE_TRACING
+SIMCALL_SET_CATEGORY,
+#endif
+
+#ifdef HAVE_MC
+SIMCALL_MC_SNAPSHOT,
+SIMCALL_MC_COMPARE_SNAPSHOTS,
+SIMCALL_MC_RANDOM,
+#endif
diff --git a/src/simix/simcalls_generated_res_getter_setter.h b/src/simix/simcalls_generated_res_getter_setter.h
new file mode 100644 (file)
index 0000000..f4f9181
--- /dev/null
@@ -0,0 +1,574 @@
+static inline smx_host_t simcall_host_get_by_name__get__result(smx_simcall_t simcall){
+  return (smx_host_t) simcall->result.dp;
+}
+static inline void simcall_host_get_by_name__set__result(smx_simcall_t simcall, void* result){
+    simcall->result.dp = result;
+}
+static inline const char* simcall_host_get_name__get__result(smx_simcall_t simcall){
+  return  simcall->result.cc;
+}
+static inline void simcall_host_get_name__set__result(smx_simcall_t simcall, const char* result){
+    simcall->result.cc = result;
+}
+
+
+
+
+static inline xbt_dict_t simcall_host_get_properties__get__result(smx_simcall_t simcall){
+  return (xbt_dict_t) simcall->result.dp;
+}
+static inline void simcall_host_get_properties__set__result(smx_simcall_t simcall, void* result){
+    simcall->result.dp = result;
+}
+static inline int simcall_host_get_core__get__result(smx_simcall_t simcall){
+  return  simcall->result.i;
+}
+static inline void simcall_host_get_core__set__result(smx_simcall_t simcall, int result){
+    simcall->result.i = result;
+}
+static inline xbt_swag_t simcall_host_get_process_list__get__result(smx_simcall_t simcall){
+  return (xbt_swag_t) simcall->result.dp;
+}
+static inline void simcall_host_get_process_list__set__result(smx_simcall_t simcall, void* result){
+    simcall->result.dp = result;
+}
+static inline double simcall_host_get_speed__get__result(smx_simcall_t simcall){
+  return  simcall->result.d;
+}
+static inline void simcall_host_get_speed__set__result(smx_simcall_t simcall, double result){
+    simcall->result.d = result;
+}
+static inline double simcall_host_get_available_speed__get__result(smx_simcall_t simcall){
+  return  simcall->result.d;
+}
+static inline void simcall_host_get_available_speed__set__result(smx_simcall_t simcall, double result){
+    simcall->result.d = result;
+}
+static inline int simcall_host_get_state__get__result(smx_simcall_t simcall){
+  return  simcall->result.i;
+}
+static inline void simcall_host_get_state__set__result(smx_simcall_t simcall, int result){
+    simcall->result.i = result;
+}
+static inline void* simcall_host_get_data__get__result(smx_simcall_t simcall){
+  return  simcall->result.dp;
+}
+static inline void simcall_host_get_data__set__result(smx_simcall_t simcall, void* result){
+    simcall->result.dp = result;
+}
+
+
+static inline double simcall_host_get_current_power_peak__get__result(smx_simcall_t simcall){
+  return  simcall->result.d;
+}
+static inline void simcall_host_get_current_power_peak__set__result(smx_simcall_t simcall, double result){
+    simcall->result.d = result;
+}
+static inline double simcall_host_get_power_peak_at__get__result(smx_simcall_t simcall){
+  return  simcall->result.d;
+}
+static inline void simcall_host_get_power_peak_at__set__result(smx_simcall_t simcall, double result){
+    simcall->result.d = result;
+}
+static inline int simcall_host_get_nb_pstates__get__result(smx_simcall_t simcall){
+  return  simcall->result.i;
+}
+static inline void simcall_host_get_nb_pstates__set__result(smx_simcall_t simcall, int result){
+    simcall->result.i = result;
+}
+
+
+static inline double simcall_host_get_consumed_energy__get__result(smx_simcall_t simcall){
+  return  simcall->result.d;
+}
+static inline void simcall_host_get_consumed_energy__set__result(smx_simcall_t simcall, double result){
+    simcall->result.d = result;
+}
+static inline smx_action_t simcall_host_execute__get__result(smx_simcall_t simcall){
+  return (smx_action_t) simcall->result.dp;
+}
+static inline void simcall_host_execute__set__result(smx_simcall_t simcall, void* result){
+    simcall->result.dp = result;
+}
+static inline smx_action_t simcall_host_parallel_execute__get__result(smx_simcall_t simcall){
+  return (smx_action_t) simcall->result.dp;
+}
+static inline void simcall_host_parallel_execute__set__result(smx_simcall_t simcall, void* result){
+    simcall->result.dp = result;
+}
+
+
+
+
+static inline double simcall_host_execution_get_remains__get__result(smx_simcall_t simcall){
+  return  simcall->result.d;
+}
+static inline void simcall_host_execution_get_remains__set__result(smx_simcall_t simcall, double result){
+    simcall->result.d = result;
+}
+static inline int simcall_host_execution_get_state__get__result(smx_simcall_t simcall){
+  return  simcall->result.i;
+}
+static inline void simcall_host_execution_get_state__set__result(smx_simcall_t simcall, int result){
+    simcall->result.i = result;
+}
+
+
+
+
+
+
+static inline int simcall_host_execution_wait__get__result(smx_simcall_t simcall){
+  return  simcall->result.i;
+}
+static inline void simcall_host_execution_wait__set__result(smx_simcall_t simcall, int result){
+    simcall->result.i = result;
+}
+static inline xbt_dict_t simcall_host_get_storage_list__get__result(smx_simcall_t simcall){
+  return (xbt_dict_t) simcall->result.dp;
+}
+static inline void simcall_host_get_storage_list__set__result(smx_simcall_t simcall, void* result){
+    simcall->result.dp = result;
+}
+
+
+
+
+static inline void* simcall_vm_create__get__result(smx_simcall_t simcall){
+  return  simcall->result.dp;
+}
+static inline void simcall_vm_create__set__result(smx_simcall_t simcall, void* result){
+    simcall->result.dp = result;
+}
+
+
+
+
+static inline int simcall_vm_get_state__get__result(smx_simcall_t simcall){
+  return  simcall->result.i;
+}
+static inline void simcall_vm_get_state__set__result(smx_simcall_t simcall, int result){
+    simcall->result.i = result;
+}
+
+
+static inline void* simcall_vm_get_pm__get__result(smx_simcall_t simcall){
+  return  simcall->result.dp;
+}
+static inline void simcall_vm_get_pm__set__result(smx_simcall_t simcall, void* result){
+    simcall->result.dp = result;
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+static inline int simcall_process_count__get__result(smx_simcall_t simcall){
+  return  simcall->result.i;
+}
+static inline void simcall_process_count__set__result(smx_simcall_t simcall, int result){
+    simcall->result.i = result;
+}
+static inline int simcall_process_get_PID__get__result(smx_simcall_t simcall){
+  return  simcall->result.i;
+}
+static inline void simcall_process_get_PID__set__result(smx_simcall_t simcall, int result){
+    simcall->result.i = result;
+}
+static inline int simcall_process_get_PPID__get__result(smx_simcall_t simcall){
+  return  simcall->result.i;
+}
+static inline void simcall_process_get_PPID__set__result(smx_simcall_t simcall, int result){
+    simcall->result.i = result;
+}
+static inline void* simcall_process_get_data__get__result(smx_simcall_t simcall){
+  return  simcall->result.dp;
+}
+static inline void simcall_process_get_data__set__result(smx_simcall_t simcall, void* result){
+    simcall->result.dp = result;
+}
+
+
+static inline smx_host_t simcall_process_get_host__get__result(smx_simcall_t simcall){
+  return (smx_host_t) simcall->result.dp;
+}
+static inline void simcall_process_get_host__set__result(smx_simcall_t simcall, void* result){
+    simcall->result.dp = result;
+}
+static inline const char* simcall_process_get_name__get__result(smx_simcall_t simcall){
+  return  simcall->result.cc;
+}
+static inline void simcall_process_get_name__set__result(smx_simcall_t simcall, const char* result){
+    simcall->result.cc = result;
+}
+static inline int simcall_process_is_suspended__get__result(smx_simcall_t simcall){
+  return  simcall->result.i;
+}
+static inline void simcall_process_is_suspended__set__result(smx_simcall_t simcall, int result){
+    simcall->result.i = result;
+}
+static inline xbt_dict_t simcall_process_get_properties__get__result(smx_simcall_t simcall){
+  return (xbt_dict_t) simcall->result.dp;
+}
+static inline void simcall_process_get_properties__set__result(smx_simcall_t simcall, void* result){
+    simcall->result.dp = result;
+}
+static inline int simcall_process_sleep__get__result(smx_simcall_t simcall){
+  return  simcall->result.i;
+}
+static inline void simcall_process_sleep__set__result(smx_simcall_t simcall, int result){
+    simcall->result.i = result;
+}
+
+
+
+
+static inline smx_process_t simcall_process_restart__get__result(smx_simcall_t simcall){
+  return (smx_process_t) simcall->result.dp;
+}
+static inline void simcall_process_restart__set__result(smx_simcall_t simcall, void* result){
+    simcall->result.dp = result;
+}
+static inline smx_rdv_t simcall_rdv_create__get__result(smx_simcall_t simcall){
+  return (smx_rdv_t) simcall->result.dp;
+}
+static inline void simcall_rdv_create__set__result(smx_simcall_t simcall, void* result){
+    simcall->result.dp = result;
+}
+
+
+static inline smx_host_t simcall_rdv_get_by_name__get__result(smx_simcall_t simcall){
+  return (smx_host_t) simcall->result.dp;
+}
+static inline void simcall_rdv_get_by_name__set__result(smx_simcall_t simcall, void* result){
+    simcall->result.dp = result;
+}
+static inline unsigned int simcall_rdv_comm_count_by_host__get__result(smx_simcall_t simcall){
+  return  simcall->result.ui;
+}
+static inline void simcall_rdv_comm_count_by_host__set__result(smx_simcall_t simcall, unsigned int result){
+    simcall->result.ui = result;
+}
+static inline smx_action_t simcall_rdv_get_head__get__result(smx_simcall_t simcall){
+  return (smx_action_t) simcall->result.dp;
+}
+static inline void simcall_rdv_get_head__set__result(smx_simcall_t simcall, void* result){
+    simcall->result.dp = result;
+}
+
+
+static inline smx_process_t simcall_rdv_get_receiver__get__result(smx_simcall_t simcall){
+  return (smx_process_t) simcall->result.dp;
+}
+static inline void simcall_rdv_get_receiver__set__result(smx_simcall_t simcall, void* result){
+    simcall->result.dp = result;
+}
+static inline smx_action_t simcall_comm_iprobe__get__result(smx_simcall_t simcall){
+  return (smx_action_t) simcall->result.dp;
+}
+static inline void simcall_comm_iprobe__set__result(smx_simcall_t simcall, void* result){
+    simcall->result.dp = result;
+}
+
+
+static inline smx_action_t simcall_comm_isend__get__result(smx_simcall_t simcall){
+  return (smx_action_t) simcall->result.dp;
+}
+static inline void simcall_comm_isend__set__result(smx_simcall_t simcall, void* result){
+    simcall->result.dp = result;
+}
+
+
+static inline smx_action_t simcall_comm_irecv__get__result(smx_simcall_t simcall){
+  return (smx_action_t) simcall->result.dp;
+}
+static inline void simcall_comm_irecv__set__result(smx_simcall_t simcall, void* result){
+    simcall->result.dp = result;
+}
+
+
+static inline smx_action_t simcall_comm_irecv_bounded__get__result(smx_simcall_t simcall){
+  return (smx_action_t) simcall->result.dp;
+}
+static inline void simcall_comm_irecv_bounded__set__result(smx_simcall_t simcall, void* result){
+    simcall->result.dp = result;
+}
+
+
+
+
+static inline int simcall_comm_waitany__get__result(smx_simcall_t simcall){
+  return  simcall->result.i;
+}
+static inline void simcall_comm_waitany__set__result(smx_simcall_t simcall, int result){
+    simcall->result.i = result;
+}
+
+
+static inline int simcall_comm_test__get__result(smx_simcall_t simcall){
+  return  simcall->result.i;
+}
+static inline void simcall_comm_test__set__result(smx_simcall_t simcall, int result){
+    simcall->result.i = result;
+}
+static inline int simcall_comm_testany__get__result(smx_simcall_t simcall){
+  return  simcall->result.i;
+}
+static inline void simcall_comm_testany__set__result(smx_simcall_t simcall, int result){
+    simcall->result.i = result;
+}
+static inline double simcall_comm_get_remains__get__result(smx_simcall_t simcall){
+  return  simcall->result.d;
+}
+static inline void simcall_comm_get_remains__set__result(smx_simcall_t simcall, double result){
+    simcall->result.d = result;
+}
+static inline int simcall_comm_get_state__get__result(smx_simcall_t simcall){
+  return  simcall->result.i;
+}
+static inline void simcall_comm_get_state__set__result(smx_simcall_t simcall, int result){
+    simcall->result.i = result;
+}
+static inline void* simcall_comm_get_src_data__get__result(smx_simcall_t simcall){
+  return  simcall->result.dp;
+}
+static inline void simcall_comm_get_src_data__set__result(smx_simcall_t simcall, void* result){
+    simcall->result.dp = result;
+}
+static inline void* simcall_comm_get_dst_data__get__result(smx_simcall_t simcall){
+  return  simcall->result.dp;
+}
+static inline void simcall_comm_get_dst_data__set__result(smx_simcall_t simcall, void* result){
+    simcall->result.dp = result;
+}
+static inline smx_process_t simcall_comm_get_src_proc__get__result(smx_simcall_t simcall){
+  return (smx_process_t) simcall->result.dp;
+}
+static inline void simcall_comm_get_src_proc__set__result(smx_simcall_t simcall, void* result){
+    simcall->result.dp = result;
+}
+static inline smx_process_t simcall_comm_get_dst_proc__get__result(smx_simcall_t simcall){
+  return (smx_process_t) simcall->result.dp;
+}
+static inline void simcall_comm_get_dst_proc__set__result(smx_simcall_t simcall, void* result){
+    simcall->result.dp = result;
+}
+static inline smx_mutex_t simcall_mutex_init__get__result(smx_simcall_t simcall){
+  return (smx_mutex_t) simcall->result.dp;
+}
+static inline void simcall_mutex_init__set__result(smx_simcall_t simcall, void* result){
+    simcall->result.dp = result;
+}
+
+
+
+
+static inline int simcall_mutex_trylock__get__result(smx_simcall_t simcall){
+  return  simcall->result.i;
+}
+static inline void simcall_mutex_trylock__set__result(smx_simcall_t simcall, int result){
+    simcall->result.i = result;
+}
+
+
+static inline smx_cond_t simcall_cond_init__get__result(smx_simcall_t simcall){
+  return (smx_cond_t) simcall->result.dp;
+}
+static inline void simcall_cond_init__set__result(smx_simcall_t simcall, void* result){
+    simcall->result.dp = result;
+}
+
+
+
+
+
+
+
+
+
+
+static inline smx_sem_t simcall_sem_init__get__result(smx_simcall_t simcall){
+  return (smx_sem_t) simcall->result.dp;
+}
+static inline void simcall_sem_init__set__result(smx_simcall_t simcall, void* result){
+    simcall->result.dp = result;
+}
+
+
+
+
+static inline int simcall_sem_would_block__get__result(smx_simcall_t simcall){
+  return  simcall->result.i;
+}
+static inline void simcall_sem_would_block__set__result(smx_simcall_t simcall, int result){
+    simcall->result.i = result;
+}
+
+
+
+
+static inline int simcall_sem_get_capacity__get__result(smx_simcall_t simcall){
+  return  simcall->result.i;
+}
+static inline void simcall_sem_get_capacity__set__result(smx_simcall_t simcall, int result){
+    simcall->result.i = result;
+}
+static inline void* simcall_file_get_data__get__result(smx_simcall_t simcall){
+  return  simcall->result.dp;
+}
+static inline void simcall_file_get_data__set__result(smx_simcall_t simcall, void* result){
+    simcall->result.dp = result;
+}
+
+
+static inline sg_size_t simcall_file_read__get__result(smx_simcall_t simcall){
+  return  simcall->result.sgsz;
+}
+static inline void simcall_file_read__set__result(smx_simcall_t simcall, sg_size_t result){
+    simcall->result.sgsz = result;
+}
+static inline sg_size_t simcall_file_write__get__result(smx_simcall_t simcall){
+  return  simcall->result.sgsz;
+}
+static inline void simcall_file_write__set__result(smx_simcall_t simcall, sg_size_t result){
+    simcall->result.sgsz = result;
+}
+static inline smx_file_t simcall_file_open__get__result(smx_simcall_t simcall){
+  return (smx_file_t) simcall->result.dp;
+}
+static inline void simcall_file_open__set__result(smx_simcall_t simcall, void* result){
+    simcall->result.dp = result;
+}
+static inline int simcall_file_close__get__result(smx_simcall_t simcall){
+  return  simcall->result.i;
+}
+static inline void simcall_file_close__set__result(smx_simcall_t simcall, int result){
+    simcall->result.i = result;
+}
+static inline int simcall_file_unlink__get__result(smx_simcall_t simcall){
+  return  simcall->result.i;
+}
+static inline void simcall_file_unlink__set__result(smx_simcall_t simcall, int result){
+    simcall->result.i = result;
+}
+static inline xbt_dict_t simcall_file_ls__get__result(smx_simcall_t simcall){
+  return (xbt_dict_t) simcall->result.dp;
+}
+static inline void simcall_file_ls__set__result(smx_simcall_t simcall, void* result){
+    simcall->result.dp = result;
+}
+static inline sg_size_t simcall_file_get_size__get__result(smx_simcall_t simcall){
+  return  simcall->result.sgsz;
+}
+static inline void simcall_file_get_size__set__result(smx_simcall_t simcall, sg_size_t result){
+    simcall->result.sgsz = result;
+}
+static inline sg_size_t simcall_file_tell__get__result(smx_simcall_t simcall){
+  return  simcall->result.sgsz;
+}
+static inline void simcall_file_tell__set__result(smx_simcall_t simcall, sg_size_t result){
+    simcall->result.sgsz = result;
+}
+static inline int simcall_file_seek__get__result(smx_simcall_t simcall){
+  return  simcall->result.i;
+}
+static inline void simcall_file_seek__set__result(smx_simcall_t simcall, int result){
+    simcall->result.i = result;
+}
+static inline xbt_dynar_t simcall_file_get_info__get__result(smx_simcall_t simcall){
+  return (xbt_dynar_t) simcall->result.dp;
+}
+static inline void simcall_file_get_info__set__result(smx_simcall_t simcall, void* result){
+    simcall->result.dp = result;
+}
+
+
+static inline sg_size_t simcall_storage_get_free_size__get__result(smx_simcall_t simcall){
+  return  simcall->result.sgsz;
+}
+static inline void simcall_storage_get_free_size__set__result(smx_simcall_t simcall, sg_size_t result){
+    simcall->result.sgsz = result;
+}
+static inline sg_size_t simcall_storage_get_used_size__get__result(smx_simcall_t simcall){
+  return  simcall->result.sgsz;
+}
+static inline void simcall_storage_get_used_size__set__result(smx_simcall_t simcall, sg_size_t result){
+    simcall->result.sgsz = result;
+}
+static inline xbt_dict_t simcall_storage_get_properties__get__result(smx_simcall_t simcall){
+  return (xbt_dict_t) simcall->result.dp;
+}
+static inline void simcall_storage_get_properties__set__result(smx_simcall_t simcall, void* result){
+    simcall->result.dp = result;
+}
+static inline xbt_dict_t simcall_storage_get_content__get__result(smx_simcall_t simcall){
+  return (xbt_dict_t) simcall->result.dp;
+}
+static inline void simcall_storage_get_content__set__result(smx_simcall_t simcall, void* result){
+    simcall->result.dp = result;
+}
+static inline xbt_dict_t simcall_asr_get_properties__get__result(smx_simcall_t simcall){
+  return (xbt_dict_t) simcall->result.dp;
+}
+static inline void simcall_asr_get_properties__set__result(smx_simcall_t simcall, void* result){
+    simcall->result.dp = result;
+}
+#ifdef HAVE_LATENCY_BOUND_TRACKING
+static inline int simcall_comm_is_latency_bounded__get__result(smx_simcall_t simcall){
+  return  simcall->result.i;
+}
+static inline void simcall_comm_is_latency_bounded__set__result(smx_simcall_t simcall, int result){
+    simcall->result.i = result;
+}
+#endif
+
+#ifdef HAVE_TRACING
+
+
+#endif
+
+#ifdef HAVE_MC
+static inline void* simcall_mc_snapshot__get__result(smx_simcall_t simcall){
+  return  simcall->result.dp;
+}
+static inline void simcall_mc_snapshot__set__result(smx_simcall_t simcall, void* result){
+    simcall->result.dp = result;
+}
+static inline int simcall_mc_compare_snapshots__get__result(smx_simcall_t simcall){
+  return  simcall->result.i;
+}
+static inline void simcall_mc_compare_snapshots__set__result(smx_simcall_t simcall, int result){
+    simcall->result.i = result;
+}
+static inline int simcall_mc_random__get__result(smx_simcall_t simcall){
+  return  simcall->result.i;
+}
+static inline void simcall_mc_random__set__result(smx_simcall_t simcall, int result){
+    simcall->result.i = result;
+}
+#endif
diff --git a/src/simix/simcalls_generated_string.c b/src/simix/simcalls_generated_string.c
new file mode 100644 (file)
index 0000000..de06b0d
--- /dev/null
@@ -0,0 +1,139 @@
+[SIMCALL_HOST_GET_BY_NAME] = "SIMCALL_HOST_GET_BY_NAME",
+[SIMCALL_HOST_GET_NAME] = "SIMCALL_HOST_GET_NAME",
+[SIMCALL_HOST_ON] = "SIMCALL_HOST_ON",
+[SIMCALL_HOST_OFF] = "SIMCALL_HOST_OFF",
+[SIMCALL_HOST_GET_PROPERTIES] = "SIMCALL_HOST_GET_PROPERTIES",
+[SIMCALL_HOST_GET_CORE] = "SIMCALL_HOST_GET_CORE",
+[SIMCALL_HOST_GET_PROCESS_LIST] = "SIMCALL_HOST_GET_PROCESS_LIST",
+[SIMCALL_HOST_GET_SPEED] = "SIMCALL_HOST_GET_SPEED",
+[SIMCALL_HOST_GET_AVAILABLE_SPEED] = "SIMCALL_HOST_GET_AVAILABLE_SPEED",
+[SIMCALL_HOST_GET_STATE] = "SIMCALL_HOST_GET_STATE",
+[SIMCALL_HOST_GET_DATA] = "SIMCALL_HOST_GET_DATA",
+[SIMCALL_HOST_SET_DATA] = "SIMCALL_HOST_SET_DATA",
+[SIMCALL_HOST_GET_CURRENT_POWER_PEAK] = "SIMCALL_HOST_GET_CURRENT_POWER_PEAK",
+[SIMCALL_HOST_GET_POWER_PEAK_AT] = "SIMCALL_HOST_GET_POWER_PEAK_AT",
+[SIMCALL_HOST_GET_NB_PSTATES] = "SIMCALL_HOST_GET_NB_PSTATES",
+[SIMCALL_HOST_SET_POWER_PEAK_AT] = "SIMCALL_HOST_SET_POWER_PEAK_AT",
+[SIMCALL_HOST_GET_CONSUMED_ENERGY] = "SIMCALL_HOST_GET_CONSUMED_ENERGY",
+[SIMCALL_HOST_EXECUTE] = "SIMCALL_HOST_EXECUTE",
+[SIMCALL_HOST_PARALLEL_EXECUTE] = "SIMCALL_HOST_PARALLEL_EXECUTE",
+[SIMCALL_HOST_EXECUTION_DESTROY] = "SIMCALL_HOST_EXECUTION_DESTROY",
+[SIMCALL_HOST_EXECUTION_CANCEL] = "SIMCALL_HOST_EXECUTION_CANCEL",
+[SIMCALL_HOST_EXECUTION_GET_REMAINS] = "SIMCALL_HOST_EXECUTION_GET_REMAINS",
+[SIMCALL_HOST_EXECUTION_GET_STATE] = "SIMCALL_HOST_EXECUTION_GET_STATE",
+[SIMCALL_HOST_EXECUTION_SET_PRIORITY] = "SIMCALL_HOST_EXECUTION_SET_PRIORITY",
+[SIMCALL_HOST_EXECUTION_SET_BOUND] = "SIMCALL_HOST_EXECUTION_SET_BOUND",
+[SIMCALL_HOST_EXECUTION_SET_AFFINITY] = "SIMCALL_HOST_EXECUTION_SET_AFFINITY",
+[SIMCALL_HOST_EXECUTION_WAIT] = "SIMCALL_HOST_EXECUTION_WAIT",
+[SIMCALL_HOST_GET_STORAGE_LIST] = "SIMCALL_HOST_GET_STORAGE_LIST",
+[SIMCALL_HOST_GET_PARAMS] = "SIMCALL_HOST_GET_PARAMS",
+[SIMCALL_HOST_SET_PARAMS] = "SIMCALL_HOST_SET_PARAMS",
+[SIMCALL_VM_CREATE] = "SIMCALL_VM_CREATE",
+[SIMCALL_VM_START] = "SIMCALL_VM_START",
+[SIMCALL_VM_SET_STATE] = "SIMCALL_VM_SET_STATE",
+[SIMCALL_VM_GET_STATE] = "SIMCALL_VM_GET_STATE",
+[SIMCALL_VM_MIGRATE] = "SIMCALL_VM_MIGRATE",
+[SIMCALL_VM_GET_PM] = "SIMCALL_VM_GET_PM",
+[SIMCALL_VM_SET_BOUND] = "SIMCALL_VM_SET_BOUND",
+[SIMCALL_VM_SET_AFFINITY] = "SIMCALL_VM_SET_AFFINITY",
+[SIMCALL_VM_DESTROY] = "SIMCALL_VM_DESTROY",
+[SIMCALL_VM_SUSPEND] = "SIMCALL_VM_SUSPEND",
+[SIMCALL_VM_RESUME] = "SIMCALL_VM_RESUME",
+[SIMCALL_VM_SHUTDOWN] = "SIMCALL_VM_SHUTDOWN",
+[SIMCALL_VM_SAVE] = "SIMCALL_VM_SAVE",
+[SIMCALL_VM_RESTORE] = "SIMCALL_VM_RESTORE",
+[SIMCALL_PROCESS_CREATE] = "SIMCALL_PROCESS_CREATE",
+[SIMCALL_PROCESS_KILL] = "SIMCALL_PROCESS_KILL",
+[SIMCALL_PROCESS_KILLALL] = "SIMCALL_PROCESS_KILLALL",
+[SIMCALL_PROCESS_CLEANUP] = "SIMCALL_PROCESS_CLEANUP",
+[SIMCALL_PROCESS_CHANGE_HOST] = "SIMCALL_PROCESS_CHANGE_HOST",
+[SIMCALL_PROCESS_SUSPEND] = "SIMCALL_PROCESS_SUSPEND",
+[SIMCALL_PROCESS_RESUME] = "SIMCALL_PROCESS_RESUME",
+[SIMCALL_PROCESS_COUNT] = "SIMCALL_PROCESS_COUNT",
+[SIMCALL_PROCESS_GET_PID] = "SIMCALL_PROCESS_GET_PID",
+[SIMCALL_PROCESS_GET_PPID] = "SIMCALL_PROCESS_GET_PPID",
+[SIMCALL_PROCESS_GET_DATA] = "SIMCALL_PROCESS_GET_DATA",
+[SIMCALL_PROCESS_SET_DATA] = "SIMCALL_PROCESS_SET_DATA",
+[SIMCALL_PROCESS_GET_HOST] = "SIMCALL_PROCESS_GET_HOST",
+[SIMCALL_PROCESS_GET_NAME] = "SIMCALL_PROCESS_GET_NAME",
+[SIMCALL_PROCESS_IS_SUSPENDED] = "SIMCALL_PROCESS_IS_SUSPENDED",
+[SIMCALL_PROCESS_GET_PROPERTIES] = "SIMCALL_PROCESS_GET_PROPERTIES",
+[SIMCALL_PROCESS_SLEEP] = "SIMCALL_PROCESS_SLEEP",
+[SIMCALL_PROCESS_ON_EXIT] = "SIMCALL_PROCESS_ON_EXIT",
+[SIMCALL_PROCESS_AUTO_RESTART_SET] = "SIMCALL_PROCESS_AUTO_RESTART_SET",
+[SIMCALL_PROCESS_RESTART] = "SIMCALL_PROCESS_RESTART",
+[SIMCALL_RDV_CREATE] = "SIMCALL_RDV_CREATE",
+[SIMCALL_RDV_DESTROY] = "SIMCALL_RDV_DESTROY",
+[SIMCALL_RDV_GET_BY_NAME] = "SIMCALL_RDV_GET_BY_NAME",
+[SIMCALL_RDV_COMM_COUNT_BY_HOST] = "SIMCALL_RDV_COMM_COUNT_BY_HOST",
+[SIMCALL_RDV_GET_HEAD] = "SIMCALL_RDV_GET_HEAD",
+[SIMCALL_RDV_SET_RECEIVER] = "SIMCALL_RDV_SET_RECEIVER",
+[SIMCALL_RDV_GET_RECEIVER] = "SIMCALL_RDV_GET_RECEIVER",
+[SIMCALL_COMM_IPROBE] = "SIMCALL_COMM_IPROBE",
+[SIMCALL_COMM_SEND] = "SIMCALL_COMM_SEND",
+[SIMCALL_COMM_ISEND] = "SIMCALL_COMM_ISEND",
+[SIMCALL_COMM_RECV] = "SIMCALL_COMM_RECV",
+[SIMCALL_COMM_IRECV] = "SIMCALL_COMM_IRECV",
+[SIMCALL_COMM_RECV_BOUNDED] = "SIMCALL_COMM_RECV_BOUNDED",
+[SIMCALL_COMM_IRECV_BOUNDED] = "SIMCALL_COMM_IRECV_BOUNDED",
+[SIMCALL_COMM_DESTROY] = "SIMCALL_COMM_DESTROY",
+[SIMCALL_COMM_CANCEL] = "SIMCALL_COMM_CANCEL",
+[SIMCALL_COMM_WAITANY] = "SIMCALL_COMM_WAITANY",
+[SIMCALL_COMM_WAIT] = "SIMCALL_COMM_WAIT",
+[SIMCALL_COMM_TEST] = "SIMCALL_COMM_TEST",
+[SIMCALL_COMM_TESTANY] = "SIMCALL_COMM_TESTANY",
+[SIMCALL_COMM_GET_REMAINS] = "SIMCALL_COMM_GET_REMAINS",
+[SIMCALL_COMM_GET_STATE] = "SIMCALL_COMM_GET_STATE",
+[SIMCALL_COMM_GET_SRC_DATA] = "SIMCALL_COMM_GET_SRC_DATA",
+[SIMCALL_COMM_GET_DST_DATA] = "SIMCALL_COMM_GET_DST_DATA",
+[SIMCALL_COMM_GET_SRC_PROC] = "SIMCALL_COMM_GET_SRC_PROC",
+[SIMCALL_COMM_GET_DST_PROC] = "SIMCALL_COMM_GET_DST_PROC",
+[SIMCALL_MUTEX_INIT] = "SIMCALL_MUTEX_INIT",
+[SIMCALL_MUTEX_DESTROY] = "SIMCALL_MUTEX_DESTROY",
+[SIMCALL_MUTEX_LOCK] = "SIMCALL_MUTEX_LOCK",
+[SIMCALL_MUTEX_TRYLOCK] = "SIMCALL_MUTEX_TRYLOCK",
+[SIMCALL_MUTEX_UNLOCK] = "SIMCALL_MUTEX_UNLOCK",
+[SIMCALL_COND_INIT] = "SIMCALL_COND_INIT",
+[SIMCALL_COND_DESTROY] = "SIMCALL_COND_DESTROY",
+[SIMCALL_COND_SIGNAL] = "SIMCALL_COND_SIGNAL",
+[SIMCALL_COND_WAIT] = "SIMCALL_COND_WAIT",
+[SIMCALL_COND_WAIT_TIMEOUT] = "SIMCALL_COND_WAIT_TIMEOUT",
+[SIMCALL_COND_BROADCAST] = "SIMCALL_COND_BROADCAST",
+[SIMCALL_SEM_INIT] = "SIMCALL_SEM_INIT",
+[SIMCALL_SEM_DESTROY] = "SIMCALL_SEM_DESTROY",
+[SIMCALL_SEM_RELEASE] = "SIMCALL_SEM_RELEASE",
+[SIMCALL_SEM_WOULD_BLOCK] = "SIMCALL_SEM_WOULD_BLOCK",
+[SIMCALL_SEM_ACQUIRE] = "SIMCALL_SEM_ACQUIRE",
+[SIMCALL_SEM_ACQUIRE_TIMEOUT] = "SIMCALL_SEM_ACQUIRE_TIMEOUT",
+[SIMCALL_SEM_GET_CAPACITY] = "SIMCALL_SEM_GET_CAPACITY",
+[SIMCALL_FILE_GET_DATA] = "SIMCALL_FILE_GET_DATA",
+[SIMCALL_FILE_SET_DATA] = "SIMCALL_FILE_SET_DATA",
+[SIMCALL_FILE_READ] = "SIMCALL_FILE_READ",
+[SIMCALL_FILE_WRITE] = "SIMCALL_FILE_WRITE",
+[SIMCALL_FILE_OPEN] = "SIMCALL_FILE_OPEN",
+[SIMCALL_FILE_CLOSE] = "SIMCALL_FILE_CLOSE",
+[SIMCALL_FILE_UNLINK] = "SIMCALL_FILE_UNLINK",
+[SIMCALL_FILE_LS] = "SIMCALL_FILE_LS",
+[SIMCALL_FILE_GET_SIZE] = "SIMCALL_FILE_GET_SIZE",
+[SIMCALL_FILE_TELL] = "SIMCALL_FILE_TELL",
+[SIMCALL_FILE_SEEK] = "SIMCALL_FILE_SEEK",
+[SIMCALL_FILE_GET_INFO] = "SIMCALL_FILE_GET_INFO",
+[SIMCALL_STORAGE_FILE_RENAME] = "SIMCALL_STORAGE_FILE_RENAME",
+[SIMCALL_STORAGE_GET_FREE_SIZE] = "SIMCALL_STORAGE_GET_FREE_SIZE",
+[SIMCALL_STORAGE_GET_USED_SIZE] = "SIMCALL_STORAGE_GET_USED_SIZE",
+[SIMCALL_STORAGE_GET_PROPERTIES] = "SIMCALL_STORAGE_GET_PROPERTIES",
+[SIMCALL_STORAGE_GET_CONTENT] = "SIMCALL_STORAGE_GET_CONTENT",
+[SIMCALL_ASR_GET_PROPERTIES] = "SIMCALL_ASR_GET_PROPERTIES",
+#ifdef HAVE_LATENCY_BOUND_TRACKING
+[SIMCALL_COMM_IS_LATENCY_BOUNDED] = "SIMCALL_COMM_IS_LATENCY_BOUNDED",
+#endif
+
+#ifdef HAVE_TRACING
+[SIMCALL_SET_CATEGORY] = "SIMCALL_SET_CATEGORY",
+#endif
+
+#ifdef HAVE_MC
+[SIMCALL_MC_SNAPSHOT] = "SIMCALL_MC_SNAPSHOT",
+[SIMCALL_MC_COMPARE_SNAPSHOTS] = "SIMCALL_MC_COMPARE_SNAPSHOTS",
+[SIMCALL_MC_RANDOM] = "SIMCALL_MC_RANDOM",
+#endif
index 207c3de..9ef5352 100644 (file)
@@ -54,7 +54,7 @@ void SIMIX_simcall_pre(smx_simcall_t simcall, int value)
   if (simcall->issuer->context->iwannadie && simcall->call != SIMCALL_PROCESS_CLEANUP)
     return;
   switch (simcall->call) {
   if (simcall->issuer->context->iwannadie && simcall->call != SIMCALL_PROCESS_CLEANUP)
     return;
   switch (simcall->call) {
-SIMCALL_LIST(SIMCALL_CASE, SIMCALL_SEP_NOTHING)
+#include "simcalls_generated_case.c"
     case NUM_SIMCALLS:;
       break;
     case SIMCALL_NONE:;
     case NUM_SIMCALLS:;
       break;
     case SIMCALL_NONE:;
index 1b20fbe..58b8bc4 100644 (file)
@@ -16,436 +16,14 @@ SG_BEGIN_DECL()
  * automatically, using macros.
  * To add a new simcall follow the following syntax:
  *
  * automatically, using macros.
  * To add a new simcall follow the following syntax:
  *
- * SIMCALL_ENUM_ELEMENT(<simcall_enumeration_id>, <simcall_handler_function>)
- *
  * */
 
  * */
 
-/****************************
- * SIMCALL GENERATING MACRO *
- ****************************
- *
- * action(ENUM_NAME, func_name, result_type, params…) 
- *
- **/
-
-/*
- * Some macro machinery to get a MAP over the arguments of a variadic macro.
- * It uses a FOLD to apply a macro to every argument, and because there is
- * no recursion in the C preprocessor we must create a new macro for every
- * depth of FOLD's recursion.
- */
-
-/* FOLD macro */
-#define FE_0(WHAT, X, ...)
-#define FE_1(I, WHAT, X) WHAT(I, X)
-#define FE_2(I, WHAT, X, ...) WHAT(I, X), FE_1(I+1, WHAT, __VA_ARGS__)
-#define FE_3(I, WHAT, X, ...) WHAT(I, X), FE_2(I+1, WHAT, __VA_ARGS__)
-#define FE_4(I, WHAT, X, ...) WHAT(I, X), FE_3(I+1, WHAT, __VA_ARGS__)
-#define FE_5(I, WHAT, X, ...) WHAT(I, X), FE_4(I+1, WHAT, __VA_ARGS__)
-#define FE_6(I, WHAT, X, ...) WHAT(I, X), FE_5(I+1, WHAT, __VA_ARGS__)
-#define FE_7(I, WHAT, X, ...) WHAT(I, X), FE_6(I+1, WHAT, __VA_ARGS__)
-#define FE_8(I, WHAT, X, ...) WHAT(I, X), FE_7(I+1, WHAT, __VA_ARGS__)
-#define FE_9(I, WHAT, X, ...) WHAT(I, X), FE_8(I+1, WHAT, __VA_ARGS__)
-#define FE_10(I, WHAT, X, ...) WHAT(I, X), FE_9(I+1, WHAT, __VA_ARGS__)
-
-/* NOTE: add as many FE_n as needed (maximum number of simcall arguments )*/
-
-/* Make a MAP macro usgin FOLD (will apply 'action' to the arguments.
- * GET_MACRO is a smart hack that counts the number of arguments passed to
- * the variadic macro, and it is used to invoke the right FOLD depth.
- */
-#define GET_MACRO(_0,_1,_2,_3,_4,_5,_6,_7,_8,_9,_10,NAME,...) NAME
-#define MAP(action, ...) \
-  GET_MACRO(, ##__VA_ARGS__, FE_10,FE_9,FE_8,FE_7,FE_6,FE_5,FE_4,FE_3,FE_2,FE_1, FE_0) (0, action, __VA_ARGS__)
-
-/* MAP with default arguments */
-#define APPLY_MAP(WHAT, I, X, ...) WHAT(I, __VA_ARGS__, X)
-#define FE_DA_0(I, WHAT, args, X, ...)
-#define FE_DA_1(I, WHAT, args, X, ...) APPLY_MAP(WHAT, I, X, args)
-#define FE_DA_2(I, WHAT, args, X, ...) APPLY_MAP(WHAT, I, X, args) FE_DA_1(I+1, WHAT, args, __VA_ARGS__)
-#define FE_DA_3(I, WHAT, args, X, ...) APPLY_MAP(WHAT, I, X, args) FE_DA_2(I+1, WHAT, args, __VA_ARGS__)
-#define FE_DA_4(I, WHAT, args, X, ...) APPLY_MAP(WHAT, I, X, args) FE_DA_3(I+1, WHAT, args, __VA_ARGS__)
-#define FE_DA_5(I, WHAT, args, X, ...) APPLY_MAP(WHAT, I, X, args) FE_DA_4(I+1, WHAT, args, __VA_ARGS__)
-#define FE_DA_6(I, WHAT, args, X, ...) APPLY_MAP(WHAT, I, X, args) FE_DA_5(I+1, WHAT, args, __VA_ARGS__)
-#define FE_DA_7(I, WHAT, args, X, ...) APPLY_MAP(WHAT, I, X, args) FE_DA_6(I+1, WHAT, args, __VA_ARGS__)
-#define FE_DA_8(I, WHAT, args, X, ...) APPLY_MAP(WHAT, I, X, args) FE_DA_7(I+1, WHAT, args, __VA_ARGS__)
-#define FE_DA_9(I, WHAT, args, X, ...) APPLY_MAP(WHAT, I, X, args) FE_DA_8(I+1, WHAT, args, __VA_ARGS__)
-#define FE_DA_10(I, WHAT, args, X, ...) APPLY_MAP(WHAT, I, X, args) FE_DA_9(I+1, WHAT, args, __VA_ARGS__)
-
-#define MAP_WITH_DEFAULT_ARGS(action, args, ...) \
-  GET_MACRO(, ##__VA_ARGS__, FE_DA_10,FE_DA_9,FE_DA_8,FE_DA_7,FE_DA_6,FE_DA_5,FE_DA_4,FE_DA_3,FE_DA_2,FE_DA_1, FE_DA_0) (0, action, args, __VA_ARGS__)
-
-/*
- * Define scalar type wrappers to ease the use of simcalls.
- * These are used to wrap the arguments in SIMIX_simcall macro.
- */
-#define TCHAR(n) (n, char, c)
-#define TSTRING(n) (n, const char*, cc)
-#define TSHORT(n) (n, short, s)
-#define TINT(n) (n, int, i)
-#define TLONG(n) (n, long, l)
-#define TUCHAR(n) (n, unsigned char, uc)
-#define TUSHORT(n) (n, unsigned short, us)
-#define TUINT(n) (n, unsigned int, ui)
-#define TULONG(n) (n, unsigned long, ul)
-#define TFLOAT(n) (n, float, f)
-#define TDOUBLE(n) (n, double, d)
-#define TDPTR(n) (n, void*, dp, void*)
-#define TFPTR(n) (n, FPtr, fp, FPtr)
-#define TCPTR(n) (n, const void*, cp)
-#define TSIZE(n) (n, size_t, sz)
-#define TSGSIZE(n) (n, sg_size_t, sgsz)
-#define TVOID(n) (n, void)
-#define TDSPEC(n,t) (n, t, dp, void*)
-#define TFSPEC(n,t) (n, t, fp, FPtr)
-
-/* use comma or nothing to separate elements*/
-#define SIMCALL_SEP_COMMA ,
-#define SIMCALL_SEP_NOTHING
-
-/* get the name of the parameter */
-#define SIMCALL_NAME_(name, type, field, ...) name
-#define SIMCALL_NAME(i, v) SIMCALL_NAME_ v
-
-/* get the cast of the parameter */
-#define SIMCALL_CASTTYPE_(name, type, field, cast) (cast)
-#define SIMCALL_NOCASTTYPE_(name, type, field) 
-#define SIMCALL_CASTTYPE(...) MAYBE5(,##__VA_ARGS__, SIMCALL_CASTTYPE_, SIMCALL_NOCASTTYPE_) (__VA_ARGS__)
-
-/* get the uncast of the parameter */
-#define SIMCALL_UNCASTTYPE_(name, type, field, cast) (type)
-#define SIMCALL_NOUNCASTTYPE_(name, type, field) 
-#define SIMCALL_UNCASTTYPE(...) MAYBE5(,##__VA_ARGS__, SIMCALL_UNCASTTYPE_, SIMCALL_NOUNCASTTYPE_) (__VA_ARGS__)
-
-/* get the %s format code of the parameter */
-#define SIMCALL_FORMAT_(name, type, field, ...) %field
-#define SIMCALL_FORMAT(i, v) SIMCALL_FORMAT_ v
-
-/* get the field of the parameter */
-#define SIMCALL_FIELD_(name, type, field, ...) field
-#define SIMCALL_FIELD(i, v) SIMCALL_FIELD_ v
-
-/* get the parameter declaration */
-#define SIMCALL_ARG_(name, type, field, ...) type name
-#define SIMCALL_ARG(i, v) SIMCALL_ARG_ v
-
-/* get the parameter initialisation field */
-#define SIMCALL_INIT_FIELD_(name, type, field, ...) .field = SIMCALL_CASTTYPE(name, type, field,##__VA_ARGS__) name
-#define SIMCALL_INIT_FIELD(i, d, v) self->simcall.args[i]SIMCALL_INIT_FIELD_ v;
-
-/* get the case of the parameter */
-#define SIMCALL_CASE_PARAM_(name, type, field, ...) field
-#define SIMCALL_CASE_PARAM(i, v) SIMCALL_UNCASTTYPE v simcall->args[i].SIMCALL_CASE_PARAM_ v
-
-/* generate some code for SIMCALL_CASE if the simcall has an answer */
-#define MAYBE5(_0, _1, _2, _3, _4, func, ...) func
-#define MAYBE3(_0, _1, _2, func, ...) func
-#define MAYBE2(_0, _1, func, ...) func
-
-#define SIMCALL_WITH_RESULT_BEGIN(name, type, field, ...) simcall->result.field =
-#define SIMCALL_WITHOUT_RESULT_BEGIN(name, type, field)
-#define SIMCALL_RESULT_BEGIN_(name, type, ...)\
-        MAYBE3(,##__VA_ARGS__, SIMCALL_WITH_RESULT_BEGIN, SIMCALL_WITH_RESULT_BEGIN, SIMCALL_WITHOUT_RESULT_BEGIN)\
-       (name, type, __VA_ARGS__)
-#define SIMCALL_RESULT_BEGIN(answer, res) answer(SIMCALL_RESULT_BEGIN_ res)
-
-#define SIMCALL_RESULT_END_(name, type, ...)\
-       SIMIX_simcall_answer(simcall);
-#define SIMCALL_RESULT_END(answer, res) answer(SIMCALL_RESULT_END_ res)
-
-/* generate some code for BODY function */
-#define SIMCALL_FUNC_RETURN_TYPE_(name, type, ...) type
-#define SIMCALL_FUNC_RETURN_TYPE(res) SIMCALL_FUNC_RETURN_TYPE_ res
-
-#define SIMCALL_WITH_FUNC_SIMCALL(name, type, field) smx_simcall_t simcall = 
-#define SIMCALL_WITHOUT_FUNC_SIMCALL(name, type, field)
-#define SIMCALL_FUNC_SIMCALL_(name, type, ...)\
-        MAYBE3(,##__VA_ARGS__, SIMCALL_WITH_FUNC_SIMCALL, SIMCALL_WITH_FUNC_SIMCALL, SIMCALL_WITHOUT_FUNC_SIMCALL)\
-       (name, type, __VA_ARGS__)
-#define SIMCALL_FUNC_SIMCALL(res) SIMCALL_FUNC_SIMCALL_ res
-
-#define SIMCALL_WITH_FUNC_RETURN(name, type, field, ...) return self->simcall.result.field;
-#define SIMCALL_WITHOUT_FUNC_RETURN(name, type, field)
-#define SIMCALL_FUNC_RETURN_(name, type, ...)\
-        MAYBE3(,##__VA_ARGS__, SIMCALL_WITH_FUNC_RETURN, SIMCALL_WITH_FUNC_RETURN, SIMCALL_WITHOUT_FUNC_RETURN)\
-       (name, type, __VA_ARGS__)
-#define SIMCALL_FUNC_RETURN(res) SIMCALL_FUNC_RETURN_ res
-
-
-/* generate the simcall enumeration */
-#define SIMCALL_ENUM(type, ...)\
-       type
-
-/* generate the strings name from the enumeration values */
-#define SIMCALL_STRING_TYPE(type, name, answer, res, ...)\
-       [type] = STRINGIFY(type)
-
-/* generate strings from the enumeration values */
-#define SIMCALL_TYPE(type, name, answer, res, ...)\
-       [type] = STRINGIFY(MAP(SIMCALL_FORMAT, __VA_ARGS__))
-
-/* generate the simcalls BODY functions */
-#define SIMCALL_FUNC(TYPE, NAME, ANSWER, RES, ...)\
-  inline static SIMCALL_FUNC_RETURN_TYPE(RES) simcall_BODY_##NAME(MAP(SIMCALL_ARG, ##__VA_ARGS__)) { \
-    smx_process_t self = SIMIX_process_self(); \
-    self->simcall.call = TYPE; \
-    memset(&self->simcall.result, 0, sizeof(self->simcall.result)); \
-    memset(self->simcall.args, 0, sizeof(self->simcall.args)); \
-    MAP_WITH_DEFAULT_ARGS(SIMCALL_INIT_FIELD, (), ##__VA_ARGS__) \
-    if (self != simix_global->maestro_process) { \
-      XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name, \
-                SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call); \
-      SIMIX_process_yield(self); \
-    } else { \
-      SIMIX_simcall_pre(&self->simcall, 0); \
-    } \
-    SIMCALL_FUNC_RETURN(RES) \
-  }
-
-/* generate a comma if there is an argument*/
-#define WITHOUT_COMMA 
-#define WITH_COMMA ,
-#define GET_CLEAN(_0,_1,_2,_3,_4,_5,_6,_7,_8,_9,_10, NAME,...) NAME
-#define MAYBE_COMMA(...) GET_CLEAN(,##__VA_ARGS__,WITH_COMMA,WITH_COMMA,WITH_COMMA,WITH_COMMA,WITH_COMMA,WITH_COMMA,WITH_COMMA,WITH_COMMA,WITH_COMMA,WITH_COMMA,WITHOUT_COMMA)
-
-/* generate the simcalls cases for the SIMIX_simcall_pre function */
-#define WITH_ANSWER(...) __VA_ARGS__
-#define WITHOUT_ANSWER(...) 
-#define SIMCALL_CASE(type, name, answer, res, ...)\
-    case type:\
-      SIMCALL_RESULT_BEGIN(answer, res) SIMIX_pre_ ## name(simcall MAYBE_COMMA(__VA_ARGS__) MAP(SIMCALL_CASE_PARAM, ##__VA_ARGS__));\
-      SIMCALL_RESULT_END(answer, res)\
-      break;
-
-
-/*
- * Generate simcall args and result getter/setter
- */
-#define SIMCALL_GS_SC_NAME_(n) n
-#define SIMCALL_GS_SC_NAME(n) SIMCALL_GS_SC_NAME_ n
-#define SIMCALL_GS_ARG_NAME(n) SIMCALL_NAME_ n
-#define JOIN2(_0, _1) _0 ##__## _1
-#define JOIN3(_0, _1, _2) JOIN2(_0 ##__## _1, _2)
-#define JOIN4(_0, _1, _2, _3) JOIN3(_0 ##_## _1, _2, _3)
-#define SIMCALL_GS_FUNC(scname, setget, vname) \
-   JOIN4(simcall, scname, setget, vname)
-
-/* generate the simcalls args getter/setter */
-#define SIMCALL_ARG_GETSET_(i, name, v) \
-  static inline SIMCALL_FUNC_RETURN_TYPE(v) SIMCALL_GS_FUNC(SIMCALL_GS_SC_NAME(name), get, SIMCALL_GS_ARG_NAME(v))(smx_simcall_t simcall){\
-    return (SIMCALL_FUNC_RETURN_TYPE(v)) simcall->args[i].SIMCALL_FIELD_ v ;\
-  }\
-  static inline void SIMCALL_GS_FUNC(SIMCALL_GS_SC_NAME(name), set, SIMCALL_GS_ARG_NAME(v))(smx_simcall_t simcall, SIMCALL_ARG_ v){\
-    simcall->args[i].SIMCALL_FIELD_ v = SIMCALL_CASTTYPE v SIMCALL_NAME_ v ;\
-  }
-
-#define SIMCALL_ARG_GETSET(type, name, answer, res, ...)\
-    MAP_WITH_DEFAULT_ARGS(SIMCALL_ARG_GETSET_, (name), ##__VA_ARGS__)
-
-/* generate the simcalls result getter/setter */
-#define SIMCALL_WITH_RES_GETSET(name, v) \
-  static inline SIMCALL_FUNC_RETURN_TYPE(v) SIMCALL_GS_FUNC(SIMCALL_GS_SC_NAME((name)), get, SIMCALL_GS_ARG_NAME(v))(smx_simcall_t simcall){\
-    return (SIMCALL_FUNC_RETURN_TYPE(v)) simcall->result.SIMCALL_FIELD_ v ;\
-  }\
-  static inline void SIMCALL_GS_FUNC(SIMCALL_GS_SC_NAME((name)), set, SIMCALL_GS_ARG_NAME(v))(smx_simcall_t simcall, SIMCALL_ARG_ v){\
-    simcall->result.SIMCALL_FIELD_ v = SIMCALL_NAME_ v ;\
-  }
-#define SIMCALL_WITHOUT_RES_GETSET(name, v)
-#define SIMCALL_RES_GETSET__(name, type, ...)\
-        MAYBE3(,##__VA_ARGS__, SIMCALL_WITH_RES_GETSET, SIMCALL_WITH_RES_GETSET, SIMCALL_WITHOUT_RES_GETSET)
-#define SIMCALL_RES_GETSET_(scname, v)\
-        SIMCALL_RES_GETSET__ v (scname, v)
-#define SIMCALL_RES_GETSET(type, name, answer, res, ...)\
-  SIMCALL_RES_GETSET_(name, res)
-
-/* generate the simcalls result getter/setter protos*/
-#define SIMCALL_WITH_RES_GETSET_PROTO(name, v) \
-  inline SIMCALL_FUNC_RETURN_TYPE(v) SIMCALL_GS_FUNC(SIMCALL_GS_SC_NAME((name)), get, SIMCALL_GS_ARG_NAME(v))(smx_simcall_t simcall);\
-  inline void SIMCALL_GS_FUNC(SIMCALL_GS_SC_NAME((name)), set, SIMCALL_GS_ARG_NAME(v))(smx_simcall_t simcall, SIMCALL_ARG_ v);
-#define SIMCALL_WITHOUT_RES_GETSET_PROTO(name, v)
-#define SIMCALL_RES_GETSET_PROTO__(name, type, ...)\
-        MAYBE3(,##__VA_ARGS__, SIMCALL_WITH_RES_GETSET_PROTO, SIMCALL_WITHOUT_RES_GETSET_PROTO, SIMCALL_WITHOUT_RES_GETSET_PROTO)
-#define SIMCALL_RES_GETSET_PROTO_(scname, v)\
-        SIMCALL_RES_GETSET_PROTO__ v (scname, v)
-#define SIMCALL_RES_GETSET_PROTO(type, name, answer, res, ...)\
-  SIMCALL_RES_GETSET_PROTO_(name, res)
-
-/* stringify arguments */
-#define STRINGIFY_(...) #__VA_ARGS__
-#define STRINGIFY(...) STRINGIFY_(__VA_ARGS__)
-
-/* the list of simcalls definitions */
-#define SIMCALL_LIST1(ACTION, sep) \
-ACTION(SIMCALL_HOST_GET_BY_NAME, host_get_by_name, WITH_ANSWER, TDSPEC(result, smx_host_t), TSTRING(name)) sep \
-ACTION(SIMCALL_HOST_GET_NAME, host_get_name, WITH_ANSWER, TSTRING(result), TDSPEC(host, smx_host_t)) sep \
-ACTION(SIMCALL_HOST_ON, host_on, WITH_ANSWER, TVOID(result), TDSPEC(host, smx_host_t)) sep \
-ACTION(SIMCALL_HOST_OFF, host_off, WITH_ANSWER, TVOID(result), TDSPEC(host, smx_host_t)) sep \
-ACTION(SIMCALL_HOST_GET_PROPERTIES, host_get_properties, WITH_ANSWER, TDSPEC(result, xbt_dict_t), TDSPEC(host, smx_host_t)) sep \
-ACTION(SIMCALL_HOST_GET_CORE, host_get_core, WITH_ANSWER, TINT(result), TDSPEC(host, smx_host_t)) sep \
-ACTION(SIMCALL_HOST_GET_PROCESS_LIST, host_get_process_list, WITH_ANSWER, TDSPEC(result, xbt_swag_t), TDSPEC(host, smx_host_t)) sep \
-ACTION(SIMCALL_HOST_GET_SPEED, host_get_speed, WITH_ANSWER, TDOUBLE(result), TDSPEC(host, smx_host_t)) sep \
-ACTION(SIMCALL_HOST_GET_AVAILABLE_SPEED, host_get_available_speed, WITH_ANSWER, TDOUBLE(result), TDSPEC(host, smx_host_t)) sep \
-ACTION(SIMCALL_HOST_GET_STATE, host_get_state, WITH_ANSWER, TINT(result), TDSPEC(host, smx_host_t)) sep \
-ACTION(SIMCALL_HOST_GET_DATA, host_get_data, WITH_ANSWER, TDPTR(result), TDSPEC(host, smx_host_t)) sep \
-ACTION(SIMCALL_HOST_SET_DATA, host_set_data, WITH_ANSWER, TVOID(result), TDSPEC(host, smx_host_t), TDPTR(data)) sep \
-ACTION(SIMCALL_HOST_GET_CURRENT_POWER_PEAK, host_get_current_power_peak, WITH_ANSWER, TDOUBLE(result), TDSPEC(host, smx_host_t)) sep \
-ACTION(SIMCALL_HOST_GET_POWER_PEAK_AT, host_get_power_peak_at, WITH_ANSWER, TDOUBLE(result), TDSPEC(host, smx_host_t), TINT(pstate_index)) sep \
-ACTION(SIMCALL_HOST_GET_NB_PSTATES, host_get_nb_pstates, WITH_ANSWER, TINT(result), TDSPEC(host, smx_host_t)) sep \
-ACTION(SIMCALL_HOST_SET_POWER_PEAK_AT, host_set_power_peak_at, WITH_ANSWER, TVOID(result), TDSPEC(host, smx_host_t), TINT(pstate_index)) sep \
-ACTION(SIMCALL_HOST_GET_CONSUMED_ENERGY, host_get_consumed_energy, WITH_ANSWER, TDOUBLE(result), TDSPEC(host, smx_host_t)) sep \
-ACTION(SIMCALL_HOST_EXECUTE, host_execute, WITH_ANSWER, TDSPEC(result, smx_action_t), TSTRING(name), TDSPEC(host, smx_host_t), TDOUBLE(computation_amount), TDOUBLE(priority), TDOUBLE(bound), TULONG(affinity_mask)) sep \
-ACTION(SIMCALL_HOST_PARALLEL_EXECUTE, host_parallel_execute, WITH_ANSWER, TDSPEC(result, smx_action_t), TSTRING(name), TINT(host_nb), TDSPEC(host_list, smx_host_t*), TDSPEC(computation_amount, double*), TDSPEC(communication_amount, double*), TDOUBLE(amount), TDOUBLE(rate)) sep \
-ACTION(SIMCALL_HOST_EXECUTION_DESTROY, host_execution_destroy, WITH_ANSWER, TVOID(result), TDSPEC(execution, smx_action_t)) sep \
-ACTION(SIMCALL_HOST_EXECUTION_CANCEL, host_execution_cancel, WITH_ANSWER, TVOID(result), TDSPEC(execution, smx_action_t)) sep \
-ACTION(SIMCALL_HOST_EXECUTION_GET_REMAINS, host_execution_get_remains, WITH_ANSWER, TDOUBLE(result), TDSPEC(execution, smx_action_t)) sep \
-ACTION(SIMCALL_HOST_EXECUTION_GET_STATE, host_execution_get_state, WITH_ANSWER, TINT(result), TDSPEC(execution, smx_action_t)) sep \
-ACTION(SIMCALL_HOST_EXECUTION_SET_PRIORITY, host_execution_set_priority, WITH_ANSWER, TVOID(result), TDSPEC(execution, smx_action_t), TDOUBLE(priority)) sep \
-ACTION(SIMCALL_HOST_EXECUTION_SET_BOUND, host_execution_set_bound, WITH_ANSWER, TVOID(result), TDSPEC(execution, smx_action_t), TDOUBLE(bound)) sep \
-ACTION(SIMCALL_HOST_EXECUTION_SET_AFFINITY, host_execution_set_affinity, WITH_ANSWER, TVOID(result), TDSPEC(execution, smx_action_t), TDSPEC(ws, smx_host_t), TULONG(mask)) sep \
-ACTION(SIMCALL_HOST_EXECUTION_WAIT, host_execution_wait, WITHOUT_ANSWER, TINT(result), TDSPEC(execution, smx_action_t)) sep \
-ACTION(SIMCALL_HOST_GET_STORAGE_LIST, host_get_storage_list, WITH_ANSWER, TDSPEC(result, xbt_dict_t), TDSPEC(host, smx_host_t)) sep \
-ACTION(SIMCALL_HOST_GET_PARAMS, host_get_params, WITH_ANSWER, TVOID(result), TDSPEC(ind_vm, smx_host_t), TDSPEC(params, ws_params_t)) sep \
-ACTION(SIMCALL_HOST_SET_PARAMS, host_set_params, WITH_ANSWER, TVOID(result), TDSPEC(ind_vm, smx_host_t), TDSPEC(params, ws_params_t)) sep \
-ACTION(SIMCALL_VM_CREATE, vm_create, WITH_ANSWER, TDPTR(result), TSTRING(name), TDSPEC(ind_pm, smx_host_t)) sep \
-ACTION(SIMCALL_VM_START, vm_start, WITH_ANSWER, TVOID(result), TDSPEC(ind_vm, smx_host_t)) sep \
-ACTION(SIMCALL_VM_SET_STATE, vm_set_state, WITH_ANSWER, TVOID(result), TDSPEC(ind_vm, smx_host_t), TINT(state)) sep \
-ACTION(SIMCALL_VM_GET_STATE, vm_get_state, WITH_ANSWER, TINT(result), TDSPEC(ind_vm, smx_host_t)) sep \
-ACTION(SIMCALL_VM_MIGRATE, vm_migrate, WITH_ANSWER, TVOID(result), TDSPEC(ind_vm, smx_host_t), TDSPEC(ind_dst_pm, smx_host_t)) sep \
-ACTION(SIMCALL_VM_GET_PM, vm_get_pm, WITH_ANSWER,    TDPTR(result),  TDSPEC(ind_vm, smx_host_t)) sep \
-ACTION(SIMCALL_VM_SET_BOUND,    vm_set_bound,    WITH_ANSWER, TVOID(result), TDSPEC(ind_vm, smx_host_t), TDOUBLE(bound)) sep \
-ACTION(SIMCALL_VM_SET_AFFINITY, vm_set_affinity, WITH_ANSWER, TVOID(result), TDSPEC(ind_vm, smx_host_t), TDSPEC(ind_pm, smx_host_t), TULONG(mask)) sep \
-ACTION(SIMCALL_VM_DESTROY,   vm_destroy,   WITH_ANSWER, TVOID(result), TDSPEC(ind_vm, smx_host_t)) sep \
-ACTION(SIMCALL_VM_SUSPEND,   vm_suspend,   WITH_ANSWER, TVOID(result), TDSPEC(ind_vm, smx_host_t)) sep \
-ACTION(SIMCALL_VM_RESUME,    vm_resume,    WITH_ANSWER, TVOID(result), TDSPEC(ind_vm, smx_host_t)) sep \
-ACTION(SIMCALL_VM_SHUTDOWN,  vm_shutdown,  WITH_ANSWER, TVOID(result), TDSPEC(ind_vm, smx_host_t)) sep \
-ACTION(SIMCALL_VM_SAVE,      vm_save,      WITH_ANSWER, TVOID(result), TDSPEC(ind_vm, smx_host_t)) sep \
-ACTION(SIMCALL_VM_RESTORE,   vm_restore,   WITH_ANSWER, TVOID(result), TDSPEC(ind_vm, smx_host_t)) sep \
-ACTION(SIMCALL_PROCESS_CREATE, process_create, WITH_ANSWER, TVOID(result), TDSPEC(process, smx_process_t*), TSTRING(name), TFSPEC(code, xbt_main_func_t), TDPTR(data), TSTRING(hostname), TDOUBLE(kill_time), TINT(argc), TDSPEC(argv, char**), TDSPEC(properties, xbt_dict_t), TINT(auto_restart)) sep \
-ACTION(SIMCALL_PROCESS_KILL, process_kill, WITH_ANSWER, TVOID(result), TDSPEC(process, smx_process_t)) sep \
-ACTION(SIMCALL_PROCESS_KILLALL, process_killall, WITH_ANSWER, TVOID(result), TINT(reset_pid)) sep \
-ACTION(SIMCALL_PROCESS_CLEANUP, process_cleanup, WITH_ANSWER, TVOID(result), TDSPEC(process, smx_process_t)) sep \
-ACTION(SIMCALL_PROCESS_CHANGE_HOST, process_change_host, WITH_ANSWER, TVOID(result), TDSPEC(process, smx_process_t), TDSPEC(dest, smx_host_t)) sep \
-ACTION(SIMCALL_PROCESS_SUSPEND, process_suspend, WITHOUT_ANSWER, TVOID(result), TDSPEC(process, smx_process_t)) sep \
-ACTION(SIMCALL_PROCESS_RESUME, process_resume, WITH_ANSWER, TVOID(result), TDSPEC(process, smx_process_t)) sep \
-ACTION(SIMCALL_PROCESS_COUNT, process_count, WITH_ANSWER, TINT(result)) sep \
-ACTION(SIMCALL_PROCESS_GET_PID, process_get_PID, WITH_ANSWER, TINT(result), TDSPEC(process, smx_process_t)) sep  \
-ACTION(SIMCALL_PROCESS_GET_PPID, process_get_PPID, WITH_ANSWER, TINT(result), TDSPEC(process, smx_process_t)) sep  \
-ACTION(SIMCALL_PROCESS_GET_DATA, process_get_data, WITH_ANSWER, TDPTR(result), TDSPEC(process, smx_process_t)) sep \
-ACTION(SIMCALL_PROCESS_SET_DATA, process_set_data, WITH_ANSWER, TVOID(result), TDSPEC(process, smx_process_t), TDPTR(data)) sep \
-ACTION(SIMCALL_PROCESS_GET_HOST, process_get_host, WITH_ANSWER, TDSPEC(result, smx_host_t), TDSPEC(process, smx_process_t)) sep \
-ACTION(SIMCALL_PROCESS_GET_NAME, process_get_name, WITH_ANSWER, TSTRING(result), TDSPEC(process, smx_process_t)) sep \
-ACTION(SIMCALL_PROCESS_IS_SUSPENDED, process_is_suspended, WITH_ANSWER, TINT(result), TDSPEC(process, smx_process_t)) sep \
-ACTION(SIMCALL_PROCESS_GET_PROPERTIES, process_get_properties, WITH_ANSWER, TDSPEC(result, xbt_dict_t), TDSPEC(process, smx_process_t)) sep \
-ACTION(SIMCALL_PROCESS_SLEEP, process_sleep, WITHOUT_ANSWER, TINT(result), TDOUBLE(duration)) sep \
-ACTION(SIMCALL_PROCESS_ON_EXIT, process_on_exit, WITH_ANSWER, TVOID(result), TDSPEC(process, smx_process_t), TFSPEC(fun, int_f_pvoid_t), TDPTR(data)) sep \
-ACTION(SIMCALL_PROCESS_AUTO_RESTART_SET, process_auto_restart_set, WITH_ANSWER, TVOID(result), TDSPEC(process, smx_process_t), TINT(auto_restart)) sep \
-ACTION(SIMCALL_PROCESS_RESTART, process_restart, WITH_ANSWER, TDSPEC(result, smx_process_t), TDSPEC(process, smx_process_t)) sep \
-ACTION(SIMCALL_RDV_CREATE, rdv_create, WITH_ANSWER, TDSPEC(result, smx_rdv_t), TSTRING(name)) sep \
-ACTION(SIMCALL_RDV_DESTROY, rdv_destroy, WITH_ANSWER, TVOID(result), TDSPEC(rdv, smx_rdv_t)) sep \
-ACTION(SIMCALL_RDV_GET_BY_NAME, rdv_get_by_name, WITH_ANSWER, TDSPEC(result, smx_host_t), TSTRING(name)) sep \
-ACTION(SIMCALL_RDV_COMM_COUNT_BY_HOST, rdv_comm_count_by_host, WITH_ANSWER, TUINT(result), TDSPEC(rdv, smx_rdv_t), TDSPEC(host, smx_host_t)) sep \
-ACTION(SIMCALL_RDV_GET_HEAD, rdv_get_head, WITH_ANSWER, TDSPEC(result, smx_action_t), TDSPEC(rdv, smx_rdv_t)) sep \
-ACTION(SIMCALL_RDV_SET_RECV, rdv_set_receiver, WITH_ANSWER, TVOID(result), TDSPEC(rdv, smx_rdv_t), TDSPEC(receiver, smx_process_t)) sep \
-ACTION(SIMCALL_RDV_GET_RECV, rdv_get_receiver, WITH_ANSWER, TDSPEC(result, smx_process_t), TDSPEC(rdv, smx_rdv_t)) sep \
-ACTION(SIMCALL_COMM_IPROBE, comm_iprobe, WITH_ANSWER, TDSPEC(result, smx_action_t), TDSPEC(rdv, smx_rdv_t), TINT(src), TINT(tag), TFSPEC(match_fun, simix_match_func_t), TDPTR(data)) sep \
-ACTION(SIMCALL_COMM_SEND, comm_send, WITHOUT_ANSWER, TVOID(result), TDSPEC(rdv, smx_rdv_t), TDOUBLE(task_size), TDOUBLE(rate), TDPTR(src_buff), TSIZE(src_buff_size), TFSPEC(match_fun, simix_match_func_t), TDPTR(data), TDOUBLE(timeout)) sep \
-ACTION(SIMCALL_COMM_ISEND, comm_isend, WITH_ANSWER, TDSPEC(result, smx_action_t), TDSPEC(rdv, smx_rdv_t), TDOUBLE(task_size), TDOUBLE(rate), TDPTR(src_buff), TSIZE(src_buff_size), TFSPEC(match_fun, simix_match_func_t), TFSPEC(clean_fun, simix_clean_func_t), TDPTR(data), TINT(detached)) sep \
-ACTION(SIMCALL_COMM_RECV, comm_recv, WITHOUT_ANSWER, TVOID(result), TDSPEC(rdv, smx_rdv_t), TDPTR(dst_buff), TDSPEC(dst_buff_size, size_t*), TFSPEC(match_fun, simix_match_func_t), TDPTR(data), TDOUBLE(timeout)) sep \
-ACTION(SIMCALL_COMM_IRECV, comm_irecv, WITH_ANSWER, TDSPEC(result, smx_action_t), TDSPEC(rdv, smx_rdv_t), TDPTR(dst_buff), TDSPEC(dst_buff_size, size_t*), TFSPEC(match_fun, simix_match_func_t), TDPTR(data)) sep \
-ACTION(SIMCALL_COMM_RECV_BOUNDED, comm_recv_bounded, WITHOUT_ANSWER, TVOID(result), TDSPEC(rdv, smx_rdv_t), TDPTR(dst_buff), TDSPEC(dst_buff_size, size_t*), TFSPEC(match_fun, simix_match_func_t), TDPTR(data), TDOUBLE(timeout), TDOUBLE(rate)) sep \
-ACTION(SIMCALL_COMM_IRECV_BOUNDED, comm_irecv_bounded, WITH_ANSWER, TDSPEC(result, smx_action_t), TDSPEC(rdv, smx_rdv_t), TDPTR(dst_buff), TDSPEC(dst_buff_size, size_t*), TFSPEC(match_fun, simix_match_func_t), TDPTR(data), TDOUBLE(rate)) sep \
-ACTION(SIMCALL_COMM_DESTROY, comm_destroy, WITH_ANSWER, TVOID(result), TDSPEC(comm, smx_action_t)) sep \
-ACTION(SIMCALL_COMM_CANCEL, comm_cancel, WITH_ANSWER, TVOID(result), TDSPEC(comm, smx_action_t)) sep \
-ACTION(SIMCALL_COMM_WAITANY, comm_waitany, WITHOUT_ANSWER, TINT(result), TDSPEC(comms, xbt_dynar_t)) sep \
-ACTION(SIMCALL_COMM_WAIT, comm_wait, WITHOUT_ANSWER, TVOID(result), TDSPEC(comm, smx_action_t), TDOUBLE(timeout)) sep \
-ACTION(SIMCALL_COMM_TEST, comm_test, WITHOUT_ANSWER, TINT(result), TDSPEC(comm, smx_action_t)) sep \
-ACTION(SIMCALL_COMM_TESTANY, comm_testany, WITHOUT_ANSWER, TINT(result), TDSPEC(comms, xbt_dynar_t)) sep \
-ACTION(SIMCALL_COMM_GET_REMAINS, comm_get_remains, WITH_ANSWER, TDOUBLE(result), TDSPEC(comm, smx_action_t)) sep \
-ACTION(SIMCALL_COMM_GET_STATE, comm_get_state, WITH_ANSWER, TINT(result), TDSPEC(comm, smx_action_t)) sep \
-ACTION(SIMCALL_COMM_GET_SRC_DATA, comm_get_src_data, WITH_ANSWER, TDPTR(result), TDSPEC(comm, smx_action_t)) sep \
-ACTION(SIMCALL_COMM_GET_DST_DATA, comm_get_dst_data, WITH_ANSWER, TDPTR(result), TDSPEC(comm, smx_action_t)) sep \
-ACTION(SIMCALL_COMM_GET_SRC_PROC, comm_get_src_proc, WITH_ANSWER, TDSPEC(result, smx_process_t), TDSPEC(comm, smx_action_t)) sep \
-ACTION(SIMCALL_COMM_GET_DST_PROC, comm_get_dst_proc, WITH_ANSWER, TDSPEC(result, smx_process_t), TDSPEC(comm, smx_action_t)) sep \
-ACTION(SIMCALL_MUTEX_INIT, mutex_init, WITH_ANSWER, TDSPEC(result, smx_mutex_t)) sep \
-ACTION(SIMCALL_MUTEX_DESTROY, mutex_destroy, WITH_ANSWER, TVOID(result), TDSPEC(mutex, smx_mutex_t)) sep \
-ACTION(SIMCALL_MUTEX_LOCK, mutex_lock, WITHOUT_ANSWER, TVOID(result), TDSPEC(mutex, smx_mutex_t)) sep \
-ACTION(SIMCALL_MUTEX_TRYLOCK, mutex_trylock, WITH_ANSWER, TINT(result), TDSPEC(mutex, smx_mutex_t)) sep \
-ACTION(SIMCALL_MUTEX_UNLOCK, mutex_unlock, WITH_ANSWER, TVOID(result), TDSPEC(mutex, smx_mutex_t)) sep \
-ACTION(SIMCALL_COND_INIT, cond_init, WITH_ANSWER, TDSPEC(result, smx_cond_t)) sep \
-ACTION(SIMCALL_COND_DESTROY, cond_destroy, WITH_ANSWER, TVOID(result), TDSPEC(cond, smx_cond_t)) sep \
-ACTION(SIMCALL_COND_SIGNAL, cond_signal, WITH_ANSWER, TVOID(result), TDSPEC(cond, smx_cond_t)) sep \
-ACTION(SIMCALL_COND_WAIT, cond_wait, WITHOUT_ANSWER, TVOID(result), TDSPEC(cond, smx_cond_t), TDSPEC(mutex, smx_mutex_t)) sep \
-ACTION(SIMCALL_COND_WAIT_TIMEOUT, cond_wait_timeout, WITHOUT_ANSWER, TVOID(result), TDSPEC(cond, smx_cond_t), TDSPEC(mutex, smx_mutex_t), TDOUBLE(timeout)) sep \
-ACTION(SIMCALL_COND_BROADCAST, cond_broadcast, WITH_ANSWER, TVOID(result), TDSPEC(cond, smx_cond_t)) sep \
-ACTION(SIMCALL_SEM_INIT, sem_init, WITH_ANSWER, TDSPEC(result, smx_sem_t), TINT(capacity)) sep \
-ACTION(SIMCALL_SEM_DESTROY, sem_destroy, WITH_ANSWER, TVOID(result), TDSPEC(sem, smx_sem_t)) sep \
-ACTION(SIMCALL_SEM_RELEASE, sem_release, WITH_ANSWER, TVOID(result), TDSPEC(sem, smx_sem_t)) sep \
-ACTION(SIMCALL_SEM_WOULD_BLOCK, sem_would_block, WITH_ANSWER, TINT(result), TDSPEC(sem, smx_sem_t)) sep \
-ACTION(SIMCALL_SEM_ACQUIRE, sem_acquire, WITHOUT_ANSWER, TVOID(result), TDSPEC(sem, smx_sem_t)) sep \
-ACTION(SIMCALL_SEM_ACQUIRE_TIMEOUT, sem_acquire_timeout, WITHOUT_ANSWER, TVOID(result), TDSPEC(sem, smx_sem_t), TDOUBLE(timeout)) sep \
-ACTION(SIMCALL_SEM_GET_CAPACITY, sem_get_capacity, WITH_ANSWER, TINT(result), TDSPEC(sem, smx_sem_t)) sep \
-ACTION(SIMCALL_FILE_GET_DATA, file_get_data, WITH_ANSWER, TDPTR(result), TDSPEC(fd, smx_file_t)) sep \
-ACTION(SIMCALL_FILE_SET_DATA, file_set_data, WITH_ANSWER, TVOID(result), TDSPEC(fd, smx_file_t), TDPTR(data)) sep \
-ACTION(SIMCALL_FILE_READ, file_read, WITHOUT_ANSWER, TSGSIZE(result), TDSPEC(fd, smx_file_t),  TSGSIZE(size)) sep \
-ACTION(SIMCALL_FILE_WRITE, file_write, WITHOUT_ANSWER, TSGSIZE(result), TDSPEC(fd, smx_file_t), TSGSIZE(size)) sep \
-ACTION(SIMCALL_FILE_OPEN, file_open, WITHOUT_ANSWER, TDSPEC(result, smx_file_t), TSTRING(mount), TSTRING(path)) sep \
-ACTION(SIMCALL_FILE_CLOSE, file_close, WITHOUT_ANSWER, TINT(result), TDSPEC(fd, smx_file_t)) sep \
-ACTION(SIMCALL_FILE_UNLINK, file_unlink, WITH_ANSWER, TINT(result), TDSPEC(fd, smx_file_t)) sep \
-ACTION(SIMCALL_FILE_LS, file_ls, WITHOUT_ANSWER, TDSPEC(result, xbt_dict_t), TSTRING(mount), TSTRING(path)) sep \
-ACTION(SIMCALL_FILE_GET_SIZE, file_get_size, WITH_ANSWER, TSGSIZE(result), TDSPEC(fd, smx_file_t)) sep \
-ACTION(SIMCALL_FILE_TELL, file_tell, WITH_ANSWER, TSGSIZE(result), TDSPEC(fd, smx_file_t)) sep \
-ACTION(SIMCALL_FILE_SEEK, file_seek, WITH_ANSWER, TINT(result), TDSPEC(fd, smx_file_t), TSGSIZE(offset), TINT(origin)) sep \
-ACTION(SIMCALL_FILE_GET_INFO, file_get_info, WITH_ANSWER, TDSPEC(result, xbt_dynar_t), TDSPEC(fd, smx_file_t)) sep \
-ACTION(SIMCALL_STORAGE_FILE_RENAME, storage_file_rename, WITH_ANSWER, TVOID(result), TDSPEC(storage, smx_storage_t), TSTRING(src), TSTRING(dest)) sep \
-ACTION(SIMCALL_STORAGE_GET_FREE_SIZE, storage_get_free_size, WITH_ANSWER, TSGSIZE(result), TSTRING(name)) sep \
-ACTION(SIMCALL_STORAGE_GET_USED_SIZE, storage_get_used_size, WITH_ANSWER, TSGSIZE(result), TSTRING(name)) sep \
-ACTION(SIMCALL_STORAGE_GET_PROPERTIES, storage_get_properties, WITH_ANSWER, TDSPEC(result, xbt_dict_t), TDSPEC(storage, smx_storage_t)) sep \
-ACTION(SIMCALL_STORAGE_GET_CONTENT, storage_get_content, WITH_ANSWER, TDSPEC(result, xbt_dict_t), TDSPEC(storage, smx_storage_t)) sep \
-ACTION(SIMCALL_ASR_GET_PROPERTIES, asr_get_properties, WITH_ANSWER, TDSPEC(result, xbt_dict_t), TSTRING(name)) sep 
-
-/* SIMCALL_COMM_IS_LATENCY_BOUNDED and SIMCALL_SET_CATEGORY make things complicated
- * because they are not always present */
-#ifdef HAVE_LATENCY_BOUND_TRACKING
-#define SIMCALL_LIST2(ACTION, sep) \
-ACTION(SIMCALL_COMM_IS_LATENCY_BOUNDED, comm_is_latency_bounded, WITH_ANSWER, TINT(result), TDSPEC(comm, smx_action_t)) sep
-#else
-#define SIMCALL_LIST2(ACTION, sep)
-#endif
-
-#ifdef HAVE_TRACING
-#define SIMCALL_LIST3(ACTION, sep) \
-ACTION(SIMCALL_SET_CATEGORY, set_category, WITH_ANSWER, TVOID(result), TDSPEC(action, smx_action_t), TSTRING(category)) sep
-#else
-#define SIMCALL_LIST3(ACTION, sep)
-#endif
-
-#ifdef HAVE_MC
-#define SIMCALL_LIST4(ACTION, sep) \
-ACTION(SIMCALL_MC_SNAPSHOT, mc_snapshot, WITH_ANSWER, TDPTR(result)) sep \
-ACTION(SIMCALL_MC_COMPARE_SNAPSHOTS, mc_compare_snapshots, WITH_ANSWER, TINT(result), TDPTR(s1), TDPTR(s2)) sep \
-ACTION(SIMCALL_MC_RANDOM, mc_random, WITH_ANSWER, TINT(result), TINT(min), TINT(max)) sep
-#else
-#define SIMCALL_LIST4(ACTION, sep)
-#endif
-
-/* SIMCALL_LIST is the final macro to use */
-#define SIMCALL_LIST(ACTION, ...) \
-  SIMCALL_LIST1(ACTION, ##__VA_ARGS__)\
-  SIMCALL_LIST2(ACTION, ##__VA_ARGS__)\
-  SIMCALL_LIST3(ACTION, ##__VA_ARGS__)\
-  SIMCALL_LIST4(ACTION, ##__VA_ARGS__)
-
-
-/* you can redefine the following macro differently to generate something else
- * with the list of enumeration values (e.g. a table of strings or a table of function pointers) */
-#define SIMCALL_ENUM_ELEMENT(x, y) x
-
 /**
  * \brief All possible simcalls.
  */
 typedef enum {
 SIMCALL_NONE,
 /**
  * \brief All possible simcalls.
  */
 typedef enum {
 SIMCALL_NONE,
-SIMCALL_LIST(SIMCALL_ENUM, SIMCALL_SEP_COMMA)
+#include "simcalls_generated_enum.h"
 SIMCALL_NEW_API_INIT,
 NUM_SIMCALLS
 } e_smx_simcall_t;
 SIMCALL_NEW_API_INIT,
 NUM_SIMCALLS
 } e_smx_simcall_t;
@@ -494,8 +72,8 @@ typedef struct s_smx_simcall {
   };
 } s_smx_simcall_t, *smx_simcall_t;
 
   };
 } s_smx_simcall_t, *smx_simcall_t;
 
-SIMCALL_LIST(SIMCALL_RES_GETSET, SIMCALL_SEP_NOTHING)
-SIMCALL_LIST(SIMCALL_ARG_GETSET, SIMCALL_SEP_NOTHING)
+#include "simcalls_generated_res_getter_setter.h"
+#include "simcalls_generated_args_getter_setter.h"
 
 /******************************** General *************************************/
 
 
 /******************************** General *************************************/
 
@@ -518,4 +96,3 @@ extern simcall_handler_t simcall_table[];
 SG_END_DECL()
 
 #endif
 SG_END_DECL()
 
 #endif
-
index 8b75d4b..e15fa42 100644 (file)
@@ -15,11 +15,11 @@ XBT_LOG_EXTERNAL_DEFAULT_CATEGORY(simix);
 
 /* generate strings from the enumeration values */
 static const char* simcall_names[] = {
 
 /* generate strings from the enumeration values */
 static const char* simcall_names[] = {
-SIMCALL_LIST(SIMCALL_STRING_TYPE, SIMCALL_SEP_COMMA)
+#include "simcalls_generated_string.c"
 [SIMCALL_NONE] = "NONE"
 };
 
 [SIMCALL_NONE] = "NONE"
 };
 
-SIMCALL_LIST(SIMCALL_FUNC, SIMCALL_SEP_NOTHING)
+#include "simcalls_generated_body.c"
 
 /**
  * \ingroup simix_host_management
 
 /**
  * \ingroup simix_host_management