Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
First step to return value on storage model.
authornavarro <navarro@caraja.(none)>
Mon, 26 Mar 2012 12:10:14 +0000 (14:10 +0200)
committernavarro <navarro@caraja.(none)>
Mon, 26 Mar 2012 12:11:40 +0000 (14:11 +0200)
src/include/surf/surf.h
src/simix/smx_io.c
src/surf/storage.c

index 0c10a2d..9566b4c 100644 (file)
@@ -93,6 +93,8 @@ typedef struct surf_action {
 #ifdef HAVE_TRACING
   char *category;               /**< tracing category for categorized resource utilization monitoring */
 #endif
+  void* file;        /**< m_file_t for storage model */
+  size_t read_write;
 } s_surf_action_t;
 
 typedef struct surf_action_lmm {
@@ -366,7 +368,7 @@ typedef struct s_content {
   char *group;
   char *date;
   char *time;
-  int size;
+  size_t size;
 } s_content_t, *content_t;
 
 /**
index bc6935b..209d825 100644 (file)
@@ -25,6 +25,7 @@ void SIMIX_pre_file_read(smx_simcall_t simcall)
       simcall->file_read.stream);
   xbt_fifo_push(action->simcalls, simcall);
   simcall->issuer->waiting_action = action;
+  simcall->file_read.result = (action->io.surf_io)->read_write;
 }
 
 smx_action_t SIMIX_file_read(smx_process_t process, const char* storage, void* ptr, size_t size, size_t nmemb, m_file_t stream)
@@ -66,6 +67,7 @@ void SIMIX_pre_file_write(smx_simcall_t simcall)
       simcall->file_write.stream);
   xbt_fifo_push(action->simcalls, simcall);
   simcall->issuer->waiting_action = action;
+  simcall->file_write.result = (action->io.surf_io)->read_write;
 }
 
 smx_action_t SIMIX_file_write(smx_process_t process, const char* storage, const void* ptr, size_t size, size_t nmemb, m_file_t stream)
@@ -105,6 +107,7 @@ void SIMIX_pre_file_open(smx_simcall_t simcall)
       simcall->file_open.mode);
   xbt_fifo_push(action->simcalls, simcall);
   simcall->issuer->waiting_action = action;
+  simcall->file_open.result = (action->io.surf_io)->file;
 }
 
 smx_action_t SIMIX_file_open(smx_process_t process ,const char* storage, const char* path, const char* mode)
@@ -143,6 +146,7 @@ void SIMIX_pre_file_close(smx_simcall_t simcall)
       simcall->file_close.fp);
   xbt_fifo_push(action->simcalls, simcall);
   simcall->issuer->waiting_action = action;
+  simcall->file_close.result = 0;
 }
 
 smx_action_t SIMIX_file_close(smx_process_t process ,const char* storage, m_file_t fp)
@@ -182,6 +186,7 @@ void SIMIX_pre_file_stat(smx_simcall_t simcall)
       simcall->file_stat.buf);
   xbt_fifo_push(action->simcalls, simcall);
   simcall->issuer->waiting_action = action;
+  simcall->file_stat.result = 0;
 }
 
 smx_action_t SIMIX_file_stat(smx_process_t process ,const char* storage, int fd, void* buf)
index 1b6bd3f..e926151 100644 (file)
@@ -55,6 +55,7 @@ static surf_action_t storage_action_open(void *storage, const char* path, const
   file->content = content;
 
   surf_action_t action = storage_action_execute(storage,0, DEFAULT);
+  action->file = (void *)file;
   return action;
 }
 
@@ -77,6 +78,7 @@ static surf_action_t storage_action_read(void *storage, void* ptr, size_t size,
   if(size > content->size)
     size = content->size;
   surf_action_t action = storage_action_execute(storage,size,READ);
+  action->read_write = size;
   return action;
 }
 
@@ -87,6 +89,7 @@ static surf_action_t storage_action_write(void *storage, const void* ptr, size_t
   XBT_DEBUG("\tWrite file '%s' size '%Zu/%Zu'",filename,size,content->size);
 
   surf_action_t action = storage_action_execute(storage,size,WRITE);
+  action->read_write = size;
   content->size += size;
   return action;
 }