- typedef struct surf_workstation_model_extension_public {
- surf_action_t(*execute) (void *workstation, double size); /**< Execute a computation amount on a workstation
- 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 */
- 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 */
- surf_action_t(*communicate) (void *workstation_src, /**< Execute a communication amount between two workstations */
- void *workstation_dst, double size,
- double max_rate);
- xbt_dynar_t(*get_route) (void *workstation_src, void *workstation_dst); /**< Get the list of links between two ws */
-
- surf_action_t(*execute_parallel_task) (int workstation_nb, /**< Execute a parallel task on several workstations */
- void **workstation_list,
- double *computation_amount,
- double *communication_amount,
- double amount, double rate);
- double (*get_link_bandwidth) (const void *link); /**< Return the current bandwidth of a network link */
- double (*get_link_latency) (const void *link); /**< Return the current latency of a network link */
- int (*link_shared) (const void *link);
- xbt_dict_t(*get_properties) (const void *resource);
- void (*link_create_resource) (char *name,double bw_initial,double lat_initial);
- void (*cpu_create_resource)(char *name, double power_peak,
- double power_scale,
- tmgr_trace_t power_trace,
- e_surf_resource_state_t state_initial,
- tmgr_trace_t state_trace,
- xbt_dict_t cpu_properties);
- void (*add_traces) (void);
-
- } s_surf_model_extension_workstation_t;
-
-
-
-
-/** \brief Model datatype
- * \ingroup SURF_models
+typedef struct surf_workstation_model_extension_public {
+ surf_action_t(*execute) (void *workstation, double size); /**< Execute a computation amount on a workstation
+ 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);
+ // FIXME: kill next field, which duplicates the routing
+ xbt_dynar_t(*get_route) (void *workstation_src, void *workstation_dst); /**< Get the list of links between two ws */
+
+ surf_action_t(*execute_parallel_task) (int workstation_nb, /**< Execute a parallel task on several workstations */
+ void **workstation_list,
+ double *computation_amount,
+ double *communication_amount,
+ double rate);
+ double (*get_link_bandwidth) (const void *link); /**< Return the current bandwidth of a network link */
+ double (*get_link_latency) (const void *link); /**< Return the current latency of a network link */
+ 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, surf_file_t fd, sg_storage_size_t size);
+ surf_action_t(*write) (void *workstation, surf_file_t fd, sg_storage_size_t size);
+ 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);
+ sg_storage_size_t (*get_size) (void *workstation, surf_file_t fd);
+ xbt_dynar_t (*get_info) (void *workstation, surf_file_t fd);
+
+ int (*link_shared) (const void *link);
+ xbt_dict_t(*get_properties) (const void *resource);
+ void (*add_traces) (void);
+
+ sg_storage_size_t (*get_free_size) (void *workstation,const char* name);
+ sg_storage_size_t (*get_used_size) (void *workstation,const char* name);
+ xbt_dict_t (*get_storage_list) (void *workstation);
+
+} s_surf_model_extension_workstation_t;
+
+
+
+
+/** \ingroup SURF_models
+ * \brief Model datatype