+
+size_t simcall_file_write(const char* storage, const void* ptr, size_t size, size_t nmemb, m_file_t stream)
+{
+ smx_simcall_t simcall = SIMIX_simcall_mine();
+
+ simcall->call = SIMCALL_FILE_WRITE;
+ simcall->file_write.storage = storage;
+ simcall->file_write.ptr = ptr;
+ simcall->file_write.size = size;
+ simcall->file_write.nmemb = nmemb;
+ simcall->file_write.stream = stream;
+ SIMIX_simcall_push(simcall->issuer);
+
+ return simcall->file_write.result;
+}
+
+m_file_t simcall_file_open(const char* storage, const char* path, const char* mode)
+{
+ smx_simcall_t simcall = SIMIX_simcall_mine();
+
+ simcall->call = SIMCALL_FILE_OPEN;
+ simcall->file_open.storage = storage;
+ simcall->file_open.path = path;
+ simcall->file_open.mode = mode;
+ SIMIX_simcall_push(simcall->issuer);
+
+ return simcall->file_open.result;
+}
+
+int simcall_file_close(const char* storage, m_file_t fp)
+{
+ smx_simcall_t simcall = SIMIX_simcall_mine();
+
+ simcall->call = SIMCALL_FILE_CLOSE;
+ simcall->file_close.storage = storage;
+ simcall->file_close.fp = fp;
+ SIMIX_simcall_push(simcall->issuer);
+
+ return simcall->file_close.result;
+}
+
+int simcall_file_stat(const char* storage, int fd, void* buf)
+{
+ smx_simcall_t simcall = SIMIX_simcall_mine();
+
+ simcall->call = SIMCALL_FILE_STAT;
+ simcall->file_stat.storage = storage;
+ simcall->file_stat.fd = fd;
+ simcall->file_stat.buf = buf;
+ SIMIX_simcall_push(simcall->issuer);
+
+ return simcall->file_stat.result;
+}
+