Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Some symbols were renamed by last flexml update.
[simgrid.git] / src / surf / workstation.c
index 1ff033d..4be0041 100644 (file)
@@ -10,6 +10,7 @@
 #include "surf_private.h"
 #include "storage_private.h"
 #include "surf/surf_resource.h"
+#include "simgrid/sg_config.h"
 
 typedef struct workstation_CLM03 {
   s_surf_resource_t generic_resource;   /* Must remain first to add this to a trace */
@@ -239,7 +240,7 @@ static surf_action_t ws_execute_parallel_task(int workstation_nb,
                                               void **workstation_list,
                                               double *computation_amount,
                                               double *communication_amount,
-                                              double amount, double rate)
+                                              double rate)
 {
   THROW_UNIMPLEMENTED;          /* This model does not implement parallel tasks */
   return NULL;
@@ -303,46 +304,62 @@ static storage_t find_storage_on_mount_list(void *workstation,const char* storag
   return st;
 }
 
-static surf_action_t ws_action_open(void *workstation, const char* storage, const char* path, const char* mode)
+static surf_action_t ws_action_open(void *workstation, const char* mount, const char* path, const char* mode)
 {
-  storage_t st = find_storage_on_mount_list(workstation, storage);
+  storage_t st = find_storage_on_mount_list(workstation, mount);
   XBT_DEBUG("OPEN on disk '%s'",st->generic_resource.name);
   surf_model_t model = st->generic_resource.model;
-  return model->extension.storage.open(st, path, mode);
+  return model->extension.storage.open(st, mount, path, mode);
 }
 
-static surf_action_t ws_action_close(void *workstation, const char* storage, surf_file_t fp)
+static surf_action_t ws_action_close(void *workstation, surf_file_t fp)
 {
-  storage_t st = find_storage_on_mount_list(workstation, storage);
+  storage_t st = find_storage_on_mount_list(workstation, fp->storage);
   XBT_DEBUG("CLOSE on disk '%s'",st->generic_resource.name);
   surf_model_t model = st->generic_resource.model;
   return model->extension.storage.close(st, fp);
 }
 
-static surf_action_t ws_action_read(void *workstation, const char* storage, void* ptr, size_t size, size_t nmemb, surf_file_t stream)
+static surf_action_t ws_action_read(void *workstation, void* ptr, size_t size, size_t nmemb, surf_file_t stream)
 {
-  storage_t st = find_storage_on_mount_list(workstation, storage);
+  storage_t st = find_storage_on_mount_list(workstation, stream->storage);
   XBT_DEBUG("READ on disk '%s'",st->generic_resource.name);
   surf_model_t model = st->generic_resource.model;
-  return model->extension.storage.read(st, ptr, size, nmemb, stream);
+  return model->extension.storage.read(st, ptr, (double)size, nmemb, stream);
 }
 
-static surf_action_t ws_action_write(void *workstation, const char* storage, const void* ptr, size_t size, size_t nmemb, surf_file_t stream)
+static surf_action_t ws_action_write(void *workstation, const void* ptr, size_t size, size_t nmemb, surf_file_t stream)
 {
-  storage_t st = find_storage_on_mount_list(workstation, storage);
+  storage_t st = find_storage_on_mount_list(workstation, stream->storage);
   XBT_DEBUG("WRITE on disk '%s'",st->generic_resource.name);
   surf_model_t model = st->generic_resource.model;
   return model->extension.storage.write(st,  ptr, size, nmemb, stream);
 }
 
-static surf_action_t ws_action_stat(void *workstation, const char* storage, surf_file_t stream)
+static surf_action_t ws_action_stat(void *workstation, surf_file_t stream)
 {
-  storage_t st = find_storage_on_mount_list(workstation, storage);
+  storage_t st = find_storage_on_mount_list(workstation, stream->storage);
   XBT_DEBUG("STAT on disk '%s'",st->generic_resource.name);
   surf_model_t model = st->generic_resource.model;
   return model->extension.storage.stat(st,  stream);
 }
 
+static surf_action_t ws_action_unlink(void *workstation, surf_file_t stream)
+{
+  storage_t st = find_storage_on_mount_list(workstation, stream->storage);
+  XBT_DEBUG("UNLINK on disk '%s'",st->generic_resource.name);
+  surf_model_t model = st->generic_resource.model;
+  return model->extension.storage.unlink(st,  stream);
+}
+
+static surf_action_t ws_action_ls(void *workstation, const char* mount, const char *path)
+{
+  XBT_DEBUG("LS on mount '%s' and file '%s'",mount, path);
+  storage_t st = find_storage_on_mount_list(workstation, mount);
+  surf_model_t model = st->generic_resource.model;
+  return model->extension.storage.ls(st, path);
+}
+
 static void surf_workstation_model_init_internal(void)
 {
   surf_workstation_model = surf_model_init();
@@ -400,12 +417,14 @@ static void surf_workstation_model_init_internal(void)
   surf_workstation_model->extension.workstation.read = ws_action_read;
   surf_workstation_model->extension.workstation.write = ws_action_write;
   surf_workstation_model->extension.workstation.stat = ws_action_stat;
+  surf_workstation_model->extension.workstation.unlink = ws_action_unlink;
+  surf_workstation_model->extension.workstation.ls = ws_action_ls;
 }
 
 void surf_workstation_model_init_current_default(void)
 {
   surf_workstation_model_init_internal();
-  xbt_cfg_setdefault_int(_surf_cfg_set, "network/crosstraffic", 1);
+  xbt_cfg_setdefault_int(_sg_cfg_set, "network/crosstraffic", 1);
   surf_cpu_model_init_Cas01();
   surf_network_model_init_LegrandVelho();