Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Add a new Infiniband network model, based on the works of Jerome Vienne.
[simgrid.git] / src / include / surf / surf.h
index 701ae8c..c9f19e8 100644 (file)
@@ -171,16 +171,12 @@ typedef enum {
 /* FIXME: Where should the VM state be defined? */
 typedef enum {
   SURF_VM_STATE_CREATED, /**< created, but not yet started */
-
   SURF_VM_STATE_RUNNING,
-  SURF_VM_STATE_MIGRATING,
-
   SURF_VM_STATE_SUSPENDED, /**< Suspend/resume does not involve disk I/O, so we assume there is no transition states. */
 
   SURF_VM_STATE_SAVING, /**< Save/restore involves disk I/O, so there should be transition states. */
   SURF_VM_STATE_SAVED,
   SURF_VM_STATE_RESTORING,
-
 } e_surf_vm_state_t;
 
 /***************************/
@@ -196,6 +192,9 @@ static inline void *surf_cpu_resource_priv(const void *host) {
 static inline void *surf_workstation_resource_priv(const void *host){
   return (void*)xbt_lib_get_level((xbt_dictelm_t)host, SURF_WKS_LEVEL);
 }
+static inline void *surf_routing_resource_priv(const void *host){
+  return (void*)xbt_lib_get_level((xbt_dictelm_t)host, ROUTING_HOST_LEVEL);
+}
 static inline void *surf_storage_resource_priv(const void *storage){
   return (void*)xbt_lib_get_level((xbt_dictelm_t)storage, SURF_STORAGE_LEVEL);
 }
@@ -708,7 +707,9 @@ XBT_PUBLIC(int) surf_workstation_file_move(surf_resource_t workstation, surf_fil
  *  - SEEK_END: end of the file
  * @return MSG_OK if successful, otherwise MSG_TASK_CANCELED
  */
-XBT_PUBLIC(int) surf_workstation_file_seek(surf_resource_t workstation, surf_file_t fd, sg_size_t offset, int origin);
+XBT_PUBLIC(int) surf_workstation_file_seek(surf_resource_t workstation,
+                                           surf_file_t fd, sg_offset_t offset,
+                                           int origin);
 
 /**
  * @brief [brief description]
@@ -751,6 +752,23 @@ XBT_PUBLIC(xbt_dict_t) surf_storage_get_content(surf_resource_t resource);
  */
 XBT_PUBLIC(sg_size_t) surf_storage_get_size(surf_resource_t resource);
 
+/**
+ * @brief Get the available size in bytes of a storage
+ *
+ * @param resource The surf storage
+ * @return The available size in bytes of the storage
+ */
+XBT_PUBLIC(sg_size_t) surf_storage_get_free_size(surf_resource_t resource);
+
+/**
+ * @brief Get the size in bytes of a storage
+ *
+ * @param resource The surf storage
+ * @return The used size in bytes of the storage
+ */
+XBT_PUBLIC(sg_size_t) surf_storage_get_used_size(surf_resource_t resource);
+
+
 /**
  * @brief Get the data associated to the action
  *
@@ -915,7 +933,7 @@ XBT_PUBLIC(surf_model_t) surf_resource_model(const void *host, int level);
 /**************************************/
 
 XBT_PUBLIC_DATA(int) autoload_surf_cpu_model;
-extern void_f_void_t surf_cpu_model_init_preparse;
+XBT_PUBLIC_DATA(void_f_void_t) surf_cpu_model_init_preparse;
 
 /** \ingroup SURF_models
  *  \brief The CPU model object for the physical machine layer
@@ -990,6 +1008,16 @@ XBT_PUBLIC_DATA(surf_network_model_t) surf_network_model;
  */
 XBT_PUBLIC(void) surf_network_model_init_SMPI(void);
 
+/** \ingroup SURF_models
+ *  \brief Same as network model 'LagrangeVelho', only with different correction factors.
+ *
+ * This model impelments a variant of the contention model on Infinband networks based on
+ * the works of Jérôme Vienne : http://mescal.imag.fr/membres/jean-marc.vincent/index.html/PhD/Vienne.pdf
+ *
+ *  \see surf_workstation_model_init_IB()
+ */
+XBT_PUBLIC(void) surf_network_model_init_IB(void);
+
 /** \ingroup SURF_models
  *  \brief Initializes the platform with the network model 'LegrandVelho'
  *
@@ -1181,7 +1209,7 @@ XBT_PUBLIC_DATA(s_surf_model_description_t)
  *  Such model is subject to modification with warning in the ChangeLog so monitor it!
  *
  */
-XBT_PUBLIC(void) surf_vm_workstation_model_init_current_default(void);
+XBT_PUBLIC(void) surf_vm_workstation_model_init_HL13(void);
 
 /** \ingroup SURF_models
  *  \brief The list of all available vm workstation model models
@@ -1212,6 +1240,7 @@ XBT_PUBLIC(xbt_dict_t) watched_hosts_lib;
 /*******************************************/
 XBT_PUBLIC_DATA(AS_t) surf_AS_get_routing_root(void);
 XBT_PUBLIC_DATA(const char *) surf_AS_get_name(AS_t as);
+XBT_PUBLIC_DATA(AS_t) surf_AS_get_by_name(const char * name);
 XBT_PUBLIC_DATA(xbt_dict_t) surf_AS_get_routing_sons(AS_t as);
 XBT_PUBLIC_DATA(const char *) surf_AS_get_model(AS_t as);
 XBT_PUBLIC_DATA(xbt_dynar_t) surf_AS_get_hosts(AS_t as);