+ simcall->file_read.ptr = ptr;
+ simcall->file_read.size = size;
+ simcall->file_read.nmemb = nmemb;
+ simcall->file_read.stream = stream;
+ if(MC_is_active()) /* Initialize result to a default value for snapshot comparison done during simcall */
+ simcall->file_read.result = 0.0;
+ SIMIX_simcall_push(simcall->issuer);
+
+ return simcall->file_read.result;
+}
+/**
+ * \ingroup simix_file_management
+ *
+ */
+size_t simcall_file_write(const void* ptr, size_t size, size_t nmemb, smx_file_t stream)
+{
+ smx_simcall_t simcall = SIMIX_simcall_mine();
+
+ simcall->call = SIMCALL_FILE_WRITE;
+ simcall->file_write.ptr = ptr;
+ simcall->file_write.size = size;
+ simcall->file_write.nmemb = nmemb;
+ simcall->file_write.stream = stream;
+ if(MC_is_active()) /* Initialize result to a default value for snapshot comparison done during simcall */
+ simcall->file_write.result = 0;
+ SIMIX_simcall_push(simcall->issuer);
+
+ return simcall->file_write.result;
+}
+/**
+ * \ingroup simix_file_management
+ * \brief
+ */
+smx_file_t simcall_file_open(const char* mount, const char* path, const char* mode)
+{
+ smx_simcall_t simcall = SIMIX_simcall_mine();
+
+ simcall->call = SIMCALL_FILE_OPEN;
+ simcall->file_open.mount = mount;
+ simcall->file_open.path = path;
+ simcall->file_open.mode = mode;
+ if(MC_is_active()) /* Initialize result to NULL for snapshot comparison done during simcall */
+ simcall->file_open.result = NULL;
+ SIMIX_simcall_push(simcall->issuer);
+
+ return simcall->file_open.result;
+}
+/**
+ * \ingroup simix_file_management
+ *
+ */
+int simcall_file_close(smx_file_t fp)
+{
+ smx_simcall_t simcall = SIMIX_simcall_mine();
+
+ simcall->call = SIMCALL_FILE_CLOSE;
+ simcall->file_close.fp = fp;
+ if(MC_is_active()) /* Initialize result to a default value for snapshot comparison done during simcall */
+ simcall->file_close.result = -1;
+ SIMIX_simcall_push(simcall->issuer);
+
+ return simcall->file_close.result;
+}
+/**
+ * \ingroup simix_file_management
+ *
+ */
+int simcall_file_stat(smx_file_t fd, s_file_stat_t *buf)
+{
+ smx_simcall_t simcall = SIMIX_simcall_mine();
+ simcall->call = SIMCALL_FILE_STAT;
+ simcall->file_stat.fd = fd;
+ if(MC_is_active()) /* Initialize result to a default value for snapshot comparison done during simcall */
+ simcall->file_stat.result = -1;
+
+ SIMIX_simcall_push(simcall->issuer);
+
+ *buf = simcall->file_stat.buf;
+
+ return simcall->file_stat.result;
+}
+
+/**
+ * \ingroup simix_file_management
+ *
+ */
+int simcall_file_unlink(smx_file_t fd)
+{
+ smx_simcall_t simcall = SIMIX_simcall_mine();
+ simcall->call = SIMCALL_FILE_UNLINK;
+ simcall->file_unlink.fd = fd;
+ if(MC_is_active()) /* Initialize result to a default value for snapshot comparison done during simcall */
+ simcall->file_unlink.result = -1;
+
+ SIMIX_simcall_push(simcall->issuer);
+
+ return simcall->file_unlink.result;
+}
+
+/**
+ * \ingroup simix_file_management
+ *
+ */
+xbt_dict_t simcall_file_ls(const char* mount, const char* path)
+{
+ smx_simcall_t simcall = SIMIX_simcall_mine();
+ simcall->call = SIMCALL_FILE_LS;
+ simcall->file_ls.mount = mount;
+ simcall->file_ls.path = path;
+ if(MC_is_active()) /* Initialize result to a default value for snapshot comparison done during simcall */
+ simcall->file_ls.result = NULL;
+
+ SIMIX_simcall_push(simcall->issuer);
+
+ return simcall->file_ls.result;
+}
+
+#ifdef HAVE_MC
+
+void *simcall_mc_snapshot(void)
+{
+ smx_simcall_t simcall = SIMIX_simcall_mine();
+ simcall->call = SIMCALL_MC_SNAPSHOT;
+
+ SIMIX_simcall_push(simcall->issuer);
+
+ return simcall->mc_snapshot.s;
+}
+
+int simcall_mc_compare_snapshots(void *s1, void *s2){
+
+ smx_simcall_t simcall = SIMIX_simcall_mine();
+ simcall->call = SIMCALL_MC_COMPARE_SNAPSHOTS;
+ simcall->mc_compare_snapshots.snapshot1 = s1;
+ simcall->mc_compare_snapshots.snapshot2 = s2;
+
+ if(MC_is_active()) /* Initialize result to a default value for snapshot comparison done during simcall */
+ simcall->mc_compare_snapshots.result = -1;
+
+ SIMIX_simcall_push(simcall->issuer);
+
+ return simcall->mc_compare_snapshots.result;
+}
+
+#endif /* HAVE_MC */
+
+/* ****************************************************************************************** */
+/* TUTORIAL: New API */
+/* All functions for simcall */
+/* ****************************************************************************************** */
+int simcall_new_api_fct(const char* param1, double param2){
+ smx_simcall_t simcall = SIMIX_simcall_mine();
+ simcall->call = SIMCALL_NEW_API_INIT;
+ simcall->new_api.param1 = param1;
+ simcall->new_api.param2 = param2;
+