Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Add MSG_host_get_storage_list() function
[simgrid.git] / src / include / surf / surf.h
index 1b3f293..2909fa4 100644 (file)
@@ -193,8 +193,14 @@ typedef struct surf_cpu_model_extension_public {
   surf_action_t(*execute) (void *cpu, double size);
   surf_action_t(*sleep) (void *cpu, double duration);
   e_surf_resource_state_t(*get_state) (void *cpu);
+  int (*get_core) (void *cpu);
   double (*get_speed) (void *cpu, double load);
   double (*get_available_speed) (void *cpu);
+  double (*get_current_power_peak) (void *cpu);
+  double (*get_power_peak_at) (void *cpu, int pstate_index);
+  int (*get_nb_pstates) (void *cpu);
+  void (*set_power_peak_at) (void *cpu, int pstate_index);
+  double (*get_consumed_energy) (void *cpu);
   void (*add_traces) (void);
 } s_surf_model_extension_cpu_t;
 
@@ -227,10 +233,8 @@ typedef struct surf_network_model_extension_public {
 typedef struct surf_storage_model_extension_public {
   surf_action_t(*open) (void *storage, const char* mount, const char* path);
   surf_action_t(*close) (void *storage, surf_file_t fd);
-  surf_action_t(*read) (void *storage, void* ptr, size_t size,
-                        surf_file_t fd);
-  surf_action_t(*write) (void *storage, const void* ptr, size_t size,
-                         surf_file_t fd);
+  surf_action_t(*read) (void *storage, size_t size, surf_file_t fd);
+  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);
 } s_surf_model_extension_storage_t;
@@ -245,8 +249,18 @@ typedef struct surf_workstation_model_extension_public {
                                       and create the corresponding action */
   surf_action_t(*sleep) (void *workstation, double duration);                              /**< Make a workstation sleep during a given duration */
   e_surf_resource_state_t(*get_state) (void *workstation);                                      /**< Return the CPU state of a workstation */
+
+  int (*get_core) (void *workstation); 
   double (*get_speed) (void *workstation, double load);                                    /**< Return the speed of a workstation */
   double (*get_available_speed) (void *workstation);                                       /**< Return tha available speed of a workstation */
+
+  double (*get_current_power_peak) (void *workstation);                                          /**< Return the current CPU speed of a workstation */
+  double (*get_power_peak_at) (void *workstation, int pstate_index);                     /**< Return the speed of a workstation for a specific pstate,
+                                                                                                (where higher pstate values represent lower processor speeds) */
+  int (*get_nb_pstates) (void *workstation);                                             /**< Return the number of pstates defined for a workstation (default is 1) */
+  void (*set_power_peak_at) (void *workstation, int pstate_index);                       /**< Set the processor speed of a workstation to the speed associated with the pstate_index pstate */
+  double (*get_consumed_energy) (void *workstation);                                     /**< Return the total energy consumed by a workstation */
+
    surf_action_t(*communicate) (void *workstation_src,                                     /**< Execute a communication amount between two workstations */
                                 void *workstation_dst, double size,
                                 double max_rate);
@@ -263,10 +277,8 @@ typedef struct surf_workstation_model_extension_public {
   surf_action_t(*open) (void *workstation, const char* storage,
                         const char* path);
   surf_action_t(*close) (void *workstation, surf_file_t fd);
-  surf_action_t(*read) (void *workstation, void* ptr, size_t size,
-                        surf_file_t fd);
-  surf_action_t(*write) (void *workstation, const void* ptr, size_t size,
-                         surf_file_t fd);
+  surf_action_t(*read) (void *workstation, size_t size, surf_file_t fd);
+  surf_action_t(*write) (void *workstation, size_t size, surf_file_t fd);
   surf_action_t(*stat) (void *workstation, surf_file_t fd);
   int(*unlink) (void *workstation, surf_file_t fd);
   surf_action_t(*ls) (void *workstation, const char* mount, const char *path);
@@ -276,6 +288,9 @@ typedef struct surf_workstation_model_extension_public {
    xbt_dict_t(*get_properties) (const void *resource);
   void (*add_traces) (void);
 
+  size_t (*get_free_size) (void *workstation, surf_storage_t storage);
+  xbt_dynar_t (*get_storage_list) (void *workstation);
+
 } s_surf_model_extension_workstation_t;
 
 
@@ -626,6 +641,17 @@ XBT_PUBLIC_DATA(s_surf_model_description_t) surf_new_model_description[];
  */
 XBT_PUBLIC_DATA(xbt_dynar_t) model_list;
 
+/*******************************************/
+/*** SURF Platform *************************/
+/*******************************************/
+typedef struct s_as *AS_t;
+
+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(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);
+
 /*******************************************/
 /*** SURF Globals **************************/
 /*******************************************/