+
+/* New Simcal interface */
+
+/* FIXME: add types for every simcall */
+const char *simcall_types[NUM_SIMCALLS] = { [SIMCALL_HOST_EXECUTE] = "%s%p%f%f%p" };
+
+simcall_handler_t simcall_table[NUM_SIMCALLS] = {
+#undef SIMCALL_ENUM_ELEMENT
+#define SIMCALL_ENUM_ELEMENT(x,y) &y /* generate strings from the enumeration values */
+SIMCALL_LIST
+#undef SIMCALL_ENUM_ELEMENT
+};
+
+
+void SIMIX_simcall_typecheck(const char *fmt, ...)
+{
+ return;
+}
+
+void __SIMIX_simcall(e_smx_simcall_t simcall_id, u_smx_scalar_t *args)
+{
+ smx_process_t self = SIMIX_process_self();
+ self->simcall.call = simcall_id;
+ self->simcall.args = 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);
+ }
+}
+
+/* New Simcal interface */
+
+/* FIXME: add types for every simcall */
+const char *simcall_types[NUM_SIMCALLS] = { [SIMCALL_HOST_EXECUTE] = "%s%p%f%f%p" };
+
+simcall_handler_t simcall_table[NUM_SIMCALLS] = {
+#undef SIMCALL_ENUM_ELEMENT
+#define SIMCALL_ENUM_ELEMENT(x,y) &y /* generate strings from the enumeration values */
+SIMCALL_LIST
+#undef SIMCALL_ENUM_ELEMENT
+};
+
+
+void SIMIX_simcall_typecheck(const char *fmt, ...)
+{
+ return;
+}
+
+void __SIMIX_simcall(e_smx_simcall_t simcall_id, u_smx_scalar_t *args)
+{
+ smx_process_t self = SIMIX_process_self();
+ self->simcall.call = simcall_id;
+ self->simcall.args = 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);
+ }
+}