+ smx_simcall_t simcall = SIMIX_simcall_mine();
+
+ simcall->call = SIMCALL_SEM_ACQUIRE_TIMEOUT;
+ simcall->sem_acquire_timeout.sem = sem;
+ simcall->sem_acquire_timeout.timeout = timeout;
+
+ SIMIX_simcall_push(simcall->issuer);
+}
+
+int simcall_sem_get_capacity(smx_sem_t sem)
+{
+ smx_simcall_t simcall = SIMIX_simcall_mine();
+
+ simcall->call = SIMCALL_SEM_GET_CAPACITY;
+ simcall->sem_get_capacity.sem = sem;
+
+ SIMIX_simcall_push(simcall->issuer);
+ return simcall->sem_get_capacity.result;
+}
+
+size_t simcall_file_read(const char* storage, void* ptr, size_t size, size_t nmemb, m_file_t stream)
+{
+ smx_simcall_t simcall = SIMIX_simcall_mine();
+
+ simcall->call = SIMCALL_FILE_READ;
+ simcall->file_read.storage = storage;
+ simcall->file_read.ptr = ptr;
+ simcall->file_read.size = size;
+ simcall->file_read.nmemb = nmemb;
+ simcall->file_read.stream = stream;
+ SIMIX_simcall_push(simcall->issuer);
+
+ return simcall->file_read.result;
+}
+
+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();