Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Merge branch 'master' of git+ssh://scm.gforge.inria.fr//gitroot/simgrid/simgrid
authorPierre Veyre <pierre.veyre@cc.in2p3.fr>
Tue, 24 Sep 2013 08:45:30 +0000 (10:45 +0200)
committerPierre Veyre <pierre.veyre@cc.in2p3.fr>
Tue, 24 Sep 2013 08:45:30 +0000 (10:45 +0200)
1  2 
src/include/surf/surf.h
src/msg/msg_io.c
src/surf/storage.c

diff --combined src/include/surf/surf.h
@@@ -237,8 -237,7 +237,8 @@@ typedef struct surf_storage_model_exten
    surf_action_t(*write) (void *storage, size_t size, surf_file_t fd);
    surf_action_t(*stat) (void *storage, surf_file_t fd);
    surf_action_t(*ls) (void *storage, const char *path);
 -  xbt_dict_t(*get_properties) (const void *resource);
 +  xbt_dict_t(*get_properties) (const void *storage);
 +  xbt_dict_t(*get_content) (void *storage);
  } s_surf_model_extension_storage_t;
  
       /** \ingroup SURF_models
@@@ -360,8 -359,8 +360,8 @@@ static inline void *surf_cpu_resource_p
  static inline void *surf_workstation_resource_priv(const void *host){
    return xbt_lib_get_level((void *)host, SURF_WKS_LEVEL);
  }
 -static inline void *surf_storage_resource_priv(const void *host){
 -  return xbt_lib_get_level((void *)host, SURF_STORAGE_LEVEL);
 +static inline void *surf_storage_resource_priv(const void *storage){
 +  return xbt_lib_get_level((void *)storage, SURF_STORAGE_LEVEL);
  }
  
  static inline void *surf_cpu_resource_by_name(const char *name) {
@@@ -378,6 -377,7 +378,7 @@@ typedef struct surf_resource 
    surf_model_t model;
    char *name;
    xbt_dict_t properties;
+   void_f_pvoid_t free_f;
  } s_surf_resource_t, *surf_resource_t;
  
  /**
diff --combined src/msg/msg_io.c
@@@ -11,7 -11,7 +11,7 @@@ XBT_LOG_NEW_DEFAULT_SUBCATEGORY(msg_io
                                  "Logging specific to MSG (io)");
  
  /** @addtogroup msg_file_management
-  *     \htmlonly <!-- DOXYGEN_NAVBAR_LABEL="Files" --> \endhtmlonly
+  * \htmlonly <!-- DOXYGEN_NAVBAR_LABEL="Files" --> \endhtmlonly
   * (#msg_file_t) and the functions for managing it.
   *
   *  \see #msg_file_t
@@@ -181,7 -181,7 +181,7 @@@ xbt_dict_t MSG_file_ls(const char *moun
  /********************************* Storage **************************************/
  
  /** @addtogroup msg_storage_management
-  *     \htmlonly <!-- DOXYGEN_NAVBAR_LABEL="Storages" --> \endhtmlonly
+  * \htmlonly <!-- DOXYGEN_NAVBAR_LABEL="Storages" --> \endhtmlonly
   * (#msg_storage_t) and the functions for managing it.
   *
   */
@@@ -215,7 -215,7 +215,7 @@@ const char *MSG_storage_get_name(msg_st
  
  /** \ingroup msg_storage_management
   * \brief Returns the free space size of a storage element
-  * \param the storage name (#char*)
+  * \param name the name of a storage
   * \return the free space size of the storage element (as a size_t)
   */
  size_t MSG_storage_get_free_size(const char* name){
  
  /** \ingroup msg_storage_management
   * \brief Returns the used space size of a storage element
-  * \param the storage name (#char*)
+  * \param name the name of a storage
   * \return the used space size of the storage element (as a size_t)
   */
  size_t MSG_storage_get_used_size(const char* name){
@@@ -244,7 -244,7 +244,7 @@@ xbt_dict_t MSG_storage_get_properties(m
  
  /** \ingroup msg_storage_management
   * \brief Finds a msg_storage_t using its name.
-  * \param name the name of a storage.
+  * \param name the name of a storage
   * \return the corresponding storage
   */
  msg_storage_t MSG_storage_get_by_name(const char *name)
@@@ -290,7 -290,7 +290,7 @@@ msg_error_t MSG_storage_set_data(msg_st
   *
   * \brief Returns the user data of a #msg_storage_t.
   *
 - * This functions checks whether \a storage is a valid pointer or not and return
 + * This functions checks whether \a storage is a valid pointer or not and returns
     the user data associated to \a storage if it is possible.
   */
  void *MSG_storage_get_data(msg_storage_t storage)
    return SIMIX_storage_get_data(storage);
  }
  
 +/** \ingroup msg_storage_management
 + *
 + * \brief Returns the content (file list) of a #msg_storage_t.
 + * \param storage a storage
 + */
 +xbt_dict_t MSG_storage_get_content(msg_storage_t storage){
 +
 +      return SIMIX_storage_get_content(storage);
 +}
diff --combined src/surf/storage.c
@@@ -197,22 -197,6 +197,22 @@@ static xbt_dict_t storage_get_propertie
    return surf_resource_properties(surf_storage_resource_priv(storage));
  }
  
 +static xbt_dict_t storage_get_content(void *storage)
 +{
 +  /* For the moment this action has no cost, but in the future we could take in account access latency of the disk */
 +  /* surf_action_t action = storage_action_execute(storage,0, LS); */
 +  xbt_dict_t content_dict = xbt_dict_new();
 +
 +  xbt_dict_cursor_t cursor = NULL;
 +  char *file;
 +  size_t size;
 +
 +  xbt_dict_foreach(((storage_t)storage)->content,cursor,file,size)
 +    xbt_dict_set(content_dict,file,&size,NULL);
 +
 +  return content_dict;
 +}
 +
  static void* storage_create_resource(const char* id, const char* model,
      const char* type_id, const char* content_name, const char* content_type, xbt_dict_t properties){
    storage_t storage = NULL;
                "Storage '%s' declared several times in the platform file",
                id);
    storage = (storage_t) surf_resource_new(sizeof(s_storage_t),
-           surf_storage_model, id, properties);
+           surf_storage_model, id, properties, NULL);
  
    storage->generic_resource.name = xbt_strdup(id);
    storage->state_current = SURF_RESOURCE_ON;
@@@ -519,8 -503,8 +519,8 @@@ static void surf_storage_model_init_int
    surf_storage_model->extension.storage.read = storage_action_read;
    surf_storage_model->extension.storage.write = storage_action_write;
    surf_storage_model->extension.storage.ls = storage_action_ls;
 -
    surf_storage_model->extension.storage.get_properties = storage_get_properties;
 +  surf_storage_model->extension.storage.get_content = storage_get_content;
  
    if (!storage_maxmin_system) {
      storage_maxmin_system = lmm_system_new(storage_selective_update);