Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Merge all public simix headers, and distribute them in simgrid directory
[simgrid.git] / src / simix / smx_user.c
index e26d97f..f21e5b9 100644 (file)
@@ -17,6 +17,7 @@
 
 #include "smx_private.h"
 #include "mc/mc.h"
+#include "xbt/ex.h"
 
 XBT_LOG_EXTERNAL_DEFAULT_CATEGORY(simix);
 
@@ -696,7 +697,7 @@ smx_action_t simcall_rdv_get_head(smx_rdv_t rdv)
 
 void simcall_comm_send(smx_rdv_t rdv, double task_size, double rate,
                          void *src_buff, size_t src_buff_size,
-                         int (*match_fun)(void *, void *), void *data,
+                         int (*match_fun)(void *, void *, smx_action_t), void *data,
                          double timeout)
 {
   /* checking for infinite values */
@@ -731,7 +732,7 @@ void simcall_comm_send(smx_rdv_t rdv, double task_size, double rate,
 
 smx_action_t simcall_comm_isend(smx_rdv_t rdv, double task_size, double rate,
                               void *src_buff, size_t src_buff_size,
-                              int (*match_fun)(void *, void *),
+                              int (*match_fun)(void *, void *, smx_action_t),
                               void (*clean_fun)(void *),
                               void *data,
                               int detached)
@@ -760,7 +761,7 @@ smx_action_t simcall_comm_isend(smx_rdv_t rdv, double task_size, double rate,
 }
 
 void simcall_comm_recv(smx_rdv_t rdv, void *dst_buff, size_t * dst_buff_size,
-                         int (*match_fun)(void *, void *), void *data, double timeout)
+                         int (*match_fun)(void *, void *, smx_action_t), void *data, double timeout)
 {
   xbt_assert(isfinite(timeout), "timeout is not finite!");
   xbt_assert(rdv, "No rendez-vous point defined for recv");
@@ -787,7 +788,7 @@ void simcall_comm_recv(smx_rdv_t rdv, void *dst_buff, size_t * dst_buff_size,
 }
 
 smx_action_t simcall_comm_irecv(smx_rdv_t rdv, void *dst_buff, size_t * dst_buff_size,
-                                  int (*match_fun)(void *, void *), void *data)
+                                  int (*match_fun)(void *, void *, smx_action_t), void *data)
 {
   xbt_assert(rdv, "No rendez-vous point defined for irecv");
 
@@ -1177,11 +1178,12 @@ int simcall_sem_get_capacity(smx_sem_t sem)
   return simcall->sem_get_capacity.result;
 }
 
-size_t simcall_file_read(void* ptr, size_t size, size_t nmemb, smx_file_t* stream)
+size_t simcall_file_read(const char* storage, void* ptr, size_t size, size_t nmemb, smx_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;
@@ -1191,11 +1193,12 @@ size_t simcall_file_read(void* ptr, size_t size, size_t nmemb, smx_file_t* strea
   return simcall->file_read.result;
 }
 
-size_t simcall_file_write(const void* ptr, size_t size, size_t nmemb, smx_file_t* stream)
+size_t simcall_file_write(const char* storage, 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.storage = storage;
   simcall->file_write.ptr = ptr;
   simcall->file_write.size = size;
   simcall->file_write.nmemb = nmemb;
@@ -1205,11 +1208,12 @@ size_t simcall_file_write(const void* ptr, size_t size, size_t nmemb, smx_file_t
   return simcall->file_write.result;
 }
 
-smx_file_t* simcall_file_open(const char* path, const char* mode)
+smx_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);
@@ -1217,26 +1221,29 @@ smx_file_t* simcall_file_open(const char* path, const char* mode)
   return simcall->file_open.result;
 }
 
-int simcall_file_close(smx_file_t* fp)
+int simcall_file_close(const char* storage, smx_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(int fd, void* buf)
+int simcall_file_stat(const char* storage, smx_file_t fd, s_file_stat_t *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);
 
+  *buf = simcall->file_stat.buf;
+
   return simcall->file_stat.result;
 }